Arr!☸️
In Part 1 we were introduced to the basics of kubernetes and took a brief look at the k8s "objects".
Onward now with our expedition with Pods, the smallest object in k8s.
| OBJECT | DESCRIPTION |
|---|---|
| 👉 Pods | The lowest level, single instance of an application |
| ReplicaSets | The next level, manages a set of pods |
| Deployments | The next level, manages a set of ReplicaSets |
| Services | The next level, manages a set of deployments |
| Ingress | The next level, manages a set of services |
| Volumes | The next level, manages a set of ingress |
| Namespaces | The next level, manages a set of volumes |
| Cluster | The highest level, manages a set of namespaces |
Pods:
- K8s does not deploy the containers directly on the worker nodes.
- The containers are encapsulated into a kubernetes object, known as 'pod'.
- A pod is a single instance of an application.
- Usually a pod contains a single container, but it can contain multiple containers, and these containers are not the same containers.
- For example, a pod can contain a container running the application, and another container running a sidecar process or helper application.
- Containers inside the pod share the same network namespace, and can communicate with each other using localhost, and can share the same storage space.
-
Commands:
# deploy a container by creating a pod $ kubectl run <pod name> --image=<image name> # list all pods $ kubectl get pods # list detailed info about all pods $ kubectl get pods -o wide # describe a pod $ kubectl describe pod <pod name> # delete a pod $ kubectl delete pod <pod name> -
Creating pods:
- The .yml file must contain 4 top-level fields/properties i.e.
apiVersion,kind,metadataandspec. -
apiVersion: the version of the k8s API that is being used e.g.v1,apps/v1 -
kind: the type of object that is being created e.g.Pod,Service,Deployment,ReplicaSet -
metadata: data that helps to uniquely identify the object e.g.name,labels-
namecan only have a string value -
labelscan have any kind of key-value pairs
-
-
spec: the specification of the object-
containers: the list of containers that will be launched in the pod -
name: the name of the container -
image: the image that will be used to launch the container
-
-
Example
pod-definition.yml:
apiVersion: v1 kind: Pod metadata: name: my-pod labels: app: my-app type: my-type spec: containers: - name: my-container image: my-image-name:my-image-tag -
Once the .yml file is created, it can be used to create a pod using the
kubectl createcommand:
$ kubectl create -f <file name>.yml -
View detailed info about the pod:
$ kubectl describe pod <pod name> -
Delete the pod:
$ kubectl delete pod <pod name> -
Update the pod with an updated .yml file e.g. with a new image, etc.:
$ kubectl apply -f <file name>.yml
- The .yml file must contain 4 top-level fields/properties i.e.
Great job sailor!
You now know what pods are, hopefully you found this post an interesting and useful read.
Onwards now to "Controllers and ReplicaSets" in Part 3 which will be out soon!
Haul Wind!!!⛵
Top comments (0)