帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
为混合节点网关配置 CNI
Amazon EKS 混合节点功能的网关需要特定的 Cilium 配置,才能在 VPC 与混合节点之间启用基于 VXLAN 的连接。您必须启用 Cilium VTEP(VXLAN 隧道端点)支持并禁用 L7 代理。
先决条件
-
Cilium 已安装在混合节点上。有关安装说明,请参阅为混合节点配置 CNI。
注意
Cilium VTEP 仅支持以下 EKS Cilium 最低版本:
-
Cilium 1.17.13-1 或更高版本
-
Cilium 1.18.8-1 或更高版本
-
Cilium 1.19.2-1 或更高版本
如果您运行的是旧版本,请在启用 VTEP 之前升级 Cilium。有关升级说明,请参阅 为混合节点配置 CNI。
启用 VTEP 并禁用 L7 代理
设置 Cilium 版本并运行 helm upgrade 命令,以在现有 Cilium 安装上启用 VTEP 并禁用 L7 代理。您可以在 Amazon ECR Public: eks/cilium/cilium
helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \ --versionCILIUM_VERSION\ --namespace kube-system \ --reuse-values \ --set vtep.enabled=true \ --set l7Proxy=false
升级完成后,重启 Cilium DaemonSet 以应用新配置:
kubectl rollout restart daemonset/cilium -n kube-system kubectl rollout status daemonset/cilium -n kube-system
必需的设置
| 设置 | 值 | 说明 |
|---|---|---|
|
|
|
启用 Cilium 的 VXLAN 隧道端点支持。这允许混合节点上的 Cilium 代理封装发往 VPC 的流量并将其发送到网关。 |
|
|
|
禁用 Cilium 的 L7 代理。这是 VTEP 正常运行所必需的。如果启用 L7 代理,VTEP 流量可能会被拦截并丢弃。 |
验证配置
升级 Cilium 后,验证已启用 VTEP 并禁用 L7 代理:
kubectl get configmap cilium-config -n kube-system -o yaml | grep -E "enable-vtep|enable-l7-proxy"
您应该可以看到类似于以下的输出内容:
enable-l7-proxy: "false" enable-vtep: "true"
为混合容器组(pod)流量配置 VPC CNI
默认情况下,AWS VPC CNI 会对所有离开节点的容器组(pod)流量执行源 NAT(SNAT)。为确保来自云节点的 Kubernetes ClusterIP 服务 [带有混合容器组(pod)端点] 能够正常运行,请将混合容器组(pod)CIDR 从 SNAT 中排除。这允许经过 kube-proxy DNAT 的流量正确使用 VPC 路由。
在 aws-node DaemonSet 上,将 AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS 环境变量设置为混合容器组(pod)CIDR:
kubectl set env daemonset aws-node -n kube-system \ AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS=POD_CIDRS
将该值替换为实际的混合容器组(pod)CIDR(用逗号分隔多个值)。
此设置将混合容器组(pod)CIDR 添加到 VPC CNI 的 IP 规则中,以便发往混合容器组(pod)的流量通过主路由表进行路由,主路由表中包含指向网关 ENI 的 VPC 路由。
注意
对于从云容器组(pod)到混合容器组(pod)端点的 ClusterIP 服务流量,必须执行此步骤。无需此设置,即可通过 IP 地址将容器组(pod)直接连接到容器组(pod)。
后续步骤
配置 Cilium 和 VPC CNI 后,继续安装混合节点网关。请参阅开始使用 EKS 混合节点功能的网关。