View a markdown version of this page

設定混合節點閘道的 CNI - Amazon EKS

協助改進此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定混合節點閘道的 CNI

Amazon EKS 混合節點閘道需要特定的 Cilium 組態,才能在 VPC 和混合節點之間啟用 VXLAN 型連線。您必須啟用 Cilium VTEP (VXLAN 通道端點) 支援並停用 L7 代理。

先決條件

注意

僅下列最低 EKS Cilium 版本支援 Cilium VTEP:

  • Cilium 1.17.13-1 或更新版本

  • Cilium 1.18.8-1 或更新版本

  • Cilium 1.19.2-1 或更新版本

如果您執行的是較舊的版本,請在啟用 VTEP 之前升級 Cilium。如需升級說明,請參閱 設定混合節點的 CNI

啟用 VTEP 和停用 L7 代理

設定 Cilium 版本並執行 helm upgrade命令以啟用 VTEP,並在您現有的 Cilium 安裝上停用 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

必要設定

設定 Value Description

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 會將來源 NAT (SNAT) 套用至離開節點的所有 Pod 流量。為了確保具有混合 Pod 端點的 Kubernetes ClusterIP 服務能從雲端節點正常運作,請從 SNAT 中排除混合 Pod CIDRs。這可讓 kube-proxy DNAT 的流量正確使用 VPC 路由。

aws-node DaemonSet 上的AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS環境變數設定為您的混合 Pod CIDR (s):

kubectl set env daemonset aws-node -n kube-system \ AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS=POD_CIDRS

將值取代為您實際的混合 CIDRs (如果是多個,則以逗號分隔)。

此設定會將混合 Pod CIDRs 新增至 VPC CNI 的 ip 規則,讓目的地為混合 Pod 的流量透過主路由表路由,其中包含通往閘道 ENI 的 VPC 路由。

注意

從雲端 Pod 到混合 Pod 端點的 ClusterIP 服務流量需要此步驟。依 IP 地址的直接 pod-to-pod 連線可在沒有此設定的情況下運作。

後續步驟

設定 Cilium 和 VPC CNI 之後,請繼續安裝混合節點閘道。請參閱EKS 混合節點閘道入門