Kubernetes Pods

What are Kubernetes Pods and how to manage them?

Kubernetes pods are the smallest units in the ecosystem. A pod is basically a container of containers. Kinda confused? yeh! Containers or Docker containers contain your app and know how to deploy it in an ideal situation.

Before Kubernetes can help you scale your app to your desired amount of users. We need to have our app and its docker file ready to deploy.

Kubernetes Pods

Pods refer to the smallest unit in the Kubernetes ecosystem as I mentioned earlier or we can say that this is a bag of docker containers that enclose our application instance.

A single node can hold a lot of pods till it’s filled. Once a node is filled another node is created to make sure that applications availability isn’t affected.

Let’s say we have a node application that use’s Redis for caching and our app is ready a pod is a complete collection of these containers that you make your whole app.

Kubernetes Pods

That’s the basic concept of pods. Now let’s see how to quickly make a few pods in our cluster.

Pods in action.

The command below will create a pod named Nginx and deploy the Nginx image from the docker hub.

root@controlplane:~ kubectl run nginx --image=nginx
pod/nginx created
root@controlplane:~ kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          115s
root@controlplane:~# kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS   AGE    IP           NODE           NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          2m3s   10.244.0.4   controlplane   <none>           <none>
root@controlplane:~ 

Kubectl get pods will show us the pods that are running and wide options shows the IP address and a few more details about the pods.

If we want even more details then we can use the kubectl describe pod command.

root@controlplane:~# kubectl describe pod nginx
Name:         nginx
Namespace:    default
Priority:     0
Node:         controlplane/10.7.187.9
Start Time:   Tue, 28 Sep 2021 05:37:22 +0000
Labels:       run=nginx
Annotations:  <none>
Status:       Running
IP:           10.244.0.4
IPs:
  IP:  10.244.0.4
Containers:
  nginx:
    Container ID:   docker://f54fec50c632399275671956961b32d53dddadd956fd7e1e6dcf215e4542b8da
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256:3f1b44820597d0e6b763ff104bc04c11b9e51238f3e0d6109e1ed1ecf58ffad5
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Tue, 28 Sep 2021 05:37:35 +0000
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-6nzg7 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-6nzg7:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-6nzg7
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  5m4s   default-scheduler  Successfully assigned default/nginx to controlplane
  Normal  Pulling    5m2s   kubelet            Pulling image "nginx"
  Normal  Pulled     4m51s  kubelet            Successfully pulled image "nginx" in 10.960110215s
  Normal  Created    4m51s  kubelet            Created container nginx
  Normal  Started    4m51s  kubelet            Started container nginx

This provides all the things we need to know about the pod. Like the node and node IP address and pod IP address container ids etc.

We can also see where the Nginx image was pulled from in this case it was docker hub. All the events a pod went through before it deployed can be seen in the last paragraph under events.

Thats all about pods see you in the next post about writing YAML files for Kubernetes. You may also like the post I wrote earlier on locally setting up Kubernetes and if you would like to know more about Kubernetes pods you can reference Kubernetes.io.

Posts created 29

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top