nodeSelector定向调度 - Kubernetes

原创
半兽人 发表于: 2019-08-08   最后更新时间: 2022-12-12 18:55:29  
{{totalSubscript}} 订阅, 9,548 游览

nodeSelector是最简单也是最推荐的节点约束方式。nodeSelector是PodSpec的一个字段。通过key-value的方式映射。要想让pod在指定节点上运行,该节点必须将加上对应的标签(还可以包含其他标签,最常见的用法是一个key-value对)。

让我们通过一个例子来看如何使用nodeSelector

第一步: 将标签附加到节点上

运行kubectl get nodes来获取节点的名称。然后选择要添加标签的那个节点,然后运行kubectl label nodes <node-name> <label-key>=<label-value>来向你选择的节点添加标签。

例如,在节点名称是 'kube-node3' 上打上标签为disktype = ssd,那么我可以运行kubectl label nodes kube-node3 disktype=ssd,如下:

# kubectl get nodes
kube-node1   Ready                      <none>   425d   v1.13.2
kube-node2   Ready                      <none>   405d   v1.13.2
kube-node3   Ready                      <none>   405d   v1.13.2
# 添加标签
kubectl label nodes kube-node3 disktype=ssd

你可以运行--show-lables命令来验证你的标签是否生效了。同样你也可以使用describe node nodename来查该节点的完整标签列表,如下:

kubectl get nodes --show-labels
或者
kubectl describe node kube-node3

第二步,添加nodeSelector到你的pod配置文件中

例如,如果这是我的pod配置:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx

然后像这样添加一个nodeSelector

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd

运行它:

kubectl apply -f https://www.kubebiz.com/raw/orchome/demo/pods/pod-nginx.yaml

正常情况下,该Pod将会被调度到加过标签的节点上。可以通过运行以下命令查看Pod分配给的“NODE”来验证它是否有效。

kubectl get pods -o wide
更新于 2022-12-12

想个好名字 1年前
imagePullPolicy: IfNotPresent

想问问大佬添加labels里这一行是什么意思呢?

查看kubernetes更多相关的文章或提一个关于kubernetes的问题,也可以与我们一起分享文章