You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes存活探针失败时,如何重启Pod内无健康端点的主容器?

实现方案:通过存活探针触发主容器重启

核心思路

借助具备健康端点的辅助容器的存活探针,通过exec执行命令重启主容器。关键前提是开启Pod的PID命名空间共享,让辅助容器能访问到主容器的进程。

具体配置步骤

  1. 开启Pod的PID共享
    在Pod的spec字段中添加shareProcessNamespace: true,使Pod内所有容器共用同一个PID命名空间,这样辅助容器就能看到主容器的进程信息。

  2. 配置辅助容器的存活探针
    在辅助容器的存活探针里,先检测健康端点状态:如果检测成功则正常退出;如果失败,就执行命令终止主容器的进程,Kubernetes会自动重启主容器。

示例YAML配置

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  shareProcessNamespace: true  # 开启PID共享
  containers:
  - name: main-container
    image: your-main-image:tag
    # 主容器无健康端点,无需配置探针
  - name: health-check-container
    image: your-health-image:tag
    livenessProbe:
      exec:
        command:
        - /bin/sh
        - -c
        - |
          # 检测健康端点
          if curl -f http://localhost:your-health-port/health-endpoint; then
            exit 0
          else
            # 终止主容器进程(多数镜像的启动进程PID为1)
            kill 1
            exit 1
          fi
      initialDelaySeconds: 10
      periodSeconds: 5

注意事项

  • 进程PID定位:如果主容器的启动进程不是PID 1,需要调整kill命令的目标PID。可以用pgrep <main-process-name>精准定位主容器进程,或者在辅助容器内执行ps aux查看进程列表。
  • 权限与工具依赖:辅助容器需要具备执行kill命令的权限,同时镜像要包含curl、kill、pgrep这类工具,推荐使用alpine这类自带基础工具的镜像。
  • 重启逻辑:主容器进程被终止后,Kubernetes容器运行时会自动触发该容器的重启,满足需求。

内容的提问来源于stack exchange,提问作者Rohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:42:05