Assign Pods to Nodes
This page shows how to assign a Kubernetes Pod to a particular node in aKubernetes cluster.
Before you begin
You need to have a Kubernetes cluster, and the kubectl command-line tool mustbe 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 acluster, you can create one by usingminikubeor you can use one of these Kubernetes playgrounds:
To check the version, enterkubectl version.
Add a label to a node
List thenodes in your cluster, along with their labels:
kubectl get nodes --show-labelsThe output is similar to this:
NAME STATUS ROLES AGE VERSION LABELSworker0 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker0worker1 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker1worker2 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker2Choose one of your nodes, and add a label to it:
kubectl label nodes <your-node-name>disktype=ssdwhere
<your-node-name>is the name of your chosen node.Verify that your chosen node has a
disktype=ssdlabel:kubectl get nodes --show-labelsThe output is similar to this:
NAME STATUS ROLES AGE VERSION LABELSworker0 Ready <none> 1d v1.13.0 ...,disktype=ssd,kubernetes.io/hostname=worker0worker1 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker1worker2 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker2In the preceding output, you can see that the
worker0node has adisktype=ssdlabel.
Create a pod that gets scheduled to your chosen node
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 hasadisktype=ssd label.
apiVersion:v1kind:Podmetadata:name:nginxlabels:env:testspec:containers:-name:nginximage:nginximagePullPolicy:IfNotPresentnodeSelector:disktype:ssdUse the configuration file to create a pod that will get scheduled on yourchosen node:
kubectl apply -f https://k8s.io/examples/pods/pod-nginx.yamlVerify that the pod is running on your chosen node:
kubectl get pods --output=wideThe output is similar to this:
NAME READY STATUS RESTARTS AGE IP NODEnginx 1/1 Running0 13s 10.200.0.4 worker0
Create a pod that gets scheduled to specific node
You can also schedule a pod to one specific node via settingnodeName.
apiVersion:v1kind:Podmetadata:name:nginxspec:nodeName:foo-node# schedule pod to specific nodecontainers:-name:nginximage:nginximagePullPolicy:IfNotPresentUse the configuration file to create a pod that will get scheduled onfoo-node only.
What's next
- Learn more aboutlabels and selectors.
- Learn more aboutnodes.