首页 > 解决方案 > 延迟容器启动,直到 pod 中的其他容器启动

问题描述

我正在研究一个用例,其中边车容器在更改主容器的目录权限时连续运行 shell 脚本。我只想在 pod 中的 Main Container 准备好后启动侧容器。

我正在查看 Init Containers,我可以看到,当我们具有 Pod 间依赖关系时,init 容器是很好的候选者(Pod A 仅在 Pod B 启动/健康后启动)。

在我的情况下,我需要容器 B 仅在容器 A 在同一个 Pod 中启动后才能启动。

Deployment.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 }}

标签: kubernetes

解决方案


我不知道任何满足您描述的用例的 K8s 原生功能或钩子。

我会这样解决它:

在与常规容器相同的 Pod 中运行 Sidecar 容器,并让它执行一个脚本,在继续检查目录权限之前 ping 应用程序容器的就绪端点。


推荐阅读