初始化容器

通过初始化容器,也可以方便的做一些类似 postStart 的工作

但是需要明确区分的是,初始化容器的作用目标是 Pod本身,而 postStart 的作用目标则是 container

大多数情况下,这两种方式可以互换

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
  labels:
    app: init
spec:
  initContainers:
    - name: init
      image: busybox
      command:
      - wget
      - "-O"
      - "/tmp/index.html"
      - https://studyk8s.com
      volumeMounts:
        - name: initdir
          mountPath: "/tmp"

  containers:
    - name: nginx
      image: nginx
      ports:
      - containerPort: 80
      volumeMounts:
        - name: initdir
          mountPath: /usr/share/nginx/html
  volumes:
    - name: initdir
      emptyDir: {}

Init容器与普通容器非常像,除了以下两点:

  • Init容器总是运行到完成 (例如执行wget、curl、ping等命令)
  • 如果有多个Init容器的情况下都必须要在下一个启动之前结束运行

如果Pod中的Init容器启动失败,Kubernetes会不断重启该Pod,指导Init容器成功为止,如果Pod对应的restartPolicy值为Never(只要退出就不再重启),则它不会重新启动。

Send a Message