我使用此框架https://github.com/operator-framework/operator-sdk创建了一个 kubernetes 运算符,其中定义了一个小的自定义资源定义并生成了一个客户端集。
我为此自定义资源创建了一个客户端:
imports are (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
config, err := rest.InClusterConfig()
kubernetesClientset := kubernetes.NewForConfig(config)
// my generated CR clientset
v1alpha1.New(kubernetesClientset.RESTClient())
因此,我只是使用 kubernetes 为 pod 提供的配置并创建了一个默认的 k8s REST 客户端集,并在我的自定义资源的客户端集中使用它(这甚至是一个好习惯吗?)。
但是,当我尝试使用我的自定义资源客户端并尝试创建自定义资源的实例时,客户端会出错encoding is not allowed for this codec: *versioning.codec
(我猜它来自这里https://github.com/kubernetes/apimachinery/blob/master/pkg/runtime /codec.go#L104)。
这到底是什么意思?我认为生成的客户端知道自定义资源?
感谢帮助...