我计划将Kubernetes集群从1.21升级到1.22。我在浏览发行说明时注意到ClusterRole
,RoleBinding
和ClusterRoleBinding
应该使用rbac.authorization.k8s。Io/v1为rbac.authorization.k8s。Io/v1beta1已弃用
这是我的一个资源rolebinding/test-rw
的输出。apiversion
写的是rbac.authorization.k8s.io/v1
,但在注释中,它写的是rbac.authorization.k8s.io/v1beta1
。为什么注释有v1beta1
版本?是因为它最初部署的v1beta
版本,后来更新到v1
版本?
$ 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
您可以使用kubectl api-versions
查看可用的API版本。
或kubectl explain pod
检查版本
在Annotation中,它是最后一次应用的配置,但你看到的是API服务器首选的API版本。
Kubectl是客户端,它将显示API服务器首选版本或任何您要求使用的。kubectl get RoleBinding.v1beta1 test-rw -o yaml
因此,当您试图使用kubectl时,创建Rolebilding的API版本不会受到影响.