Kubernetes使用NodeName、NodeSelector做Pod定向调度
目录
警告
本文最后更新于 2023-05-17,文中内容可能已过时。
通常情况下,调度器会将我们的 Pod 合理地放置在某个节点上。但在某些情况下,我们需要强行控制 Pod 部署在某个节点上。
例如,确保 Pod 最终落在连接了 SSD 的机器上,或者确保来自两个不同的服务且有大量通信的 Pods 被放置在同一个可用区。
在 Kubernetes 中有两种定向调度方式:NodeName 和 NodeSelector。
NodeName 方式
我们可以通过设置 nodeName 将某个 Pod 调度到特定的节点,比如下面这个例子:
|
|
NodeSelector 方式
NodeName 方式利用的是「节点名字」,相应的,NodeSelector 方式利用的是「节点标签」:
查询我们集群中的节点(附带标签):kubectl get nodes --show-labels
输出类似如下:
|
|
选择其中一个节点,为它添加标签:kubectl label nodes <your-node-name> disktype=ssd
老规矩,验证一下:kubectl get nodes --show-labels
输出如下:
|
|
这时我们可以看到 worker0 节点有 disktype=ssd 标签。
现在我们创建一个 Pod,将其调度到拥有disktype=ssd
标签的节点上:
|
|
此 Pod 配置文件描述了一个拥有节点选择器 disktype: ssd 的 Pod。这表明该 Pod 将被调度到有 disktype=ssd 标签的节点。
验证
执行命令:kubectl get pods --output=wide
输出类似如下:
|
|
Buy me a coffee~
支付宝
微信