让容器在指定节点运行 - Assigning Pods to Nodes

官方参考:Assigning Pods to Nodes

容器组在运行时可以绑定或者优先使用某个节点。这样就可以指定有读写要求的应用部署到集群中有SSD硬盘的节点;还有需要在一个集群中进行构建任务时,就只需要指定到性能强劲的节点中去。

下面只讨论nodeSelector方式

nodeSelector

使用时需要在PodSpec中增加nodeSelector配置,包含一个或一组key:value.

Step One: Attach label to the node

  • 查询节点信息
$ kubectl get nodes --show-labels

可以返回当前所有节点信息,包括了系统默认标签.

  • 给节点打标签

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

$ kubectl label nodes rose nodeName=rose

Step Two: Add a nodeSelector field to your pod configuration

  • 原pod配置
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
  • 新pod配置-带指定标签
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    nodeName: rose

创建并查询结果

$ kubectl create -f pod.yaml
$ kubectl get pods -o wide

NAME                        READY     STATUS    RESTARTS   AGE       IP               NODE
nginx                        6/6       Running   0          3h        10.233.81.220        rose