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

AWS EKS多容器Pod的Liveness和Readiness探针失败如何解决?

排查步骤

1. 优先删除hostPort配置

你的Deployment中给两个容器都配置了hostPort参数,该配置会将容器端口直接映射到节点宿主机的对应端口,会引发两类问题:

  • 节点上如有其他进程占用80/6379端口,会导致端口冲突,CNI路由规则混乱
  • kubelet发起的PodIP:80访问请求可能被错误路由到节点本地的其他服务,引发超时
    先删除两个容器的hostPort配置,重新发布后验证探针状态。

2. 检查节点到Pod的网络访问权限

你手动验证时大多是从集群内其他Pod发起访问,而kubelet的探针是从节点宿主机的主IP发起请求,以下配置会拦截该类请求:

  • 检查节点安全组入方向规则:是否允许节点所在的VPC网段访问Pod的80端口
  • 检查集群NetworkPolicy规则:是否配置了仅允许Ingress/Service网段访问80端口,遗漏了节点IP段的放行规则

3. 补充探针Host头配置

如果你的Web应用配置了基于Host头的路由规则或者域名校验,kubelet默认发起的httpGet请求不带Host头,会被应用拒绝响应,可以给探针增加Host头配置:

livenessProbe:
  httpGet:
    path: /
    port: 80
    httpHeaders:
    - name: Host
      value: 你的应用绑定的域名
readinessProbe:
  httpGet:
    path: /
    port: 80
    httpHeaders:
    - name: Host
      value: 你的应用绑定的域名

4. 替换exec探针验证链路

可以临时将httpGet探针替换为exec类型探针,直接在容器内部发起访问,绕开节点到Pod的网络链路,定位问题范围:

livenessProbe:
  exec:
    command:
    - curl
    - http://127.0.0.1/
  initialDelaySeconds: 90
  periodSeconds: 20
  timeoutSeconds: 5
readinessProbe:
  exec:
    command:
    - curl
    - http://127.0.0.1/
  initialDelaySeconds: 90
  periodSeconds: 10
  timeoutSeconds: 5

如果exec探针运行正常,即可确认问题出在节点到Pod的网络链路,重点排查前两项配置即可。

5. 查看节点kubelet日志

如果上述排查都没有结果,可以登录Pod调度到的节点,查看kubelet运行日志,获取探针请求的详细错误信息,进一步定位根因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:27:02