我只是想把我可以在kubernetes中使用init容器的东西包住头。
我有一个应用程序容器,该容器在具有本地ssd的节点上运行。我正计划通过本地卷静态供应商进行此操作,并让Pod具有持久的卷声明-我这样做的原因是我有1-1节点-pod关系,并且我希望能够使用节点/吊舱自动缩放。我的应用容器需要一些从外部存储桶中提取的数据才能正常工作,这就是我计划让初始化容器执行的工作。
我的问题是;是否保证我的init容器和app容器将在同一节点上执行?如果是这样,我假设他们可以挂载相同的磁盘,而无需使用静态预配置擦除它们之间的挂载磁盘?
答案 0 :(得分:2)
是的,它们在同一节点上运行,初始化容器是Pod的一部分:
Pod中的容器共享一个IP地址和端口空间,始终位于同一位置并共同调度,并在同一节点上的共享上下文中运行。
and:
一个Pod可以在其中运行多个容器,但也可以有一个或多个初始化容器,它们在启动应用容器之前就已运行。
您可以在初始化容器和容器之间共享一个卷:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: deploy
spec:
replicas: 1
template:
spec:
volumes:
- name: shared-data
emptyDir: {}
initContainers:
- name: init
image: <xxx>
volumeMounts:
- name: shared-data
mountPath: /env
containers:
- name: <my-container>
image: <my-image>
volumeMounts:
- name: shared-data
mountPath: /env
将所需的任何数据写入共享卷,您将能够从容器中访问它。