Azure AKS中Calico-Kube-Controllers探针超时问题的分析与解决
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
问题背景
在Azure Kubernetes Service (AKS)环境中,用户报告了一个关于Calico网络组件的常见问题:Calico-Kube-Controllers Pod的Liveness和Readiness探针频繁出现超时失败。具体表现为探针执行命令"/usr/bin/check-status -l"和"/usr/bin/check-status -r"时发生超时,但Pod日志中并未显示明显的错误信息。
问题现象
用户在多个AKS集群中观察到这一现象,涉及不同版本的Kubernetes(1.27.9、1.28.5、1.29.0等)和不同版本的Calico组件(v3.24.6、v3.26.3等)。问题表现为:
- Pod事件中记录"Liveness probe failed: command '/usr/bin/check-status -l' timed out"
- Pod事件中记录"Readiness probe failed: command '/usr/bin/check-status -r' timed out"
- 容器日志中无明显的错误信息
- 直接执行探针命令可以正常返回"Ready"状态
技术分析
探针配置分析
Calico-Kube-Controllers的探针配置如下:
-
Liveness探针:
- 执行命令:
/usr/bin/check-status -l
- 初始延迟:10秒
- 超时时间:10秒
- 检查间隔:10秒
- 成功阈值:1
- 失败阈值:6
- 执行命令:
-
Readiness探针:
- 执行命令:
/usr/bin/check-status -r
- 初始延迟:0秒
- 超时时间:10秒
- 检查间隔:10秒
- 成功阈值:1
- 失败阈值:3
- 执行命令:
问题根源
经过深入分析,这个问题主要与AKS节点操作系统镜像版本有关。具体表现为:
- 在使用较旧节点镜像版本(如AKSUbuntu-2204gen2containerd-202403.25.0)的集群中,探针超时问题频繁出现
- 升级到较新节点镜像版本(如AKSUbuntu-2204gen2containerd-202405.03.0)后,问题得到解决
虽然探针配置在不同镜像版本中保持一致,但新版本镜像可能包含了性能优化或系统组件的更新,从而改善了探针的执行效率。
解决方案
对于遇到此问题的用户,建议采取以下解决方案:
-
升级节点操作系统镜像:
- 将节点池升级到包含修复的最新AKS Ubuntu镜像版本
- 新版本镜像已优化系统性能,可避免探针超时问题
-
临时调整探针配置(不推荐):
- 可以临时增加探针的超时时间(timeoutSeconds)
- 但这只是权宜之计,不能根本解决问题
-
监控与告警:
- 设置适当的监控,确保即使探针偶尔失败也不会影响业务
- 但需要确保这不是更严重问题的前兆
最佳实践
为了避免类似问题,建议AKS用户:
- 定期更新集群和节点池到最新稳定版本
- 关注AKS发布说明,了解已知问题和修复
- 对于关键组件如Calico,配置适当的监控和告警
- 在非生产环境测试新版本后再进行生产部署
总结
Calico-Kube-Controllers探针超时问题在AKS环境中是一个已知问题,与节点操作系统镜像版本密切相关。通过升级到最新的AKS节点镜像版本,可以有效地解决这一问题。Azure团队持续优化AKS平台组件,建议用户保持系统更新以获得最佳稳定性和性能。
对于运维团队而言,理解这类问题的本质和解决方案,有助于更快地识别和解决生产环境中的类似问题,确保Kubernetes集群的网络组件稳定运行。
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考