nodeSelector:Pod 定向调度
Posted 看,未来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodeSelector:Pod 定向调度相关的知识,希望对你有一定的参考价值。
文章目录
简介
在实际情况下,有时候需要将 Pod 调度到制定的一些 Node 上,比如说CPU密集型Pod调度到CPU够大的节点上,IO密集型Pod调度到带宽够大的节点上等等。可以通过 Node 的标签和 Pod 的 nodeSelector 属性相匹配,来达到上述目的。
给 Node 上标签
kubelet labels nodes <node-name> <label-key>=<label-value>
支持打多个标签,用逗号隔开;
如果要更新标签,加上 --overwrite;如果要删除标签:
kubelet labels nodes <node-name> <label-key>-
如果是查看标签,kubectl get node --show-labels=true
标签选择
比方说我们现在给某个 node 上了一个标签 zone=sz
apiversion: v1
kind: deployment
metadate:
name: nginx
labels:
name: nginx
spec:
replicas: 1
selector:
name: nginx
template:
metadate:
labels:
name: nginx
spec:
containers:
- name: master
image: nginx
ports:
- containerPorts: 80
nodeSelector:
zone: sz
如果我们给多个 node 都上了这个标签,那么 schedule 调度算法将会在这些 node 中选择一个可用的 Node 进行调度。
如果集群中没有一个 node 有这个标签,那就 pending。
kubernetes 预定义标签
在 node 上,除了我们认为设定的标签,k8s 也会根据 node 的实际情况设定一些标签:
kubernetes.io/hostname
beta.kubernetes.io/os(到 1.18 版本删除)
beta.kubernetes.io/arch(到1.18 版本删除)
kubernetes.io/arch
kubernetes.io/os
用户可以使用这些系统标签进行调度。
以上是关于nodeSelector:Pod 定向调度的主要内容,如果未能解决你的问题,请参考以下文章
Docker&Kubernetes ❀ Kubernetes集群Pod调度方式资源配置清单