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 和内存资源在该容器完成时释放。
我创建了一个初始化容器来装载卷。
这是一个示例,实际上我将使用该卷将一些东西注入主容器以进行监控。想象一下,我将对所有当前 运行 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 和内存资源在该容器完成时释放。