The CustomResourceDefinition "applications.apps.abc.com" is invalid: metadata.annotations: Too long: must have at most 262144 bytes

参考文章:
https://medium.com/pareture/kubectl-install-crd-failed-annotations-too-long-2ebc91b40c7d

原因:
使用kubectl apply创建或更新资源时,系统都会自动添加一个名为kubectl.kubernetes.io/last-applied-configuration的元数据注解(metadata.annotation)。该注解是一个记录上次应用配置的JSON文档。通常情况下这不会引发问题,但在极少数情况下(例如处理大型CRD时),可能会因表面上的大小限制而导致问题。

解决方案:
使用 kubectl create 创建 CRD

使用 kubectl replace 更新 CRD

这两种方式不会添加 last-applied-configuration 字段。当然,你也可以先用 apply 创建 CRD,再针对过长的特定 CRD 改用 create 或 replace 操作

如果使用的是 Kubernetes v1.22 或更高版本,可以采用服务端应用(Server-Side Apply)。这是一种声明式管理方式,允许多个控制器通过部分配置(partial configurations)协同管理工作负载的不同部分,且不会使用客户端应用(Client-Side Apply)所依赖的注解。
使用方式:

kubectl apply --server-side -f ....
posted @ 2025-07-17 11:42  xiezhengcai  阅读(46)  评论(0)    收藏  举报