2 min read | by Jordi Prats
Kubernetes init containers are a special container that runs before the main containers on the Pod. They are usually used used for setting up the environment and populate some shared storage to be used for the actual containers.
We can add them using spec.initContainers on the same way we use spec.containers:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
initContainers:
- image: my-init-image
name: my-init
containers:
- image: my-app-image
name: my-app
- image: my-other-app-image
name: my-other-app
We must take into account that:
If we use --watch with kubectl get pods we can see how this works:
$ kubectl get pods --watch
NAME READY STATUS RESTARTS AGE
pet2cattle-8475d6697-jbmsm 0/1 Pending 0 0s
pet2cattle-8475d6697-jbmsm 0/1 Pending 0 0s
pet2cattle-8475d6697-jbmsm 0/1 Init:0/4 0 0s
pet2cattle-8475d6697-2sk4m 0/1 Init:1/4 0 4s
pet2cattle-8475d6697-2sk4m 0/1 Init:2/4 0 5s
pet2cattle-8475d6697-2sk4m 0/1 Init:2/4 0 6s
pet2cattle-8475d6697-2sk4m 0/1 Init:3/4 0 7s
pet2cattle-8475d6697-2sk4m 0/1 PodInitializing 0 8s
pet2cattle-8475d6697-2sk4m 0/1 Running 0 9s
pet2cattle-8475d6697-2sk4m 0/1 Running 0 41s
pet2cattle-8475d6697-2sk4m 1/1 Running 0 2m20s
Posted on 21/06/2021