Azure AKS 节点使用 Ubuntu2204 镜像无法加入集群问题分析
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
问题现象
在 Azure Kubernetes Service (AKS) 环境中,当用户尝试使用 Ubuntu2204 镜像系列的最新版本创建节点时,发现这些节点无法成功加入 Kubernetes 集群。该问题主要出现在 AKS 1.28.9 版本中。
问题根源
经过技术分析,确定问题出在节点初始化过程中执行的一个关键脚本 /opt/azure/containers/ensure_imds_restriction.sh
。该脚本在运行时缺少必要的环境变量配置,导致执行失败。
具体表现为 kubelet 服务文件中缺少关键环境变量:
Environment="PRIMARY_NIC_IP=10.117.0.121"
Environment="ENABLE_IMDS_RESTRICTION="
Environment="INSERT_IMDS_RESTRICTION_RULE_TO_MANGLE_TABLE="
影响范围
该问题主要影响以下配置:
- 使用 Ubuntu2204 镜像系列的最新版本(202409.13.0)
- 通过 Node Auto Provisioning (如 Karpenter) 自动创建的节点
- 主要报告出现在西欧区域
临时解决方案
作为临时解决方案,用户可以将节点镜像系列从 Ubuntu2204 切换为 AzureLinux,这可以绕过该问题。
根本解决方案
开发团队已经识别并修复了该问题。修复包含在以下更新中:
- 对于基础镜像问题,修复已包含在 AgentBaker 项目的 PR 4944 中
- 对于 Karpenter 用户,修复包含在 Azure Karpenter Provider 的 0.5.4 版本中
最佳实践建议
对于生产环境,建议:
- 定期检查节点镜像版本更新
- 在非生产环境先测试新镜像版本
- 考虑使用 AzureLinux 作为更稳定的替代方案
- 保持 Karpenter 等自动扩展工具更新到最新版本
该问题的修复已经发布,用户可以通过更新相关组件来解决问题。
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考