Azure AKS项目中azure-cns DaemonSet就绪探针配置错误问题分析
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
在Azure Kubernetes Service (AKS) 1.27-LTS版本中,使用AKSUbuntu-2204gen2containerd-202502.09.0节点镜像并启用Cilium网络策略时,系统部署的azure-cns DaemonSet出现了就绪探针配置错误的问题。这个问题会导致azure-cns Pod始终无法通过健康检查,影响集群网络功能的正常运行。
问题现象
azure-cns是AKS集群中负责容器网络服务的核心组件,以DaemonSet形式运行在每个节点上。在受影响的版本中,该组件的Pod会持续处于未就绪状态,通过检查发现是其就绪探针(Readiness Probe)配置存在问题。
根本原因分析
通过检查DaemonSet的配置清单,发现就绪探针的HTTP检查被错误地配置为访问"metrics"端口(10092)上的"/readyz"端点。而实际上,"/readyz"健康检查端点应该被配置在"api"端口(10090)上。
具体表现为:
- 正确的健康检查端点实际运行在10090端口,访问
http://localhost:10090/readyz
返回HTTP 200状态码和"OK"响应 - 当前配置尝试访问
http://localhost:10092/readyz
,这会返回HTTP 404状态码和"Not Found"响应 - 由于就绪探针持续失败,导致Pod无法进入就绪状态
影响范围
此问题特定于以下环境配置:
- Kubernetes版本:1.27.102-LTS
- 节点镜像:AKSUbuntu-2204gen2containerd-202502.09.0
- 网络策略:Cilium
- 网络插件:Azure CNI Overlay
该问题是在2025年2月20日的版本更新中引入的一个回归性问题。
解决方案
AKS团队已经识别并修复了此问题。解决方案包括两个可能的方向:
- 修正就绪探针端口配置:将就绪探针的端口从"metrics"改为"api",使其指向正确的10090端口
- 移除低版本集群的就绪探针:对于1.28以下版本的集群,直接移除就绪探针配置
最终,AKS团队选择了第二种方案,移除了受影响版本集群中azure-cns的就绪探针配置,这已经证实可以解决问题。
技术启示
这个案例提醒我们几个重要的Kubernetes运维实践:
- 探针配置验证:在部署或更新工作负载时,必须验证就绪探针和存活探针的配置是否正确指向实际的服务端点
- 版本兼容性测试:平台组件的更新需要进行全面的版本兼容性测试,特别是跨不同Kubernetes版本的情况
- 配置管理:对于由平台管理的系统组件,需要确保配置模板的正确性和一致性
- 监控机制:建立有效的监控机制,及时发现和诊断类似组件健康状态异常的问题
对于使用受影响版本的用户,建议升级到包含修复的后续版本,以确保集群网络功能的稳定性。
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考