Guides

How to get started, and achieve tasks, using Kubernetes

Edit This Page

Creating Single-Container Pods

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:

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   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   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
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-xypvc        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