將 Amazon VPC CNI 外掛程式設定為透過 Amazon EKS 在 VPC 子網路中使用 IP 地址的最佳實務是什麼?

上次更新日期:2021 年 11 月 22 日

我想要將 Amazon Virtual Private Cloud (VPC) 容器網路介面 (CNI) 外掛程式設定為在 VPC 子網路中使用 Amazon Elastic Kubernetes Service (Amazon EKS) 中的 IP 地址。最佳實務是什麼?

簡短描述

Amazon VPC CNI 的主要元件之一是 L-IPAM 常駐程式。您可以設定此常駐程式以將 IP 地址分配給節點。

如果在節點上安排了新的 Pod,則 kubelet 將叫用 CNI 二進位檔案。CNI 二進位檔案叫用 L-IPAMD 以取得新 Pod 的 IP 地址。然後,Pod 會追蹤連接到執行個體的彈性網路介面和 IP 地址。

您可以使用某些組態變數來控制維護的網路介面和 IP 地址的數量。如需相關資訊,請參閲 WARM_ENI_TARGET、WARM_IP_TARGET、MINIMUM_IP_TARGETWARM_PREFIX_TARGET、WARM_IP_TARGET 和 MINIMUM_IP_TARGET (來自 GitHub 網站)。

解決方案

以下是使用組態變數控制維護多少個網路介面和 IP 地址的基本最佳實務。

WARM_ENI_TARGET

使用 WARTER_ENI_TARGET 變數可確定 L-IPAMD 保持多少個彈彈性網絡介面可用,以便在節點上安排時立即為 Pod 指派 IP 地址。

  • 要防止子網路中的可用 IP 地址耗盡,請確保檢查工作節點執行個體類型以及每個介面的網路介面和私有 IPv4 地址的最大數量。例如,如果為 m5.xlarge 節點設定了 WART_ENI_TARGET=3,則會始終將三個彈性網絡介面連接到該節點。然後,節點指派 45 個 IP 地址,每個彈性網絡介面 15 個。由於 45 個 IP 地址是為此節點保留的,所以這些地址不能用於排定在其他工作節點上的 Pod。
  • 如果您希望應用程式能夠大幅擴展,則可以使用 WART_ENI_TARGET 快速容納新排定的容器。

WARM_IP_TARGET

使用 WARTI_IP_TARGET 變數可確保 L-IPAMD 的熱集區中始終有一定數量的 IP 地址可用。

  • 對於生產效率低的叢集,請使用 WART_IP_TARGET,以便只為網路介面指派所需數量的 IP 地址。這樣可以防止彈性網絡介面的 IP 地址被阻止。

MINIMUM_IP_TARGET

使用 MIN IMUM_IP_TARGET 可確保在節點最初出現時為該節點指派了最少數量的 IP 地址。此變數通常與 WARM_IP_TARGET 變數一起使用。

  • 如果您知道每個節點將執行的 Pod 的最小數量,請使用 MINIMIMUM_IP_TARGET,以便指派所需的 IP 地址數量。如果 IP 地址隨時可用,則 Pod 可以按計劃接收它們。
  • 使用 WART_IP_TARGET 設定此變數,以確保節點上有可用的 IP 地址以供將來的 Pod 使用。

WARM_PREFIX_TARGET

使用 WART_PREFIX_TARGET 變數可確保始終有一定數量的前綴 (/28 個 CIDR 區塊) 新增至執行個體的網路介面。您只能對 CNI 版本 1.9.0 或更高版本使用 WARM_PREFIX_TARGET,並且必須啟用 Amazon VPC CNI IP 地址前綴指派功能

  • 如果使用 IP 地址前綴指派,請確保將 WART_PREFIX_TARGET 變數設定為大於或等於 1 的值。如果設置為 0,則會收到以下錯誤:
Error: Setting WARM_PREFIX_TARGET = 0 is not supported while WARM_IP_TARGET/MINIMUM_IP_TARGET is not set. 
Please configure either one of the WARM_{PREFIX/IP}_TARGET or MINIMUM_IP_TARGET env variables
  • 對於較小的子網路,請將 WART_IP_目標WARM_PREFIX_TARGET 結合使用,以避免分配過多前綴。分配過多前綴可能會耗盡可用的 IP 地址。

要進一步了解這些組態變數如何影響 IP 地址利用率,請參閲 CNI 組態變數 (來自 GitHub 網站)。


此文章是否有幫助?


您是否需要帳單或技術支援?