Understanding pods
Pods are the minimal deployable computing units that can be built and managed in Kubernetes. They are made up of one or more containers that share storage and network resources, as well as running instructions. Pods have the following components:
- An exclusive IP address that enables them to converse with one another
- Persistent storage volumes based on the application's needs
- Configuration information that determines how a container should run
The following diagram shows the various components of a pod:
Figure 1.7 – The components of a pod
Workload resources known as controllers create pods and oversee the rollout, replication, and health of pods in the cluster.
The most common types of controllers are as follows:
- Jobs for batch-type jobs that are short-lived and will run a task to completion
- Deployments for applications that are stateless and persistent, such as web servers
- StatefulSets for applications that are both stateful and persistent, such as databases
These controllers build pods using configuration information from a pod template, and they guarantee that the operating pods meet the deployment specification provided in the pod template by creating replicas in the number of instances specified in the deployment.
As we mentioned previously, the Kubectl command-line interface includes various commands that allow users to build pods, deploy them, check on the status of operating pods, and delete pods that are no longer needed.
The following are the most commonly used kubectl
commands concerning pods:
- The
create
command creates the pod:kubectl create -f FILENAME.
For example, the kubectl create -f ./mypod.yaml
command will create a new pod from the mypod
YAML file.
- The
get pod
/pods
command will display information about one or more resources. Information can be filtered using the respective label selectors:kubectl get pod pod1
- The
delete
command deletes the pod:kubectl delete -f FILENAME.
For example, the kubectl delete -f ./mypod.yaml
command will delete the mypod
pod from the cluster.
With that, we've learned that a pod is the smallest unit of a Kubernetes application and is made up of one or more Linux containers. In the next section, we will look at deployments.