A pod is the smallest unit in Kubernetes, it is a grouping of containers that will be scheduled together onto a node in the cluster. usually it will just be one container but it could be a group of processes that make up an application.
Pods have a lifecycle: they are defined, scheduled onto a node, and then they run until their containers exit or the pod is removed from the node for some reason. Pods are immutable and changes to a pod are not persisted between restarts.
A pod does not:
have state (data should be stored in persistent volumes)
move nodes once scheduled onto a node
reschedule itself (we will use higher level controllers to manage pods)
Running a Container in a Pod with the CLI
Lets get started:
oc run --restart=Never hello-world-pod --image openshift/hello-openshift:latest
Under the hood, the
oc run command is taking options and creating a specification
that it is then passing to Kubernetes to run. To see the spec it is creating append
-o yaml to the
oc run command and you will get an output of what it is sending
oc run to generate only a Pod spec. By default it would
generate something more advanced we will talk about later.
openshift/hello-openshift is just a simple
List current running pods:
oc get pods
Get more information on our pod:
oc describe pod hello-world-pod
Once we see
Status: Running (near the top of the output, not the bottom) we can interact with the container by first setting up port forwarding:
oc port-forward hello-world-pod 8080:8080
oc port-forward stays in the foreground, we run
curl http://localhost:8080 in a second terminal.
The initial port in the port pair references a non-allocated port on our local system similar to how SSH port forwarding works.
Pods also have logs. And we can see the logs for the pod: (whatever was printed to stdout from within the container, not kubernetes).
oc logs hello-world-pod
Now lets delete our pod:
oc delete pod hello-world-pod
Deleting the pod will remove our ability to inspect the log output from
oc logs so if you are debugging an issue
you will want to keep the pod until the issue is resolved.
Running a Container in a Pod with the Web Console
To create a single pod using the web console we will create from YAML
First, in the upper right-hand corner, click the
+ symbol. This can be used to add any YAML object from the web UI.
Make sure the project in the upper left-hand dropdown is set to the project in which you wish to deploy. Then paste this YAML into the box.
- image: openshift/hello-openshift:latest
Click “Create” at the bottom of the screen, and you will be redirected to the pod object page.
Wait for this to say “Running” on the right side of the screen in the
Finally we can delete the pod by clicking Actions -> Delete Pod