Kubernetes自定义CRD:“无法列出...:服务器找不到所请求的资源". [英] Kubernetes Custom CRD: "Failed to list ...: the server could not find the requested resource"
问题描述
我正在尝试创建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
资源具有get
,list
权限.
If your cluster has RBAC enabled, make sure your controller has get
,list
permission for blocks.kubechain.com
resource.
这篇关于Kubernetes自定义CRD:“无法列出...:服务器找不到所请求的资源".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!