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社区的持续优化,未来这些配置可能会变得更加简单。但目前提供的解决方案已经过实际验证,可以作为生产环境部署的参考。
ERNIE-4.5-VL-28B-A3B-ThinkingERNIE-4.5-VL-28B-A3B-Thinking 是 ERNIE-4.5-VL-28B-A3B 架构的重大升级,通过中期大规模视觉-语言推理数据训练,显著提升了模型的表征能力和模态对齐,实现了多模态推理能力的突破性飞跃Python00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
MiniMax-M2MiniMax-M2是MiniMaxAI开源的高效MoE模型,2300亿总参数中仅激活100亿,却在编码和智能体任务上表现卓越。它支持多文件编辑、终端操作和复杂工具链调用Python00
HunyuanVideo-1.5HunyuanVideo-1.5作为一款轻量级视频生成模型,仅需83亿参数即可提供顶级画质,大幅降低使用门槛。该模型在消费级显卡上运行流畅,让每位开发者和创作者都能轻松使用。本代码库提供生成创意视频所需的实现方案与工具集。00
MiniCPM-V-4_5MiniCPM-V 4.5 是 MiniCPM-V 系列中最新且功能最强的模型。该模型基于 Qwen3-8B 和 SigLIP2-400M 构建,总参数量为 80 亿。与之前的 MiniCPM-V 和 MiniCPM-o 模型相比,它在性能上有显著提升,并引入了新的实用功能Python00
GOT-OCR-2.0-hf阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00