如何在创建时将标签设置为Kubernetes节点?

Ind*_*ath 9 kubernetes

我正在跟踪指南[1]以创建具有1个主节点和2个节点的多节点K8S集群.此外,标签需要分别设置到每个节点.

Node 1 - label name=orders 
Node 2 - label name=payment
Run Code Online (Sandbox Code Playgroud)

我知道以上可以通过运行kubectl命令来实现

kubectl get nodes
kubectl label nodes <node-name> <label-key>=<label-value>
Run Code Online (Sandbox Code Playgroud)

但我想知道如何在创建节点时设置标签.节点创建指南在[2]中.

感谢您的意见.

[1] https://coreos.com/kubernetes/docs/latest/getting-started.html

[2] https://coreos.com/kubernetes/docs/latest/deploy-workers.html

Rad*_*nka 6

实际上,从1.3或类似的版本开始,有一种简单的方法可以实现这一目标。

负责注册节点的是在其上启动的kubelet进程,您需要做的就是向它传递这样的标志--node-labels 'role=kubemaster'。这就是我如何在AWS k8s集群中的不同自动伸缩组之间区分节点。


cha*_*ffe 4

这个答案现在是不正确的(并且对于 Kubernetes 的多个版本来说都是如此)。请参阅 Radek 'Goblin' Pieczonka 的正确答案

有几种选择可供您选择。恕我直言,最简单的方法是使用systemd 单元来安装和配置 kubectl,然后运行kubectl label命令。或者,您可以直接更新节点元数据curl中的标签。

话虽这么说,虽然我不知道您的确切用例,但您在节点上使用标签的方式似乎是为了绕过 Kubernetes 的一些关键功能,例如跨节点组件的动态调度。我建议您不要尝试自动标记节点,而是首先尝试解决为什么需要识别节点。