我想設定 Amazon 虛擬私有雲端 (VPC) 容器網路介面 (CNI) 外掛程式搭配使用 VPC 子網路中的 IP 位址控制編號與 Amazon Elastic Kubernetes Service (Amazon EKS)。
簡短描述
Amazon VPC CNI 的主要元件之一是將 IP 位址分配給節點的 L-IPAM 常駐程式。
如果在節點上排定新 Pod,則容器執行時期會調用 CNI 二進位檔案。CNI 二進位檔案會呼叫 L-IPAMD 以獲取新 Pod 的 IP 位址。然後,Pod 會追蹤附加至執行個體的彈性網路介面和 IP 位址。
您可以使用特定組態變數來控制維護的網路介面和 IP 位址數量。如需詳細資訊,請參閱 GitHub 網站上的 WARM_ENI_TARGET、WARM_IP_TARGET 和 MINIMUM_IP_TARGET 以及 WARM_PREFIX_TARGET、WARM_IP_TARGET 和 MINIMUM_IP_TARGET。
解決方法
以下是控制網路介面和 IP 位址維護的每個組態變數的最佳做法。
WARM_ENI_TARGET
使用 WARM\ _ENI\ _TARGET 變數確定 L-IPAMD 保持多少個可用的彈性網路介面。這是為了在節點上進行排程時,可以立即指派 Pod 的 IP 位址。
以下是 WARM_ENI_TARGET 的最佳做法:
- 檢查工作節點執行個體類型,以及每個介面的網路介面和私有 IPv4 位址數目上限。這可防止可用的子網路 IP 位址耗盡。
- 如果您希望您的應用程式大幅擴展,請使用 WARM_ENI_TARGET 快速容納新排定的 Pod。
WARM_IP_TARGET
使用 WARM\ _IP\ _TARGET 變數確保您在 L-IPAMD 的溫暖池中始終擁有定義數量的可用 IP 位址。
以下是 WARM_IP_TARGET 的最佳做法:
- 對於生產力低的叢集,請使用 WARM\ _IP\ _TARGET。這表示只會指定所需數量的 IP 位址給網路介面。
- 請勿對大型叢集使用此設定,或在叢集具有高 Pod 轉換率時也不要使用。此設定可造成對 Amazon Elastic Compute Cloud (Amazon EC2) API 的額外呼叫,並且可以對請求限流。使用 WARM_IP_TARGET 時,設定 MINIMUM_IP_TARGET 是最佳做法。
- 設定 MINIMUM_IP_TARGET 時,WARM_IP_TARGET 大於 0 是最佳做法。
MINIMUM_IP_TARGET
使用 MINIMUM_IP_TARGET 確保在建立節點時為其指派數量最少的 IP 位址。此變數一般與 WARM_IP_TARGET 變數一起使用。
以下是 MINIMUM_IP_TARGET 的最佳做法:
- 如果您知道要執行每個節點的最小 Pod 數量,請使用 MINIMUM_IP_TARGET。這可確保指派所需數量的 IP 位址。
- 使用 WARM_IP_TARGET 設定此變數,以確保節點上有可用於未來 Pod 的 IP 位址。
WARM_PREFIX_TARGET
使用 WARM\ _PREFIX\ _TARGET 變數,確保您始終向執行個體的網路介面加入定義數量的字首 (/28 CIDR 區塊)。您只能對 CNI 1.9.0 或更高版本使用 WARM_PREFIX_TARGET,並且必須啟用 Amazon VPC CNI 位址字首指派功能。
以下是 WARM_PREFIX_TARGET 的最佳做法:
-
如果使用 IP 位址字首指派,請確保 WARM_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."
-
對於較小的子網路,請使用 WARM_IP_TARGET 搭配 WARM_PREFIX_TARGET。這樣可避免分配過多消耗可用 IP 位址的字首。
若要深入瞭解這些組態變數如何影響 IP 位址使用率,請參閱 GitHub 網站上的 CNI 組態變數。