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

Kubernetes中Calico节点就绪探针(readiness probe)失败,但手动执行探针命令返回成功的问题排查咨询

Kubernetes中Calico节点就绪探针(readiness probe)失败,但手动执行探针命令返回成功的问题排查咨询

大家好,我最近碰到一个Kubernetes集群的诡异问题,想请教下各位:

我用kubeadm在同一局域网搭建了一个单控制平面节点+单工作节点的裸机集群,完成kubeadm init和kubeadm join后,通过Helm安装了Calico网络插件。现在发现calico-node和calico-kube-controllers的Pod一直无法进入就绪状态,但实际测试下来它们的功能是正常的——我手动执行探针的检测命令时,都能得到预期的成功响应。

从kubectl describe pod -n calico-system calico-node-xxxx的事件里看到的错误是:

Events:
Type Reason Age From Message


Warning Unhealthy 5s (x7 over 43s) kubelet Readiness probe errored: rpc error: code = Unknown desc = command error: EOF, stdout: , stderr: , exit code -1

这个calico-node Pod的探针配置是这样的:

readinessProbe:
  exec:
    command:
    - /bin/calico-node
    - -felix-ready
  failureThreshold: 3
  periodSeconds: 10
  successThreshold: 1
  timeoutSeconds: 5
livenessProbe:
  failureThreshold: 3
  httpGet:
    host: localhost
    path: /liveness
    port: 9099
    scheme: HTTP
  periodSeconds: 10
  successThreshold: 1
  timeoutSeconds: 10

我手动测试了探针命令:

  • 执行kubectl exec -n calico-system calico-node-xxxx -- /bin/calico-node -felix-ready && echo "$?",得到的退出码是0,完全正常;
  • 执行curl localhost:9099/liveness也能拿到200状态码和预期的响应内容。

更奇怪的是,哪怕是在Pod刚创建的1秒内执行这些命令,结果也是成功的,所以我觉得应该不是failureThreshold或者timeoutSeconds这些参数配置的问题。

我对kubelet执行exec类型探针的具体机制不太了解,会不会是kubelet的执行环境和我用kubectl exec进入Pod后的环境有什么差异?或者还有其他可能的原因导致这种探针失败但手动执行成功的情况?

麻烦各位帮忙分析下,谢谢!

备注:内容来源于stack exchange,提问作者zckl902

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 16:24:51