Kubernetes 1.21升1.22:RoleBinding注解存v1beta1版本原因咨询
Kubernetes RBAC资源注解版本疑问解答
你的推测完全正确——这个kubectl.kubernetes.io/last-applied-configuration注解保留v1beta1版本的原因,就是该RoleBinding最初是以rbac.authorization.k8s.io/v1beta1版本部署,之后集群升级或Kubernetes自动转换资源版本导致资源的apiVersion字段变为v1,但注解内容未被更新。
具体说明:
- Kubernetes会自动将存储的旧API版本资源转换为当前集群支持的稳定版本(这里是v1),所以你看到资源的
apiVersion字段已经是rbac.authorization.k8s.io/v1。 kubectl.kubernetes.io/last-applied-configuration注解的作用是记录最后一次通过kubectl apply部署时使用的原始YAML内容,这个字段不会被Kubernetes自动修改,只有当你再次使用kubectl apply提交更新后的v1版本YAML时,注解才会被替换为新的版本内容。- 由于你之后没有重新用v1版本的YAML执行
kubectl apply操作,所以注解里依然保留着最初部署时的v1beta1版本信息。
附该资源的YAML输出:
$ kubectl get RoleBinding/test-rw -o yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1beta1","kind":"RoleBinding","metadata":{"annotations":{},"name":"test-rw","namespace":"default"},"roleRef":{"apiGroup":"","kind":"ClusterRole","name":"admin"},"subjects":[{"apiGroup":"","kind":"Group","name":"test-rw"}]} creationTimestamp: "2017-08-18T11:40:22Z" name: test-rw namespace: default resourceVersion: "214" uid: f8a89do8-885f-11e9-8dd8-12afbb11be0c
内容的提问来源于stack exchange,提问作者Eva
相关产品推荐
相关产品推荐

