如何为 Kubernetes 中的节点添加角色?
How to add roles to nodes in Kubernetes?
当我使用 kubeadm 配置 Kubernetes 集群时,我的节点被标记为“none”。这是 Kubernetes 中的一个已知错误,目前正在进行 PR。
但是,我想知道是否有为节点手动添加角色名称的选项。
root@ip-172-31-14-133:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-31-14-133 Ready master 19m v1.9.3
ip-172-31-6-147 Ready <none> 16m v1.9.3
节点角色只是一个格式为 node-role.kubernetes.io/<role>
的标签
您可以使用 kubectl label
自行添加
这对我有用:
kubectl label node cb2.4xyz.couchbase.com node-role.kubernetes.io/worker=worker
NAME STATUS ROLES AGE VERSION
cb2.4xyz.couchbase.com Ready custom,worker 35m v1.11.1
cb3.5xyz.couchbase.com Ready worker 29m v1.11.1
我不能delete/update旧标签,但我可以接受它。
默认
添加角色
kubectl label node <node name> node-role.kubernetes.io/<role name>=<key - (any name)>
删除角色
kubectl label node <node name> node-role.kubernetes.io/<role name>-
标签前:
general@master-node:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-node Ready master 23m v1.18.2
slave-node Ready <none> 19m v1.18.2
kubectl label nodes <your_node> kubernetes.io/role=<your_label>
In my case slave-node e.g.
kubectl label nodes slave-node kubernetes.io/role=worker
标签后:
general@master-node:~$ kubectl label nodes slave-node kubernetes.io/role=worker
node/slave-node labeled
general@master-node:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-node Ready master 24m v1.18.2
slave-node Ready worker 21m v1.18.2
你也可以改变标签。就把--overwrite
kubectl label --overwrite nodes <your_node> kubernetes.io/role=<your_new_label>
e.g.
kubectl label --overwrite nodes slave-node kubernetes.io/role=worker1
覆盖标签后:
general@master-node:~$ kubectl label --overwrite nodes slave-node kubernetes.io/role=worker1
node/slave-node labeled
general@master-node:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-node Ready master 36m v1.18.2
slave-node Ready worker1 32m v1.18.2
添加角色
$ kubectl get nodes
master Ready control-plane,master 166m v1.21.1
worker1 Ready worker 48m v1.21.1
worker2 Ready worker 16m v1.21.1
worker3 Ready worker 9m57s v1.21.1
$ kubectl label node worker1 node-role.kubernetes.io/worker=worker
$ kubectl label node worker2 node-role.kubernetes.io/worker=worker
$ kubectl label node worker3 node-role.kubernetes.io/worker=worker
如果您想覆盖,请使用下面的命令。
$ kubectl label node worker1 node-role.kubernetes.io/worker=worker --overwrite
当我使用 kubeadm 配置 Kubernetes 集群时,我的节点被标记为“none”。这是 Kubernetes 中的一个已知错误,目前正在进行 PR。
但是,我想知道是否有为节点手动添加角色名称的选项。
root@ip-172-31-14-133:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-31-14-133 Ready master 19m v1.9.3
ip-172-31-6-147 Ready <none> 16m v1.9.3
节点角色只是一个格式为 node-role.kubernetes.io/<role>
您可以使用 kubectl label
这对我有用:
kubectl label node cb2.4xyz.couchbase.com node-role.kubernetes.io/worker=worker
NAME STATUS ROLES AGE VERSION
cb2.4xyz.couchbase.com Ready custom,worker 35m v1.11.1
cb3.5xyz.couchbase.com Ready worker 29m v1.11.1
我不能delete/update旧标签,但我可以接受它。
默认
添加角色
kubectl label node <node name> node-role.kubernetes.io/<role name>=<key - (any name)>
删除角色
kubectl label node <node name> node-role.kubernetes.io/<role name>-
标签前:
general@master-node:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-node Ready master 23m v1.18.2
slave-node Ready <none> 19m v1.18.2
kubectl label nodes <your_node> kubernetes.io/role=<your_label>
In my case slave-node e.g.
kubectl label nodes slave-node kubernetes.io/role=worker
标签后:
general@master-node:~$ kubectl label nodes slave-node kubernetes.io/role=worker
node/slave-node labeled
general@master-node:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-node Ready master 24m v1.18.2
slave-node Ready worker 21m v1.18.2
你也可以改变标签。就把--overwrite
kubectl label --overwrite nodes <your_node> kubernetes.io/role=<your_new_label>
e.g.
kubectl label --overwrite nodes slave-node kubernetes.io/role=worker1
覆盖标签后:
general@master-node:~$ kubectl label --overwrite nodes slave-node kubernetes.io/role=worker1
node/slave-node labeled
general@master-node:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-node Ready master 36m v1.18.2
slave-node Ready worker1 32m v1.18.2
添加角色
$ kubectl get nodes
master Ready control-plane,master 166m v1.21.1
worker1 Ready worker 48m v1.21.1
worker2 Ready worker 16m v1.21.1
worker3 Ready worker 9m57s v1.21.1
$ kubectl label node worker1 node-role.kubernetes.io/worker=worker
$ kubectl label node worker2 node-role.kubernetes.io/worker=worker
$ kubectl label node worker3 node-role.kubernetes.io/worker=worker
如果您想覆盖,请使用下面的命令。
$ kubectl label node worker1 node-role.kubernetes.io/worker=worker --overwrite