kubernetes init 容器会在 pod 运行 期间消耗资源吗?

Will kubernetes init containers consume resource during pod running?

我创建了一个初始化容器来装载卷。

这是一个示例,实际上我将使用该卷将一些东西注入主容器以进行监控。想象一下,我将对所有当前 运行 pods 执行此操作,重建所有图像并不好。

初始化容器dockerfile:

FROM alpine:3.15
RUN apk add curl
RUN curl -Lo /tmp/resource.zip "https://some/resource.zip" && unzip /tmp/resource.zip -d /data/

pod yaml:

    ...
    volumes:
    - name: my-volume
      emptyDir: {}
    initContainers:
    - name: my-volume
      image: init/container/image:tag
      command: ['sh']
      args: ['-c', 'cp -r /data/* /var/volume/']
      volumeMounts:
        - name: my-volume
          mountPath: /var/volume
    containers:
    - name: main-app
      image: python:3.9-alpine
      command: ['sh']
      args: ['-c', 'cd /var/volume && python -m http.server 80']
      volumeMounts:
        - name: my-volume
          mountPath: /var/volume
    ...

init 容器会在运行时继续消耗 cpu 和内存吗?它就像是在主容器之前退出的工作吗?如果有,init容器退出后volume是如何提供的?

运行 在同一个 pod 中的容器,表现得就像它们 运行 在同一个 'logical host' 中一样。只会关联一个IP号,只会关联一组存储卷,可以同时挂载到多个容器上。

docker 引擎将创建一个单一的持久卷 'my-volume',然后首先 运行 装载该卷的 init-container 进程,然后是主进程具有相同音量(以及相同 IP 地址)的应用程序。

init-container 的 cpu 和内存资源在该容器完成时释放。