Kubernetes 網路概觀
節點
我們通常會看到稱為叢集的 Kubernetes。 概括來說,叢集指的是一組協同工作的電腦,可共用資源來提升效能及可用性。 當叢集中的任何電腦故障時,叢集上執行的服務可以繼續在其餘正常運作的電腦上執行。
在 Microsoft Azure 中,這些電腦稱為虛擬機器 (VM)。 在 Kubernetes 中,這些 VM 稱為節點。
節點需要網路連線能力來讓彼此通訊,以及有效地路由網路流量。 節點也需要與 Kubernetes 控制平面通訊,以提供核心 Kubernetes 服務和協調應用程式工作負載,以利執行您的應用程式工作負載資源。
Pod
在 Kubernetes 中,應用程式工作負載資源包括 Pod、部署和集合。 Pod 是 Kubernetes 叢集中最小的可部署單位。 這些資源會以最佳方式分散到您的節點,以充分利用節點上可用的處理器和記憶體資源。 Pod 通常代表應用程式的單一執行個體或子元件。 Pod 可執行購物車元件來管理客戶購物車中的項目,或執行購物元件來處理已完成的訂單。
您可以執行多個相同 Pod 的副本 (也稱作「複本」)。 複本會將多個 Pod 分散到節點上以提供高可用性。 利用 Pod 的多個複本,當 Pod 中執行的元件失效時,應用程式依然可以繼續運作。
透過 Kubernetes 中的縮放功能,您可以新增或移除 Pod 來回應叢集的需求層級。 Kubernetes 中的自我修復功能可以取代任何失效的 Pod,而內建的滾動更新支援會自動部署新版應用程式,且不需要停機。
Pod 會在初始部署期間指派新的 IP 位址。 此 IP 位址用於與 Pod 進行所有網路通訊。 許多情況下,會為 Pod 指派一個新的 IP 位址。 當叢集需求很高且發生擴充時,就會部署新的 Pod。 更新應用程式時,則會部署新的 Pod 來取代舊的 Pod。 如果 Pod 失敗,新的 Pod 會自動加以取代。 所有這些情節都會導致產生新的 Pod IP 位址。
如果 Pod IP 位址頻繁地變更,Kubernetes 要如何知道傳送網路流量的位置,進而連線到應用程式? 答案是服務。
服務
Kubernetes 服務位於 Pod 群組前方,並且會提供一個靜態 IP 位址。 當流量抵達服務時,服務會以循環配置的方式將其分給後端的 Pod 群組。 服務會追蹤 Pod IP 位址中的變更,以確保網路流量會傳送至正確的 Pod。