本文說明開放原始碼容器編排平台 Kubernetes 的基本原理。Google Distributed Cloud (GDC) 實體隔離方案的許多元件都以 Kubernetes 為基礎,因此許多說明文件會假設您已熟悉 Kubernetes 的基本概念和術語。如果您不熟悉 Kubernetes,請參閱這份文件,瞭解建議閱讀的內容,以便開始使用。
如要設計、部署及管理 GDC 應用程式和基礎系統元件,就必須瞭解 Kubernetes 基礎知識。下列技術專業人員必須瞭解 Kubernetes,才能順利運作 GDC:
- 基礎架構操作人員群組中的操作人員,負責安裝及維護底層 GDC 軟硬體基礎架構。
- 平台管理員群組中的管理員,負責在 GDC 上設計彈性基礎架構和應用程式架構。
- 應用程式運算子群組中的開發人員,負責建構應用程式。
詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。
關於 Kubernetes
Kubernetes 是開放原始碼的容器自動化調度管理平台,Kubernetes 叢集的核心是一組稱為「節點」的工作站機器,用來執行容器化應用程式。整個叢集由控制層管理,包括 API 伺服器、排程器和 etcd 資料庫等元件,負責維護叢集狀態。
應用程式會封裝到 Pod 中,Pod 是 Kubernetes 中最小的可部署單位,可包含一或多個容器,並在節點上執行。Kubernetes 會使用命名空間,在叢集內整理資源,通常是為了不同的團隊或環境。
Pod 的生命週期和狀態是由控制器管理。舉例來說,Deployment 物件會管理滾動更新,而 ReplicaSet 物件則會確保特定數量的 Pod 副本正在執行。為提供穩定的網路端點 (例如用於存取 Pod 的 IP 位址和 DNS 名稱),Kubernetes 會使用服務。
由於容器儲存空間預設為暫時性,Kubernetes 提供各種儲存空間抽象化機制,例如磁碟區和永久磁碟區,可管理資料。
為確保叢集資源和 Kubernetes API 的存取安全,Kubernetes 會使用角色式存取控管 (RBAC) 定義角色、叢集角色和繫結,授予使用者和服務帳戶特定權限。
基本概念
以下是我們在 GDC 說明文件中使用的幾個重要概念。這份清單並未列出所有 Kubernetes 概念。如要進一步閱讀及探索,請參閱 Kubernetes 說明文件和建議閱讀內容中的主題。
節點和叢集
所有 Kubernetes 工作負載都會在節點上執行。在 GDC 中,節點是虛擬機器 (VM)。在其他 Kubernetes 平台上,節點可以是實體或虛擬機器。每個節點都由 Kubernetes 控制層管理,並具備執行 Pod 的所有必要元件。「叢集」是一組可做為單一實體處理的節點,您可以在其中部署容器化應用程式。
詳情請參閱 Kubernetes 說明文件:
Kubernetes 控制層
Kubernetes「控制層」是一組系統元件,可管理叢集的整體狀態,包括「Kubernetes API 伺服器」,讓您使用 kubectl CLI 和其他工具與叢集和應用程式互動;「排程器」,可在可用節點上排程 Pod;以及「控制器」,可追蹤及管理叢集狀態。控制層由 GDC 提供及管理。
詳情請參閱 Kubernetes 的控制層元件說明文件。
Pod
在 Kubernetes 中,容器化應用程式會在 Pod 內執行。Pod 是最小的可部署運算單元,可在 Kubernetes 中建立及管理。一個 Pod 包含一或多個「容器」。如果 Pod 執行多個容器 (例如應用程式伺服器和 Proxy 伺服器),系統會將這些容器視為單個實體進行管理,這些容器也共用 Pod 的資源。
詳情請參閱 Kubernetes 說明文件:
命名空間
Kubernetes 命名空間提供機制,可進一步分組及選取叢集內的資源,例如 Pod 和服務。舉例來說,如果有多個應用程式團隊在單一叢集上執行工作負載。
詳情請參閱 Kubernetes 的「命名空間」說明文件。
控制器
Kubernetes 控制器會根據您指定的狀態 (例如「我想在這個叢集上執行三個這個 Pod,每個 Pod 都有這個容器」),追蹤及管理叢集和工作負載的狀態。不同的控制器會追蹤不同的 Kubernetes 資源類型,包括:
Kubernetes 控制器會根據您指定的狀態,追蹤及管理叢集和工作負載的狀態。舉例來說,您可以設定叢集的行為,讓叢集執行三個 Pod,每個 Pod 都有指定的容器。不同的控制器會追蹤不同的 Kubernetes 資源類型,包括:
- 部署:
Deployment自訂資源是 Kubernetes 物件,代表一或多個相同的 Pod,稱為「副本」。Deployment 會在叢集的節點之間,執行多個 Pod 副本。Deployment 會自動取代失敗或無法回應的 Pod。 - StatefulSet:
StatefulSet自訂資源類似於 Deployment,但會為每個 Pod 維護專屬的永久身分。StatefulSet資源在具有永續性狀態的應用程式中非常實用,例如有狀態的應用程式。 - DaemonSet:
DaemonSet自訂資源可讓您將預設 Pod 新增至部分或所有節點。這些通常是工作負載的輔助服務,例如記錄收集 Daemon 或監控 Daemon。 - ReplicaSet:
ReplicaSet自訂資源是一組相同的 Pod。ReplicaSet通常會做為Deployment資源的一部分進行管理。
詳情請參閱 Kubernetes 說明文件:
Kubernetes 服務
根據預設,您無法控制 Pod 在哪個叢集節點上執行,因此 Pod 沒有穩定的 IP 位址。如要取得在 Kubernetes 中執行的應用程式 IP 位址,您必須在 Pod 上方定義網路抽象化,也就是 Kubernetes 服務。Kubernetes Service 會為一組 Pod 提供穩定的網路端點。有多種服務類型,包括 LoadBalancer 服務,可公開外部 IP 位址,讓您從叢集外部連上應用程式。
Kubernetes 也有內建的 DNS 系統,可解析內部位址,並為服務指派 DNS 名稱,例如 helloserver.default.cluster.local。這樣一來,叢集中的 Pod 就能使用穩定位址連線至叢集中的其他 Pod。您無法在叢集外部使用這個 DNS 名稱,例如從 gdcloud CLI。
詳情請參閱 Kubernetes 服務說明文件。
儲存空間
如果應用程式需要儲存超出 Pod 生命週期的資料 (例如在有狀態的應用程式中),可以使用 Kubernetes PersistentVolume 物件佈建這類儲存空間。您也可以選擇使用暫時性儲存空間,這類儲存空間會在對應的 Pod 終止時遭到毀損。
詳情請參閱 Kubernetes 說明文件:
角色型存取權控管
Kubernetes 內建角色型存取權控管 (RBAC) 機制,可讓您建立授權政策,控管叢集及其資源的存取權。使用 GDC 時,您通常會結合 Kubernetes RBAC 和 GDC 的 Identity and Access Management (IAM),確保應用程式安全無虞。
詳情請參閱 Kubernetes 的角色型存取權控管說明文件。
推薦參考資源
本節提供建議資源的連結,方便您進一步瞭解 Kubernetes。尤其是 Kubernetes 官方網站 Kubernetes.io,提供有關 Kubernetes 的全面可靠資料。
外部指南和教學課程
- Kubernetes 總覽:Kubernetes 的完整概念總覽。
- 教學課程:瞭解 Kubernetes 基礎知識: 透過範例瞭解 Kubernetes 基礎知識。
- Kubernetes 教學課程:準備好進階學習時,Kubernetes 文件的這個部分提供各種 Kubernetes 主題的教學課程,從有狀態的應用程式到安全性都有。
參考說明文件
- Kubernetes 詞彙表:Kubernetes 術語的完整標準化清單。如果不確定 Kubernetes 術語的含義,請參閱詞彙表。