instruction: Explain Configure Pod Initialization
output: Configure Pod Initialization
  This page shows how to use an Init Container to initialize a Pod before an
  application Container runs.
  Before you begin
  You need to have a Kubernetes cluster, and the kubectl command-line tool must
  be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a
  cluster, you can create one by using
  minikube
  or you can use one of these Kubernetes playgrounds:
  iximiuz Labs
  Killercoda
  KodeKloud
  Play with Kubernetes
  To check the version, enter
  kubectl version
  Create a Pod that has an Init Container
  In this exercise you create a Pod that has one application Container and one
  Init Container. The init container runs to completion before the application
  container starts.
  Here is the configuration file for the Pod:
  pods/init-containers.yaml
  apiVersion
  kind
  metadata
  name
  init-demo
  spec
  containers
  name
  nginx
  image
  nginx
  ports
  containerPort
  volumeMounts
  name
  workdir
  mountPath
  /usr/share/nginx/html
  # These containers are run during pod initialization
  initContainers
  name
  install
  image
  busybox:1.28
  command
  - wget
  "-O"
  "/work-dir/index.html"
  - http://info.cern.ch
  volumeMounts
  name
  workdir
  mountPath
  "/work-dir"
  dnsPolicy
  Default
  volumes
  name
  workdir
  emptyDir
  In the configuration file, you can see that the Pod has a Volume that the init
  container and the application container share.
  The init container mounts the
  shared Volume at
  /work-dir
  , and the application container mounts the shared
  Volume at
  /usr/share/nginx/html
  . The init container runs the following command
  and then terminates:
  wget -O /work-dir/index.html http://info.cern.ch
  Notice that the init container writes the
  index.html
  file in the root directory
  of the nginx server.
  Create the Pod:
  kubectl apply -f https://k8s.io/examples/pods/init-containers.yaml
  Verify that the nginx container is running:
  kubectl get pod init-demo
  The output shows that the nginx container is running:
  NAME READY STATUS RESTARTS AGE
  init-demo 1/1 Running 0 1m
  Get a shell into the nginx container running in the init-demo Pod:
  kubectl
  exec
  -it init-demo -- /bin/bash
  In your shell, send a GET request to the nginx server:
  root@nginx:~# apt-get update
  root@nginx:~# apt-get install curl
  root@nginx:~# curl localhost
  The output shows that nginx is serving the web page that was written by the init container:
  html
  head
  head
  body
  header
  title
  >http://info.cern.ch</
  title
  header
  >http://info.cern.ch - home of the first website</
  href
  "http://info.cern.ch/hypertext/WWW/TheProject.html"
  >Browse the first website</
  What's next
  Learn more about
  communicating between Containers running in the same Pod
  Learn more about
  Init Containers
  Learn more about
  Volumes
  Learn more about
  Debugging Init Containers
  Was this page helpful?
  Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on
  Stack Overflow
  Open an issue in the
  GitHub Repository
  if you want to
  report a problem
  suggest an improvement
  Last modified August 24, 2023 at 6:38 PM PST:
  Use code_sample shortcode instead of code shortcode (e8b136c3b3)