2016-10-19 52 views
1

我跟随指南[1]创建具有1个主节点和2个节点的多节点K8S群集。另外,标签需要分别设置到每个节点。如何在创建时将标签设置为Kubernetes节点?

Node 1 - label name=orders 
Node 2 - label name=payment 

我知道上面是可以实现运行kubectl命令

kubectl get nodes 
kubectl label nodes <node-name> <label-key>=<label-value> 

但我想知道如何创建一个节点时设置标签。节点创建指导在[2]中。

欣赏您的输入。

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

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

回答

1

有提供给你几个选择。最简单的恕我直言将是使用一个系统单元来安装和配置kubectl,然后运行kubectl label命令。或者,您可以直接使用curl来更新node'smetadata中的标签。这就是说,虽然我不知道你的确切用例,但你在节点上使用标签的方式似乎是为了绕过Kubernetes的一些关键特性,比如节点间动态调度组件。我会建议,而不是自动标记节点,试图解决为什么您需要首先识别节点。

+0

是。我赞同你。但我的要求是在与标签匹配的节点上创建Pod。因为在K8S集群中运行的软件包会很多,所以我很容易理解在哪个节点上运行哪个软件包。 –

2

事实上有一个微不足道的方法来实现,因为1.3或类似的东西。

什么是负责注册你的节点是启动它的kubelet进程,所有你需要做的就是传递一个像这样的标志--node-labels 'role=kubemaster'。这就是我区分AWS k8s集群中不同自动缩放组之间节点的方式。

+0

好像我的'v1.7.3 + coreos.0'群集没有检测到kubelet的CLI参数已经改变.' - node-labels mapStringString <警告:Alpha特征>在群集中注册节点时添加的标签。标签必须是由','分隔的键=值对。' – mighq

+0

根据https://github.com/kubernetes/kubernetes/issues/51858它只适用于初始节点注册期间。 – mighq

相关问题