什麼是 Kubernetes 叢集?

Kubernetes 叢集是一組節點,負責執行容器化應用程式;而容器化應用程式則是將應用程式、其相依性,以及部分必要服務封裝在一起。相較於虛擬機,Kubernetes 叢集不僅更輕量,也更具彈性。正因如此,Kubernetes 叢集可讓應用程式變得更易於開發、移動與管理。

Kubernetes 叢集可讓容器跨越多個虛擬機與環境執行,包括虛擬環境、實體環境、雲端式環境與內部部署環境。Kubernetes 容器與虛擬機不同,不會受限於特定作業系統,不僅可共用作業系統,還能隨處執行。

Kubernetes 叢集包含一個主要節點與多個工作節點。視叢集而定,這些節點可以是實體電腦或虛擬機器。

主要節點會控制叢集狀態,例如目前正在執行哪些應用程式,及其對應的容器映像。主要節點為所有工作指派的起點,負責協調下列流程:

  • 排程與延展應用程式
  • 維護叢集狀態
  • 實作更新

工作節點為執行這些應用程式的元件,負責執行主要節點所指派的工作。工作節點可以是虛擬機或實體電腦,而且所有節點都能當作單一系統的一部分運作。

Kubernetes 叢集至少需要有一個主要節點與一個工作節點,才能順利運作。若為生產與預發佈環境,叢集會分配給多個工作節點執行。若為測試環境,則所有元件都會在相同的實體或虛擬節點上執行。

Kubernetes 使用者可使用命名空間,將單一實體叢集中的多個不同叢集分門別類。命名空間可讓使用者透過資源配額的方式,將實體叢集中的叢集資源分配給不同的團隊。正因如此,如果涉及複雜的專案或多個團隊,就相當適合使用命名空間。

 

Kubernetes 叢集包含哪些項目?

 

Kubernetes 叢集共有六個主要元件:

  1. API 伺服器:將 REST 介面公開給所有 Kubernetes 資源。負責擔任 Kubernetes 控制平台的前端。
  2. 排程器:根據資源需求與指標來置放容器。負責記錄哪些機組沒有指派到任何節點,並為其選取可用來執行的節點。
  3. 控制器管理工具:執行控制器流程,並讓叢集的實際狀態及其目標規格趨於一致。負責管理多個控制器,例如節點控制器、端點控制器與複寫控制器。
  4. Kubelet:確保容器是透過與 Docker 引擎 (預設的容器建立與管理程式) 互動的方式,在機組上執行。負責取得一組 PodSpecs,並確保其對應容器可全面運作。
  5. Kube-proxy:管理網路連線並維護所有節點的網路規則。負責將 Kubernetes 服務概念實作至指定叢集中的每個節點上。
  6. Etcd:儲存所有叢集資料,是一致且高度可用的 Kubernetes 備份存放區。區 

 

這六個元件都可在 Linux 上執行,或以 Docker 容器的形式執行。API 伺服器、排程器與控制器管理工具都是由主要節點執行,Kubelet 與 Kube-proxy 則由工作節點執行。

 

如何使用 Kubernetes 叢集?

 

若要使用 Kubernetes 叢集,您必須先判斷其目標狀態。Kubernetes 叢集的目標狀態會定義許多作業項目,包括:

  • 應該執行的應用程式與工作負載
  • 這些應用程式需要使用的映像
  • 應該提供給這些應用程式的資源
  • 所需的複本數量

 

若要定義目標狀態,請使用 JSON 或 YAML 檔案 (所謂的「資訊清單」),並指定應用程式類型與執行系統所需的複本數量。

 

開發人員可使用 Kubernetes API 定義叢集的目標狀態。此一開發人員互動會使用指令行介面 (kubectl) 進行,或運用 API 與叢集直接互動,以手動設定目標狀態。接著,主要節點會透過 API 將目標狀態傳達給工作節點。

 

Kubernetes 會透過 Kubernetes 控制平台來自動管理叢集,使其能與目標狀態保持一致。Kubernetes 控制平台的責任則涵蓋排程叢集活動,以及登錄與回應叢集事件。

 

Kubernetes 控制平台會執行持續控制迴圈,以確保叢集的實際狀態符合其目標狀態。舉例來說,如果您部署一個應用程式來搭配五個複本一同執行,而其中一個複本發生當機,Kubernetes 控制平台就會登錄這個當機情況,並部署額外的複本,以保持共有五個複本的目標狀態。

 

自動化作業會透過 Pod Lifecycle Event Generator (PLEG) 進行,當中的自動化工作包含:

  • 啟動與重新啟動容器
  • 調整應用程式的複本數量
  • 驗證容器映像
  • 啟動與管理容器
  • 實作更新與復原

 

 

如何建立 Kubernetes 叢集?

 

您可以在實體或虛擬機上建立與部署 Kubernetes 叢集。建議新使用者使用 Minikube 來著手建立 Kubernetes 叢集。Minikube 是一款開放式原始碼工具,相容於 Linux、Mac 與 Windows 作業系統。Minikube 可用來建立與部署只包含一個工作節點的單一精簡化叢集。

 

此外,您也可以使用 Kubernetes 模式,將叢集規模的管理作業自動化。Kubernetes 模式有助於在容器式應用程式中重複使用雲端式架構。雖然 Kubernetes 提供多款實用的 API,但並未訂定將這些工具成功整合至作業系統的相關準則。Kubernetes 模式可透過一致的方式來存取與重複使用現有的 Kubernetes 架構。只要善加利用可重複使用的 Kubernetes 叢集藍圖,就無需自行建立這些結構。

 

VMware 針對 Kubernetes 叢集提供的相關產品、解決方案與資源

VMware NSX:領先業界的企業網路與安全性虛擬化平台

VMware NSX Data Center 提供完整的網路與安全性虛擬化平台服務,一舉涵蓋第 2-7 層,讓您能透過單一介面來管理整個網路。

VMware Cloud PKS - Kubernetes 叢集

透過易於使用且符合成本效益的 Kubernetes 叢集,加快創新腳步

vSphere Integrated Containers

vSphere Integrated Containers 提供企業級容器基礎架構,可幫助 IT 作業團隊在通用平台上同時執行傳統和容器化應用程式。

使用 VMware NSX 推動容器網路

為您的容器化應用程式和微服務提供完整堆疊的整合式網路與安全性。

何謂 Cloud Management Platform?

VMware Cloud Management Platform 為混合式 (多雲) 環境管理工具,能執行從傳統到容器 (雲原生) 的各式工作負載。深入瞭解。