AKS 1.29.2版本中Redis容器存活探针异常问题分析与解决
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
在Azure Kubernetes Service(AKS)1.29.2版本中,部分用户报告了Redis容器存活探针(Liveness Probe)间歇性失败的异常现象。这个问题表现为Redis Pod的健康检查会随机出现超时错误,导致容器被重启,影响服务稳定性。
问题现象
用户在使用Bitnami Redis Helm Chart部署Redis集群时发现,存活探针会间歇性失败,错误信息显示为"command timed out"。具体表现为:
- 探针配置为执行一个shell脚本,通过redis-cli发送PING命令来检查Redis服务状态
- 失败频率大约为每小时1-2次,没有明显规律
- 在相同配置的AKS 1.26.3环境中运行完全正常
- 直接进入容器手动执行检查命令却无法复现问题
根本原因分析
经过深入排查,发现这个问题与容器运行时containerd的特定版本有关。具体表现为:
- 问题环境中containerd版本为1.7.14-1
- 正常环境中containerd版本为较旧的1.7.1+azure-1
- 这与containerd社区报告的一个已知问题相关,该问题会导致容器内进程间通信偶尔出现延迟
解决方案
AKS团队已经发布了包含修复的节点镜像版本AKSUbuntu-2204gen2containerd-202404.09.0。用户可以通过以下步骤解决问题:
- 升级节点池到最新镜像版本
- 确保所有节点都运行修复后的containerd版本
- 对于已经出现问题的Pod,可以手动删除重建以快速恢复
经验总结
这个问题给我们提供了几个重要的运维经验:
- 容器运行时版本对应用稳定性有直接影响,即使是小版本升级也可能引入问题
- 健康检查机制虽然重要,但过于敏感的配置可能放大底层问题
- 在Kubernetes升级过程中,应该关注核心组件(如containerd)的版本变化
- 对于关键业务系统,建议在测试环境充分验证新版本后再进行生产部署
通过这次事件,我们再次认识到容器生态系统中各组件版本兼容性的重要性,以及及时应用安全更新的必要性。AKS团队对这类问题的快速响应也展示了云服务商在维护平台稳定性方面的专业能力。
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考