Documentation for Kubernetes v1.4 is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the latest version.

Edit This Page

A pod is a group of containers that are scheduled onto the same host. Pods serve as units of scheduling, deployment, and horizontal scaling/replication. Pods share fate, and share some resources, such as storage volumes and IP addresses.

Creating a pod

Single-container pods can be created with the run command. The pod’s properties are specified with flags on the command line.

The run command creates a Deployment to monitor the pod(s). The Deployment watches for failed pods and will start up new pods as required to maintain the specified number.

Note: If you don’t want a Deployment to monitor your pod (e.g. your pod is writing non-persistent data which won’t survive a restart, or your pod is intended to be very short-lived), you can create a pod directly with the create command.

To create a pod using the run command:

$ kubectl run NAME
    --image=image
    [--port=port]
    [--replicas=replicas]
    [--labels=key=value,key=value,...]

Where:

image

There are additional flags that can be specified. For a complete list, run:

$ kubectl run --help

Viewing a pod

To view a specific pod, use the kubectl get command:

$ kubectl get pod NAME
NAME                       READY   STATUS    RESTARTS   AGE
example-1934187764-scau1   1/1     Running   0          2d

To return the name of the node on which the pod is scheduled, use the -o wide option:

$ kubectl get pod NAME -o wide
NAME                       READY   STATUS    RESTARTS   AGE   NODE
example-1934187764-scau1   1/1     Running   0          2d    gke-example-c6a38-node-xij3

For more details about a pod, including events, use describe in place of get:

$ kubectl describe pod NAME
Name:        example-1934187764-scau1
Namespace:   default
Image(s):    kubernetes/example-php-redis:v2
Node:        gke-example-c6a38461-node-xij3/10.240.34.183
Labels:      name=frontend
Status:      Running
Reason:
Message:
IP:          10.188.2.10
Replication Controllers:  example (5/5 replicas created)
Containers:
  php-redis:
    Image:   kubernetes/example-php-redis:v2
    Limits:
      cpu:   100m
    State:   Running
      Started:   Tue, 04 Aug 2015 09:02:46 -0700
    Ready:   True
    Restart Count: 0
Conditions:
  Type    Status
  Ready   True
Events:
  FirstSeen                       LastSeen                        Coun From                                     SubobjectPath            Reason  Message
  Thu, 06 Aug 2015 11:49:44 -0700 Thu, 06 Aug 2015 11:49:44 -0700 1    {kubelet gke-example-c6a38461-node-xij3} spec.containers{example} started Started with docker id 5705bffa65e2

To list all pods running on a cluster:

$ kubectl get pods

NAME                       READY     STATUS    RESTARTS   AGE
example-1934187764-scau1   1/1       Running   0          1m
frontend-7kdod             1/1       Running   0          1d

Deleting a pod

If your pod was created using the run command, kubernetes creates a Deployment to manage the pod. Pods managed by a Deployment are rescheduled if they go away, including being deleted by kubectl delete pod. To permanently delete the pod, delete its Deployment.

First, find the Deployment’s name:

$ kubectl get deployment 
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
example   1         1         1            1           1m

Then, delete the Deployment:

$ kubectl delete deployment DEPLOYMENT_NAME

Analytics

Create an Issue Edit this Page