什麼是 Kubernetes (K8s) 叢集?

對於建構及部署新型應用程式的企業開發人員來說,大規模管理容器化工作負載是一項常見的難題。Kubernetes (通常簡稱為 K8s) 已成為容器自動調度管理的標準解決方案。Kubernetes 叢集是這個強大開放原始碼系統的核心,提供完善的環境,可自動處理容器化應用程式的部署、資源調度及管理作業。

Kubernetes 叢集
Kubernetes 叢集圖

Kubernetes 叢集的定義

Kubernetes 叢集由一組節點或機器組合而成,用來執行容器化應用程式,且提供簡化的統合式運算環境,能讓您部署及管理服務,不必直接與個別伺服器互動。

K8s 叢集的主要作用是自動調度管理容器:自動執行複雜的工作,包括維持應用程式可用性、根據需求調度資源,以及推出更新並確保系統不停機。

Kubernetes 叢集會管理容器的整個生命週期,提供必要的基礎平台,協助企業應用程式展現絕佳的靈活度和擴充性。

節點

節點是 Kubernetes 叢集中的 worker 機器,可以是雲端供應商提供的虛擬機器 (VM),也可以是資料中心的實體伺服器。每個節點都會提供執行容器所需的 CPU、記憶體和網路資源。K8s 叢集由控制層和一或多個 worker 節點組成,這些元件共同提供叢集的運算資源。

Pod

在 Kubernetes 物件模型中,最小且最基本的可部署單位是 Pod。Pod 代表叢集內某個作用中程序的一個執行個體,內含一或多個緊密耦合的容器、共用儲存空間資源和專屬網路 IP 位址。雖然一個 Pod 可以包含多個容器,但最常見的模式是一個 Pod 只容納一個容器,在 Pod 和容器化應用程式之間形成一對一的對應關係。

容器

容器是獨立且可執行的輕量型軟體套件,內含執行應用程式所需的一切:程式碼、執行階段、系統工具、系統程式庫和設定。這種封裝方式可確保應用程式能在不同運算環境中迅速穩定地執行。容器具備「可攜」和「高效率」的特性,因此非常適合做為現代微服務型應用程式的建構模塊。

K8s 叢集架構

Kubernetes 叢集架構包含兩種主要元件,可協助建立容錯系統來執行應用程式。

  • 控制層:扮演大腦的角色,負責管理叢集。
  • worker 節點:提供執行階段環境,扮演執行者的角色。

控制層 (主要節點)

控制層負責確保整個叢集維持在所需狀態,會做出全局性的排程決定、回應叢集事件,並管理所有 Kubernetes 物件的生命週期。控制層的主要元件包括:

  • 後端儲存庫 (etcd):這個一致且可用性高的鍵/值儲存庫,主要用來做為 Kubernetes 的後端儲存庫,存放所有叢集資料。
  • API 伺服器 (kube-apiserver):做為控制層的前端,做為 Kubernetes API 對外的存取介面,負責管理及驗證 REST 要求,然後更新 etcd 中相關物件的狀態。
  • 排程器 (kube-scheduler):排程器會監控是否有新建立且未獲派節點的 Pod,然後根據資源可用性、政策和相依性規範選取節點,以便在該節點上執行這類 Pod。
  • 控制器管理工具 (kube-controller-manager) [選用]:這個元件會執行各種控制器程序,調節叢集的狀態。例如,控制器可處理節點故障問題、維持部署的 Pod 數量,以及管理服務端點

worker 節點 (運算節點)

worker 節點是實際執行容器化應用程式的機器。每個節點都由控制層管理,並包含執行 Pod 所需的服務。每個 worker 節點都包含以下核心元件:

  • kubelet:在叢集中每個節點上執行的代理程式。kubelet 會與控制層通訊,確保 Pod 規格中描述的容器持續運作且健康狀態良好。
  • kube-proxy [選用]這個網路 Proxy 會在每個節點上執行,負責維護節點上的網路規則。這些網路規則可讓叢集內外的網路工作階段與 Pod 通訊。
  • 容器執行階段:這類軟體可管理容器的執行作業,並支援各種執行階段,其中 containerd 是較為熱門的選擇。

在 K8s 中使用叢集

Kubernetes 叢集用途廣泛,可解決企業開發和營運團隊面臨的許多難題。

將現有應用程式容器化

將舊版應用程式移至容器,即可提升可攜性、擴充性和資源使用率,不必大幅重構。

建構新的雲端原生應用程式

以 K8s 叢集做為微服務架構的基礎,讓各項服務能獨立開發、部署及擴充。

DevOps 與 CI/CD

將建構、測試和部署管道與 Kubernetes 叢集整合,自動執行這些作業,縮短發布週期並提升可靠性。

擴充性與韌性

自動擴充或縮減應用程式資源,處理變化不定的流量負載,還會自動重新啟動或替換故障容器,提供自我修復機制。

資源效率

將容器更密集地封裝至較少的節點,提高基礎架構使用率,進而大幅節省成本。


透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。

Kubernetes 叢集管理

雖然 Kubernetes 的功能非常強大,但要設定及執行正式環境等級的安全 K8s 叢集,往往須承受龐大的作業負擔。在這種情況下,Google Kubernetes Engine (GKE) 等代管服務就能為企業團隊帶來極大的價值。GKE 可自動執行許多複雜且耗時的工作,有助於簡化 Kubernetes 叢集管理作業。

GKE 可提供全代管控制層、確保可用性,並處理修補及更新作業,團隊不必耗費心力在這些工作上。不僅如此,這項服務還提供 Autopilot 模式等功能,可自動執行整個叢集的營運管理作業 (包括節點和資源調度),進一步減少負擔並充分提升資源使用效率。有了 GKE,開發人員就能專心編寫程式碼和建構應用程式,平台會處理底層的 Kubernetes 叢集架構和基礎架構,確保系統安全、可靠且可靈活擴充。

Kubernetes 叢集學習資源