nodeSelector定向调度 - Kubernetes

半兽人 发表于: 2019-08-08   最后更新时间: 2019-08-22  

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

pods/pod-nginx.yaml Copy pods/pod-nginx.yaml to clipboard
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://k8s.io/examples/pods/pod-nginx.yaml

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

kubectl get pods -o wide


您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容




半兽人 发表于: 1月前   最后更新时间: 24天前   游览量:167

上一条: 将Pod分配给指定的节点 - Kubernetes
下一条: Kubernetes内置的节点标签