首页 > 解决方案 > 此编解码器不允许编码:*versioning.codec

问题描述

我使用此框架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)。

这到底是什么意思?我认为生成的客户端知道自定义资源?

感谢帮助...

标签: kubernetesclientkubernetes-apiserverkubernetes-custom-resources

解决方案


由于restclient配置错误,我遇到了同样的问题。在此处的示例中查看如何创建和配置 restclient 。


推荐阅读