K8s pod 存活探针

9/29/2024 swiftvapordockerk8s

在 Kubernetes 中,存活探针(Liveness Probe)用于检测 Pod 中容器是否处于健康状态。如果探针检测到容器不健康,Kubernetes 会重新启动该容器。通过这种机制,可以确保应用在发生故障时自动恢复。

以下是一个带有存活探针的 Pod YAML 配置示例:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod-with-liveness-probe  # Pod 名称
spec:
  containers:
    - name: my-container  # 容器名称
      image: nginx  # 使用的镜像
      livenessProbe:
        httpGet:  # HTTP 请求类型的存活探针
          path: /healthz  # 探针检测的路径
          port: 80  # 探针检测的端口
        initialDelaySeconds: 5  # 容器启动后等待 5 秒才进行第一次检测
        periodSeconds: 10  # 每 10 秒检测一次

# 存活探针的关键配置:

  • livenessProbe: 定义容器的存活探针。
  • httpGet: 使用 HTTP GET 请求进行健康检查
    • path: 探针检测的路径,比如 /healthz。
    • port: 探针检测的端口,这里是 80 端口。
  • initialDelaySeconds: 容器启动后首次探测前的延迟时间(秒)。通常给应用足够时间初始化。
  • periodSeconds: 每次检查的时间间隔(秒),这里设为 10 秒。

# 常见的探针类型:

  • HTTP GET 探针:通过 HTTP GET 请求一个 URL 路径,检测返回的状态码是否为 200-399 之间,来判断是否存活。
  • TCP 探针:通过 TCP 端口来检测容器是否存活。
  • 命令探针(exec):通过执行一个命令,检测命令的退出码,0 表示成功,非 0 表示失败。

# TCP 探针示例

livenessProbe:
  tcpSocket:
    port: 3306  # 通过 TCP 连接 3306 端口
  initialDelaySeconds: 15
  periodSeconds: 20

# exec 探针示例:

livenessProbe:
  exec:
    command:
      - cat
      - /tmp/healthy  # 执行命令,检测文件是否存在
  initialDelaySeconds: 5
  periodSeconds: 5

存活探针可以帮助保持应用的可靠性,确保容器在运行过程中遇到问题时能够自动恢复。

上次更新: 10/22/2024, 9:18:03 AM