---
title: Assign Pods to Nodes
content_template: templates/task
weight: 120
---

{{% capture overview %}}
This page shows how to assign a Kubernetes Pod to a particular node in a
Kubernetes cluster.
{{% /capture %}}

{{% capture prerequisites %}}

{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}

{{% /capture %}}

{{% capture steps %}}

## Add a label to a node

1. List the nodes in your cluster:

    ```shell
    kubectl get nodes
    ```

    The output is similar to this:

    ```shell
    NAME      STATUS    AGE     VERSION
    worker0   Ready     1d      v1.6.0+fff5156
    worker1   Ready     1d      v1.6.0+fff5156
    worker2   Ready     1d      v1.6.0+fff5156
    ```
1. Chose one of your nodes, and add a label to it:

    ```shell
    kubectl label nodes <your-node-name> disktype=ssd
    ```

    where `<your-node-name>` is the name of your chosen node.

1. Verify that your chosen node has a `disktype=ssd` label:

    ```shell
    kubectl get nodes --show-labels
    ```

    The output is similar to this:

    ```shell
    NAME      STATUS    AGE     VERSION            LABELS
    worker0   Ready     1d      v1.6.0+fff5156     ...,disktype=ssd,kubernetes.io/hostname=worker0
    worker1   Ready     1d      v1.6.0+fff5156     ...,kubernetes.io/hostname=worker1
    worker2   Ready     1d      v1.6.0+fff5156     ...,kubernetes.io/hostname=worker2
    ```

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

## 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 has
a `disktype=ssd` label.

{{< codenew file="pods/pod-nginx.yaml" >}}

1. Use the configuration file to create a pod that will get scheduled on your
   chosen node:
    
    ```shell
    kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/pod.yaml
    ```

1. Verify that the pod is running on your chosen node:

    ```shell
    kubectl get pods --output=wide
    ```

    The output is similar to this:
    
    ```shell
    NAME     READY     STATUS    RESTARTS   AGE    IP           NODE
    nginx    1/1       Running   0          13s    10.200.0.4   worker0
    ```

{{% /capture %}}

{{% capture whatsnext %}}
Learn more about
[labels and selectors](/docs/concepts/overview/working-with-objects/labels/).
{{% /capture %}}

