如何在Kubernetes中向节点添加角色?

Jee*_*eel 19 kubernetes kubeadm

当我使用kubeadm配置Kubernetes集群时,我将我的节点标记为无.这是Kubernetes中的一个已知错误,目前公关正在进行中.但是,我想知道是否有为该节点手动添加角色名称的选项?

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
Run Code Online (Sandbox Code Playgroud)

Jor*_*itt 27

节点角色只是具有格式的标签 node-role.kubernetes.io/<role>

您可以自己添加 kubectl label

  • 确切的命令如下所示:kubectl label node aNodeName node-role.kubernetes.io/custom= (7认同)
  • 只是添加`kubernetes.io/role= <role_here>`也可以 (6认同)
  • 您不应该再使用“kubernetes.io/role”。https://github.com/kubernetes/enhancements/blob/master/keps/sig-auth/0000-20170814-bounding-self-labeling-kubelets.md#proposal (3认同)
  • 我也在寻找完成这篇文章 k8s 版本 1.16 的最佳方法。这里有进展吗? (2认同)

Isu*_*nga 27

默认
在此处输入图片说明

添加角色

kubectl label node <node name> node-role.kubernetes.io/<role name>=<key - (any name)>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

删除角色

kubectl label node <node name> node-role.kubernetes.io/<role name>-
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


小智 24

这对我有用:

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
Run Code Online (Sandbox Code Playgroud)

我无法删除/更新旧标签,但我可以忍受它.

  • 您可以使用命令 kubectl label node cb2.4xyz.couchbase.com node-role.kubernetes.io/custom- 删除“自定义”角色 (2认同)

小智 10

标签前:

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
Run Code Online (Sandbox Code Playgroud)

kubectl label nodes <your_node> kubernetes.io/role=<your_label>

在我的情况下,从节点例如

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
Run Code Online (Sandbox Code Playgroud)

您还可以更改标签。 就放--overwrite

kubectl label --overwrite nodes <your_node> kubernetes.io/role=<your_new_label>

例如

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
Run Code Online (Sandbox Code Playgroud)


Pra*_*K S 5

添加角色

$ 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
Run Code Online (Sandbox Code Playgroud)

如果您想覆盖,请使用以下命令。

$ kubectl label node worker1  node-role.kubernetes.io/worker=worker --overwrite   
Run Code Online (Sandbox Code Playgroud)

  • 您可以选择您的节点具有任何角色,例如“node-role.kubernetes.io/testing=testing-worker”和“node-role.kubernetes.io/system=system-worker”... ROLES 列将显示如果存在多个值,则值以逗号分隔 (2认同)