我正在通过操作员安装自定义资源。但是,kubectl apply
在“来自服务器的错误(未找到):被阻止:customresourcedefinitions.apiextensions.k8s.io“ my-crd.example.com”上被阻止
。
如果kubectl apply
沿的线打开 --no-typechecking
,它将解决此问题。我不会因为缺少CRD而造成问题,因为它apply
只是将Kubernetes对象发送到etcd。然后,在操作员实际构建自定义资源时,自定义资源定义将可用。(我有其他代码可以保证这一点。)
那么,我可以暂停产生此错误的类型检查吗?
不,如果不实际创建CRD,就不能使用CRD API。这不是类型检查,而是系统不断运行的方式。
您是说etcd本身是类型安全的?那么,对此有什么解决方法?照原样,存在时间依赖性,这与声明性创建资源的精神背道而驰。
不,etcd不涉及,这是来自管理kubernetes api的kube-apiserver的错误。
至于时间问题,它是收敛性的,请一遍又一遍地运行,直到没有错误为止:) Kustomize和Helm之类的工具也会自动对输入进行排序,因此首先使用crd,通常会有所帮助。
您一直在说“类型检查”。这不是类型检查错误。对对象的OpenAPI模式验证有一些可选的支持,但是您所拥有的只是来自REST API的HTTP 404响应。您试图访问一个不存在的对象。
没有“元对象”。CRD和其他任何其他对象一样,都是普通的K8s API对象:)