Assign Pods to Nodes

    You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:

    To check the version, enter .

    1. List the in your cluster, along with their labels:

      The output is similar to this:

      1. NAME STATUS ROLES AGE VERSION LABELS
      2. worker0 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker0
      3. worker1 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker1
      4. worker2 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker2
    2. Verify that your chosen node has a disktype=ssd label:

      The output is similar to this:

      1. NAME STATUS ROLES AGE VERSION LABELS
      2. worker0 Ready <none> 1d v1.13.0 ...,disktype=ssd,kubernetes.io/hostname=worker0
      3. worker1 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker1

      In the preceding output, you can see that the worker0 node has a disktype=ssd label.

    This pod configuration file describes a pod that has a node selector, disktype: ssd. This means that the pod will get scheduled on a node that has a disktype=ssd label.

    pods/pod-nginx.yaml

    1. apiVersion: v1
    2. kind: Pod
    3. metadata:
    4. name: nginx
    5. labels:
    6. env: test
    7. containers:
    8. - name: nginx
    9. image: nginx
    10. imagePullPolicy: IfNotPresent
    11. nodeSelector:
    12. disktype: ssd
    1. Verify that the pod is running on your chosen node:

      1. kubectl get pods --output=wide

      The output is similar to this:

      1. NAME READY STATUS RESTARTS AGE IP NODE
      2. nginx 1/1 Running 0 13s 10.200.0.4 worker0

    You can also schedule a pod to one specific node via setting nodeName.

    Assign Pods to Nodes - 图2

    Use the configuration file to create a pod that will get scheduled on only.