

 **帮助改进此页面** 

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

# 为混合节点网关配置 CNI
<a name="hybrid-nodes-gateway-cni"></a>

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

## 先决条件
<a name="hybrid-nodes-gateway-cni-prereqs"></a>
+ Cilium 已安装在混合节点上。有关安装说明，请参阅[为混合节点配置 CNI](hybrid-nodes-cni.md)。

**注意**  
Cilium VTEP 仅支持以下 EKS Cilium 最低版本：  
Cilium 1.17.13-1 或更高版本
Cilium 1.18.8-1 或更高版本
Cilium 1.19.2-1 或更高版本
如果您运行的是旧版本，请在启用 VTEP 之前升级 Cilium。有关升级说明，请参阅 [为混合节点配置 CNI](hybrid-nodes-cni.md)。

## 启用 VTEP 并禁用 L7 代理
<a name="hybrid-nodes-gateway-cni-configure"></a>

设置 Cilium 版本并运行 `helm upgrade` 命令，以在现有 Cilium 安装上启用 VTEP 并禁用 L7 代理。您可以在 [Amazon ECR Public: eks/cilium/cilium](https://gallery.ecr.aws/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
```

## 必需的设置
<a name="hybrid-nodes-gateway-cni-settings"></a>


| 设置 | 值 | 说明 | 
| --- | --- | --- | 
|  `vtep.enabled`  |  `true`  | 启用 Cilium 的 VXLAN 隧道端点支持。这允许混合节点上的 Cilium 代理封装发往 VPC 的流量并将其发送到网关。 | 
|  `l7Proxy`  |  `false`  | 禁用 Cilium 的 L7 代理。这是 VTEP 正常运行所必需的。如果启用 L7 代理，VTEP 流量可能会被拦截并丢弃。 | 

## 验证配置
<a name="hybrid-nodes-gateway-cni-verify"></a>

升级 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
<a name="hybrid-nodes-gateway-cni-vpc-cni"></a>

默认情况下，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）。

## 后续步骤
<a name="hybrid-nodes-gateway-cni-next"></a>

配置 Cilium 和 VPC CNI 后，继续安装混合节点网关。请参阅[开始使用 EKS 混合节点功能的网关](hybrid-nodes-gateway-getting-started.md)。