叢集網路
網路是 Kubernetes 的核心部分,但要確切理解其預期運作方式可能具有挑戰性。有 4 個不同的網路問題需要解決
Kubernetes 的核心概念是在應用程式之間共用機器。通常,共用機器需要確保兩個應用程式不會嘗試使用相同的埠。跨多個開發人員協調埠非常難以大規模進行,並且會讓使用者面臨超出其控制範圍的叢集層級問題。
動態埠分配為系統帶來許多複雜性 - 每個應用程式都必須將埠作為標誌,API 伺服器必須知道如何將動態埠號碼插入組態區塊,服務必須知道如何找到彼此等等。Kubernetes 並非處理這些問題,而是採用不同的方法。
若要了解 Kubernetes 網路模型,請參閱這裡。
Kubernetes IP 位址範圍
Kubernetes 叢集需要從以下元件中設定的可用的位址範圍,為 Pod、服務和節點分配不重疊的 IP 位址
- 網路外掛程式已設定為將 IP 位址指派給 Pod。
- kube-apiserver 已設定為將 IP 位址指派給服務。
- kubelet 或 cloud-controller-manager 已設定為將 IP 位址指派給節點。
叢集網路類型
Kubernetes 叢集,根據設定的 IP 系列,可以分為
- 僅限 IPv4:網路外掛程式、kube-apiserver 和 kubelet/cloud-controller-manager 設定為僅指派 IPv4 位址。
- 僅限 IPv6:網路外掛程式、kube-apiserver 和 kubelet/cloud-controller-manager 設定為僅指派 IPv6 位址。
- IPv4/IPv6 或 IPv6/IPv4 雙堆疊
- 網路外掛程式已設定為指派 IPv4 和 IPv6 位址。
- kube-apiserver 已設定為指派 IPv4 和 IPv6 位址。
- kubelet 或 cloud-controller-manager 已設定為指派 IPv4 和 IPv6 位址。
- 所有元件必須就設定的主要 IP 系列達成一致。
Kubernetes 叢集僅考量 Pod、服務和節點物件上存在的 IP 系列,而與所表示物件的現有 IP 無關。例如,伺服器或 Pod 的介面上可以有多個 IP 位址,但只有 node.status.addresses
或 pod.status.ips
中的 IP 位址會被考量用於實作 Kubernetes 網路模型和定義叢集類型。
如何實作 Kubernetes 網路模型
網路模型由每個節點上的容器執行階段實作。最常見的容器執行階段使用容器網路介面 (CNI) 外掛程式來管理其網路和安全性功能。許多不同的 CNI 外掛程式來自許多不同的供應商。其中一些僅提供新增和移除網路介面的基本功能,而另一些則提供更複雜的解決方案,例如與其他容器編排系統整合、執行多個 CNI 外掛程式、進階 IPAM 功能等。
請參閱此頁面,以取得 Kubernetes 支援的網路附加元件的非詳盡清單。
下一步
網路模型的早期設計及其原理在網路設計文件中有更詳細的描述。如需旨在改進 Kubernetes 網路的未來計畫和一些正在進行的工作,請參閱 SIG-Network KEP。