Kubernetes自定义CRD:“无法列出...:服务器找不到所请求的资源". [英] Kubernetes Custom CRD: "Failed to list ...: the server could not find the requested resource"

查看:1105
本文介绍了Kubernetes自定义CRD:“无法列出...:服务器找不到所请求的资源".的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to create a kubernetes Custom Resource Definition (named Block) but keep hitting the following error:

Failed to list *v1alpha1.Block: the server could 
not find the requested resource (get 
blocks.kubechain.com).

从此CRD的控制器上调用List会引发此问题:

This issue is raised from a call to List on a Controller for this 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文件,我在其中将以上资源注册到方案构建器中:

For some context here is the register.go file where I register the above resourced to the 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的地方:

And here is the scheme.go file where I actually run AddToScheme from the former file:

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)
    }
}

任何人都可以分享一些有关我在这里做错了什么的信息吗?

Can anyone share some information as to what I am doing wrong here??

这项工作是在博客文章之后

This work is following this blog post.

推荐答案

我看到了类似的错误.这是RBAC的问题.但是错误消息令人误解.

I have seen similar error. It was RBAC issue. But the error message was misleading.

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

If your cluster has RBAC enabled, make sure your controller has get,list permission for blocks.kubechain.com resource.

这篇关于Kubernetes自定义CRD:“无法列出...:服务器找不到所请求的资源".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆