本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes 1.23:雙堆疊 IPv4/IPv6 網路功能達到 GA

「Kubernetes 何時會有 IPv6?」自從 k8s v1.9 中首次新增對 IPv6 的 alpha 支援以來,這個問題被問及的頻率越來越高。雖然 Kubernetes 自 v1.18 以來一直支援僅限 IPv6 的叢集,但在那時從 IPv4 遷移到 IPv6 仍然不可能。終於,雙堆疊 IPv4/IPv6 網路已在 Kubernetes v1.23 中達到正式發行 (GA)。

雙堆疊網路對您意味著什麼?讓我們看看…

服務 API 更新

服務在 1.20 之前是單堆疊的,因此使用兩個 IP 系列意味著每個 IP 系列建立一個服務。當服務在 1.20 中重新實作以允許兩個 IP 系列時,使用者體驗得到了簡化,這意味著單一服務可以處理 IPv4 和 IPv6 工作負載。在運行任何 IPv4 和 IPv6 組合的服務之間,雙堆疊負載平衡是可能的。

服務 API 現在具有支援雙堆疊的新欄位,取代了單一 ipFamily 欄位。

  • 您可以透過將 ipFamilyPolicy 設定為三個選項之一來選擇您的 IP 系列:SingleStack、PreferDualStack 或 RequireDualStack。服務可以在單堆疊和雙堆疊之間更改(在某些限制內)。
  • ipFamilies 設定為已指派系列清單,可讓您設定使用的系列順序。
  • clusterIPs 包含先前的 clusterIP,但允許多個條目,因此不再需要運行重複的服務,每個 IP 系列一個。相反,您可以在兩個 IP 系列中指派叢集 IP 位址。

請注意,Pod 也支援雙堆疊。對於給定的 Pod,不可能在同一個系列中設定多個 IP 位址。

預設行為仍然是單堆疊

從 1.20 開始,隨著雙堆疊服務重新實作為 alpha 版本,Kubernetes 的底層網路已經包含雙堆疊,無論叢集是否使用功能標誌配置為啟用雙堆疊。

Kubernetes 1.23 移除了該功能標誌,作為將該功能升級到穩定的過程的一部分。如果您想配置,雙堆疊網路始終可用。您可以將您的叢集網路設定為作為單堆疊 IPv4、單堆疊 IPv6 或雙堆疊 IPv4/IPv6 運行。

雖然服務根據您的配置進行設定,但 Pod 預設為 CNI 外掛程式設定的任何內容。如果您的 CNI 外掛程式指派單堆疊 IP,除非 ipFamilyPolicy 指定 PreferDualStack 或 RequireDualStack,否則您將擁有單堆疊。如果您的 CNI 外掛程式指派雙堆疊 IP,pod.status.PodIPs 預設為雙堆疊。

即使雙堆疊是可能的,但並非強制使用。文件中的範例顯示了 雙堆疊服務配置中可能的多樣性。

立即試用雙堆疊

雖然上游 Kubernetes 現在支援 雙堆疊網路作為 GA 或穩定功能,但每個供應商對雙堆疊 Kubernetes 的支援可能會有所不同。節點需要配置可路由的 IPv4/IPv6 網路介面。Pod 需要是雙堆疊的。網路外掛程式是將 IP 位址指派給 Pod 的程式,因此是叢集使用的網路外掛程式需要支援雙堆疊。一些容器網路介面 (CNI) 外掛程式支援雙堆疊,kubenet 也是如此。

雙堆疊的生態系統支援正在增加;您可以使用 kubeadm 建立雙堆疊叢集,嘗試使用 KIND 在本地建立雙堆疊叢集,並在雲端供應商中部署雙堆疊叢集(在檢查 CNI 或 kubenet 可用性的文件之後)。

參與 SIG Network

SIG-Network 希望從社群在雙堆疊網路方面的經驗中學習,以了解更多關於不斷發展的需求和您的使用案例。來自 KubeCon NA 2021 的 SIG-network 更新影片總結了 SIG 最近的更新,包括雙堆疊在 1.23 版本中達到穩定。

GitHub 上目前的 SIG-Network KEP問題說明了 SIG 的重點領域。雙堆疊 API 伺服器是一個可以考慮貢獻的地方。

SIG-Network 會議是一個友善、歡迎的場所,讓您可以與社群聯繫並分享您的想法。期待收到您的來信!

致謝

雙堆疊網路功能代表了許多 Kubernetes 貢獻者的工作。感謝所有貢獻程式碼、經驗報告、文件、程式碼審查以及介於兩者之間的一切的人。Bridget Kromhout 在 Kubernetes 中的雙堆疊網路中詳細介紹了這項社群努力。Tim Hockin 和 Khaled (Kal) Henidak 在 2019 年 (IPv4/IPv6 雙堆疊 Kubernetes 的漫長道路) 和 Lachlan Evenson 在 2021 年 (我們開始了:Kubernetes 中的雙堆疊網路) 的 KubeCon 主題演講談到了雙堆疊之旅,歷時五年和大量的程式碼。