我正在研究一个用例,其中sidecar容器在主容器的目录权限更改时连续运行shell脚本。我想在pod中的主容器准备好后才启动侧容器。
我在看初始化容器,我可以看到的是,当我们有pod间的依赖关系时,初始化容器是很好的候选者(pod A只在Pod B启动/健康之后才启动)。
在我的例子中,我需要容器B只有在容器A在同一Pod中启动后才能启动。
部署。yaml供参考
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
- name: container2
image: some-repo
imagePullPolicy: {{ .Values.image.pullPolicy }}
2条答案
按热度按时间vu8f3i0k1#
我不知道有任何K8s的原生特性或钩子可以满足您所描述的用例。
我会这样解决:
在与常规容器相同的Pod中运行sidecar容器,并让它执行一个脚本,该脚本在继续检查目录权限之前ping应用程序容器的就绪端点。
bn31dyow2#
Marko Lukša写了一篇关于这个主题的博客文章(https://medium.com/@marko.luksa/delaying-application-start-until-sidecar-is-ready-2ec2d21a7b74)。
您可以编写一些脚本,在容器A上运行,并等待它“正式就绪”后退出。将该命令附加到容器A的启动后生命周期阶段将阻止pod中的后续容器启动,直到它完成。