View a markdown version of this page

为混合节点网关配置 CNI - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

为混合节点网关配置 CNI

Amazon EKS 混合节点功能的网关需要特定的 Cilium 配置,才能在 VPC 与混合节点之间启用基于 VXLAN 的连接。您必须启用 Cilium VTEP(VXLAN 隧道端点)支持并禁用 L7 代理。

先决条件

注意

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 \ --version CILIUM_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

必需的设置

设置 说明

vtep.enabled

true

启用 Cilium 的 VXLAN 隧道端点支持。这允许混合节点上的 Cilium 代理封装发往 VPC 的流量并将其发送到网关。

l7Proxy

false

禁用 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 混合节点功能的网关