Amazon EKS优化AMI在AL2023上运行Cilium的网络路由问题分析与解决方案
背景介绍
Amazon EKS优化AMI是AWS为Kubernetes集群节点提供的官方镜像。随着Amazon Linux 2023(AL2023)的发布,AWS推出了基于AL2023的EKS优化AMI。然而,在使用这个新镜像配合Cilium CNI插件时,用户遇到了一些网络路由方面的挑战。
问题现象
当在AL2023上部署Cilium时,主要出现了两类问题:
-
节点引导问题:使用Terraform EKS模块时,
nodeadm
无法正确解析用户数据配置,导致节点无法加入集群。 -
网络路由冲突:系统出现两个默认路由,分别通过
ens5
和ens6
接口,导致Cilium代理启动失败,错误提示发现多个具有相同优先级的默认路由。
技术分析
节点引导问题
这个问题源于nodeadm
工具对用户数据格式的严格要求。在AL2023上,nodeadm
期望用户数据采用特定的YAML格式:
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
cluster:
name: ${cluster_name}
apiServerEndpoint: ${cluster_endpoint}
certificateAuthority: ${cluster_auth_base64}
cidr: ${cluster_service_ipv4_cidr}
如果格式不正确或缺少必要字段(特别是cidr
),nodeadm-config.service
将无法启动,导致节点无法加入集群。
网络路由问题
更复杂的是网络路由问题。AL2023使用systemd-networkd
进行网络配置,其默认行为会为所有接口设置相同的路由优先级(metric=1024)。当Cilium创建并附加新的ENI(如ens6
)时,系统会出现两个具有相同优先级的默认路由:
default via x.x.x.x dev ens5 proto dhcp src x.x.x.x metric 1024
default via y.y.y.y dev ens6 proto dhcp src y.y.y.y metric 1024
这种配置违反了Cilium对单一默认路由的假设,导致代理启动失败。
解决方案
节点引导问题解决
对于节点引导问题,有两种解决方案:
-
使用正确的YAML模板:通过
user_data_template_path
参数提供符合要求的YAML配置。 -
更新Terraform EKS模块:v20.5.0及以上版本已添加对AL2023的支持,可以正确处理节点引导。
网络路由问题解决
针对网络路由冲突,最有效的解决方案是调整主接口的路由优先级:
- 创建自定义网络配置:在节点启动时,为
ens5
接口创建专门的网络配置:
[Match]
Name=ens5
[Network]
DHCP=yes
[DHCP]
RouteMetric=1000
- 应用配置并重启网络服务:
cat > /etc/systemd/network/05-ens5.network << EOF
[Match]
Name=ens5
[Network]
DHCP=yes
[DHCP]
RouteMetric=1000
EOF
systemctl restart systemd-networkd.service
这样配置后,路由表将变为:
default via x.x.x.x dev ens5 proto dhcp src x.x.x.x metric 1000
default via y.y.y.y dev ens6 proto dhcp src y.y.y.y metric 1024
通过降低主接口的路由优先级,确保系统始终优先使用ens5
作为默认路由,解决了Cilium的兼容性问题。
最佳实践建议
- 统一网络接口管理:对于Cilium管理的接口,建议配置
Unmanaged=yes
以避免systemd-networkd
干扰:
[Match]
Name=!ens5
[Link]
Unmanaged=yes
-
考虑不同实例类型的网络接口命名:AWS不同实例类型可能使用不同的网络接口命名方案(如
ens*
、enp*
等),配置时应考虑全面匹配。 -
监控网络连接:即使解决了路由问题,仍需监控跨ENI的通信,特别是对外部服务的访问。
结论
Amazon EKS优化AMI在AL2023上的部署虽然初期遇到了一些挑战,但通过正确的配置调整完全可以稳定运行Cilium等高级CNI插件。关键在于理解AL2023的网络管理机制与Kubernetes CNI插件的交互方式,并通过适当的优先级调整确保网络流量的正确路由。
随着AWS和Cilium社区的持续优化,未来这些配置可能会变得更加简单。但目前提供的解决方案已经过实际验证,可以作为生产环境部署的参考。
- DDeepSeek-V3.1-BaseDeepSeek-V3.1 是一款支持思考模式与非思考模式的混合模型Python00
- QQwen-Image-Edit基于200亿参数Qwen-Image构建,Qwen-Image-Edit实现精准文本渲染与图像编辑,融合语义与外观控制能力Jinja00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~044CommonUtilLibrary
快速开发工具类收集,史上最全的开发工具类,欢迎Follow、Fork、StarJava04GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。06GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!C0300- WWan2.2-S2V-14B【Wan2.2 全新发布|更强画质,更快生成】新一代视频生成模型 Wan2.2,创新采用MoE架构,实现电影级美学与复杂运动控制,支持720P高清文本/图像生成视频,消费级显卡即可流畅运行,性能达业界领先水平Python00
- GGLM-4.5-AirGLM-4.5 系列模型是专为智能体设计的基础模型。GLM-4.5拥有 3550 亿总参数量,其中 320 亿活跃参数;GLM-4.5-Air采用更紧凑的设计,拥有 1060 亿总参数量,其中 120 亿活跃参数。GLM-4.5模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求Jinja00
Yi-Coder
Yi Coder 编程模型,小而强大的编程助手HTML013
热门内容推荐
最新内容推荐
项目优选









