Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go Kubernetes定制CRD:“定制CRD”;未能列出…:服务器找不到请求的资源";_Go_Kubernetes_Kubernetes Custom Resources - Fatal编程技术网

Go Kubernetes定制CRD:“定制CRD”;未能列出…:服务器找不到请求的资源";

Go Kubernetes定制CRD:“定制CRD”;未能列出…:服务器找不到请求的资源";,go,kubernetes,kubernetes-custom-resources,Go,Kubernetes,Kubernetes Custom Resources,我正在尝试创建kubernetes自定义资源定义(名为Block),但一直遇到以下错误: Failed to list *v1alpha1.Block: the server could not find the requested resource (get blocks.kubechain.com). 此问题是由于调用此CRD控制器上的列表引起的: indexer, controller := cache.NewIndexerInformer( &cache.L

我正在尝试创建kubernetes自定义资源定义(名为
Block
),但一直遇到以下错误:

Failed to list *v1alpha1.Block: the server could 
not find the requested resource (get 
blocks.kubechain.com).
此问题是由于调用此CRD控制器上的
列表
引起的:

indexer, controller := cache.NewIndexerInformer(
        &cache.ListWatch{
            ListFunc: func(lo metav1.ListOptions) (result k8sruntime.Object, err error) {
                return clientSet.Block(ns).List(lo)
            },
            WatchFunc: func(lo metav1.ListOptions) (watch.Interface, error) {
                return clientSet.Block(ns).Watch(lo)
            },
        },
        &v1alpha1.Block{},
        1*time.Minute,
        cache.ResourceEventHandlerFuncs{},
        cache.Indexers{},
    )
对于某些上下文,这里是
register.go
文件,我在其中将上述资源注册到a scheme builder:

// GroupName is the api prefix.
const GroupName = "kubechain.com"

// GroupVersion is the version of the api.
const GroupVersion = "v1alpha1"

// SchemeGroupVersion is the group version object.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: GroupVersion}

var (
    // SchemeBuilder adds the new CRDs Block and Blockchain.
    SchemeBuilder = runtime.NewSchemeBuilder(AddKnownTypes)
    // AddToScheme uses SchemeBuilder to add new CRDs.
    AddToScheme = SchemeBuilder.AddToScheme
)

// AddKnownTypes .
func AddKnownTypes(scheme *runtime.Scheme) error {
    scheme.AddKnownTypes(SchemeGroupVersion,
        &Block{},
        &BlockList{},
    )
    metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    return nil
}
这是
scheme.go
文件,我从前一个文件运行
AddToScheme

var Scheme = runtime.NewScheme()
var Codecs = serializer.NewCodecFactory(Scheme)
var ParameterCodec = runtime.NewParameterCodec(Scheme)
var localSchemeBuilder = runtime.SchemeBuilder{
    v1alpha1.AddToScheme,
}

var AddToScheme = localSchemeBuilder.AddToScheme

func init() {
    metav1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
    if err := AddToScheme(Scheme); err != nil {
        panic(err)
    }
}
有人能分享一些关于我在这里做错了什么的信息吗


以下是我的博客文章。

我也看到过类似的错误。这是RBAC的问题。但错误信息是误导性的


如果您的群集已启用RBAC,请确保您的控制器对
blocks.kubechain.com
资源具有
get
list
权限。

在您的函数
AddKnownTypes
中,是否可以查看是否返回了任何错误?因为看起来您可能只是跳过了创建时的一个错误,这当然会导致无法检索CRDIn。除了Norbert所说的之外,请注意,因为至少对于
kubectl
,如果您的凭据是伪造的,或者
kubectl
(以及golang客户端),您将收到相同的不透明错误消息与服务器版本不同步。我当然希望查看
apiserver
日志会有一些有用的信息