OpenShift Init Container: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 1: Line 1:
=External=
=External=


* https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
* https://docs.openshift.com/container-platform/latest/architecture/core_concepts/containers_and_images.html#init-containers
* https://docs.openshift.com/container-platform/latest/architecture/core_concepts/containers_and_images.html#init-containers



Revision as of 01:43, 19 September 2019

External

Internal

Declaration

Declared within the context of a pod, under the "initContainers" field.

A simple example:

apiVersion: v1
kind: Pod
[...]
spec:
  containers:
  - name: app-container1
    [...]
  initContainers:
  - name: init-container1
    image: busybox
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']

Life Cycle

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#detailed-behavior

Timeout

An init container must finish initializing within ... otherwise it puts the deployment into an error state:

NAME         READY     STATUS    RESTARTS   AGE
a-1-deploy   0/1       Error     0          13m

Resources

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources

Troubleshooting Init Containers

The logs of init containers can be accessed by identifying the name of the init container with:

oc describe po/a-1-0g52b

...
Init Containers:
 b-dependency-checker:
  ...

and then getting the logs from that specific container:

oc logs -f -c b-dependency-checker po/a-1-0g52b

Application Dependency Example

https://github.com/NovaOrdis/playground/tree/master/openshift/applications/service-dependency

TODO: write a step-by-step article.