Skip to Content

什麼是 Kubernetes 叢集?

藍色線橫跨並連接深色背景上的各種節點,類似網路圖表。

Kubernetes 為組織管理容器化應用程式的方式帶來了革命性的改變,它提供了強大的系統,以自動化部署、擴展和營運。Kubernetes 的核心概念是叢集的概念,這對高效率的容器調度至關重要。了解 Kubernetes 叢集對於任何希望將容器技術發揮到最大潛力的組織而言都至關重要。

在這篇文章中,我們將探討 Kubernetes 叢集是什麼、其元件、如何建立叢集,以及管理的最佳做法。

什麼是 Kubernetes 叢集?

Kubernetes 叢集是一組機器(節點),共同運作並管理容器化應用程式。Kubernetes 叢集的主要目的是自動化容器化應用程式的部署、擴展和管理。這為使用者帶來了幾項關鍵優勢,例如:

  • 改善擴充性:Kubernetes 叢集提供彈性的擴充性。您可以視需要新增或移除節點,輕鬆擴充或縮減應用程式。例如,您可以在尖峰流量期間增加更多節點,以處理增加的負載。相反地,您可以在低需求期間縮減叢集規模,以節省資源。
  • 強化容錯能力 :Kubernetes 叢集是專為高度可用性而設計。他們透過複寫來實現這個目標,關鍵應用程式在多個不同節點的 pod 上運行。如果節點故障,Kubernetes 會自動重新啟動故障容器,並在健全的節點上重新排程。如此可確保即使節點故障,您的應用程式仍維持可用與運作。
  • 簡化管理:Kubernetes 叢集可簡化容器化應用程式的管理。Kubernetes 使用 YAML 中寫入的宣告式配置檔案,取代手動管理每個節點的配置。這些檔案會指定您應用程式所需的狀態,而 Kubernetes 會負責確保狀態的維持。

Kubernetes 叢集的元件

Kubernetes 叢集由兩個主要元件組成:控制平面和工作節點。每個元件在管理叢集和執行容器化應用程式方面都扮演了特定的角色。

控制平面

控制面是 Kubernetes 叢集的大腦,負責做出決策,並向員工節點發出指令。它由幾個關鍵要素組成,包括:

  • API 伺服器:API 伺服器是叢集的中央通訊中樞。它揭露了 Kubernetes API,這是所有管理任務以及與叢集互動的入口。像 kubectl 這樣的使用者和工具透過 API 伺服器與叢集互動,以提交命令、管理部署,並存取叢集資訊。
  • etcd:etcd 是高度可用的分散式鍵值儲存區,可作為叢集狀態的單一事實來源。它儲存了有關叢集配置的關鍵資訊,包括 Pod 定義、服務細節和所需的部署狀態。這些資料會複寫到多個蝕刻節點,以確保一致性和容錯性。
  • 排程器:排程器負責將工作負載(pod)指派給叢集中的工人節點。進行排程決策時,它會考慮資源可用性、節點容量和 pod 抗親和力規則等因素。舉例來說,排程器可能會將 pod 分散到不同節點,以改善資源利用率,或優先處理具有高資源需求的 pod,並處理容量充足的節點。
  • 控制器經理:控制器管理器是管理叢集中所有控制器的中心點。控制器負責持續監控叢集的狀態,並採取修正行動,以確保叢集的實際狀態符合組態中定義的所需狀態。控制器管理器管理數個核心控制器,每個控制器都有特定用途。

員工節點

工人節點是叢集的工作原理。它們是實際運行容器化應用程式的機器。每個作業節點都有數個元件,負責管理和執行容器

  • Kubelet:kubelet 是一種在每個員工節點上執行的代理程式。它在節點上扮演控制平面代表的角色,負責指定至節點的 pod 生命週期。Kubelet 確保 pod 內的容器下載、設定,並依照 pod 規格運作。它還能監控容器的運作狀況、重新啟動失效的容器,並取得容器所需的秘密,以安全運作。

  • 方形:Kube-proxy 是在每個員工節點上執行的網路代理伺服器。它實施為叢集定義的網路策略,並確保 pod 可以相互和外部服務進行通訊。Kube-proxy 維護網路路由規則,並將服務名稱轉譯為 pod IP 位址,讓 pod 能夠發現叢集內的服務並與之通訊。

透過共同合作,這些控制平面與作業節點中的元件,讓 Kubernetes 能夠有效管理並協調大規模容器化應用程式。

設定 Kubernetes 叢集

您可以透過兩種主要方法設定 Kubernetes 叢集:使用託管的 Kubernetes 服務或手動部署。

託管 Kubernetes 服務

雲端供應商如 Google Cloud Platform(GCP)與 Google Kubernetes Engine(GKE)、Amazon Web Services (AWS) 與 Elastic Kubernetes Service(EKS),以及 Microsoft Azure 與 Azure Kubernetes Service(AKS)提供託管的 Kubernetes 服務。這些服務負責處理 Kubernetes 叢集基礎架構的配置、配置與管理的複雜性。您只需要定義您想要的叢集配置,服務就能處理繁重的工作,讓您專注於部署容器化應用程式。

手動部署

若要獲得更多控制與自訂功能,您可以使用 kubeadm 等工具手動部署 Kubernetes 叢集。Kubeadm 是一套工具組,用於啟動 Kubernetes 叢集。此方法涉及在指定的主節點上安裝 kubeadm,以及在叢集中所有工作節點上安裝 kubelet 代理程式。 

手動設定 Kubernetes 叢集

先決條件

  • 基礎架構:確保您有足夠的基礎架構,例如虛擬機器或雲端執行個體。
  • 容器運行時間:在所有節點上安裝容器運行時間,如容器或 Docker

步驟 1:安裝 kubeadm、kubelet 和 kubectl

在所有機器(主節點和工人節點)上,使用配送的封裝管理員來安裝所需的 kubeadm 工具:

# Update package lists (replace 'your_package_manager' with your actual package manager like apt-get or yum)
 $ sudo your_package_manager update
 
 # Install kubeadm, kubelet, and kubectl
 $ sudo your_package_manager install -y kubeadm kubelet kubectl

注意:在某些系統上,安裝後可能需要額外的配置。請參閱 Kubernetes 官方文件,了解您選擇的作業系統相關細節。

體驗試用 FlashArray//X

體驗 Everpure 如何在自助服務環境中大幅簡化區塊和檔案操作。

立即試用

步驟 2:初始化控制平面(主節點)

選擇一台機器作為主節點。在主節點上執行以下指令以初始化控制平面。此程序會產生組態檔案,並為員工節點提供合併命令:

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  • kubeadm init:此指令會初始化主節點上的控制平面。
  • --pod-network-cidr=10.244.0.0/16: 此選項指定 pod 網路的 CIDR 範圍。您可以根據您的網路組態需求調整此值。

執行初始化命令後,kubeadm 將為工人節點提供帶有合併命令的輸出。請記下此指令,因為在步驟 5 中會需要此指令。

步驟 3:設定 kubectl

在主節點上,將產生的管理員組態檔案複製到您的本機 kubectl 組態目錄。這可讓您使用 kubectl 命令來管理叢集。下列命令可達成此目標:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

步驟 4:部署 Pod 網路

pod 網路外掛程式可讓叢集內的 pod 之間進行通訊。法蘭絨是熱門的 Pod 網路選項。您可以在主節點上使用下列命令來部署法蘭絨:

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

步驟 5:加入員工節點至叢集

在每個勞工節點上,在主節點的初始化步驟(步驟 2)中執行 kubeadm 提供的合併命令。此命令會將工人節點與控制平面註冊,並準備執行容器化工作負載。加入命令一般看起來像這樣:

$ sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • <master_ip_address>:以主節點的 IP 位址取代。
  • <token>:以主節點上初始化過程中產生的權杖取代。
  • <hash>:以 kubeadm init 命令輸出提供的發現權杖 CA 憑證雜湊取代。

步驟 6:驗證叢集運作狀況

所有作業節點都加入叢集後,請使用 kubectl 命令驗證叢集的健全狀況:

$ kubectl get pods -n kube-system
Evergreen One

運用 Evergreen//One™ 降低風險

避免停機發生。借助 Pure 之力,確保您隨時都可滿足容量需求。

認識 Evergreen//One

管理 Kubernetes 叢集

有效管理 Kubernetes 叢集對於維持效能和可靠性至關重要。這包括擴充、升級和更新叢集中的節點。

擴展叢集

Kubernetes 提供水平擴充功能,讓您可以根據工作負載需求輕鬆調整工作節點的數量。

  1. 新增節點(向上擴展)
    1. 準備新的節點:確保新節點符合您所需 Kubernetes 版本的建議系統需求。安裝必要的軟體,包括 Docker 或 Containerd 等容器執行階段,以及 kubelet 代理程式。請參閱 Kubernetes 官方文件,了解根據您作業系統的詳細安裝步驟
    2. 加入節點至叢集:使用新節點上的 kubeadm 加入命令來加入現有叢集。您需要從初始叢集設定取得下列資訊:
      • 主節點 IP 位址:主節點的 IP 位址。
      • 加入權杖:此權杖是在控制面初始化期間產生的,並在輸出中提供。

以下是 kubeadm 加入命令的範例:

$ sudo kubeadm 加入<master_ip_address>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

  • <master_ip_address> 以主節點的實際IP位址取代。
  • <token> 以控制面初始化期間產生的權杖取代。
  • <hash> 以控制面初始化輸出的發現權杖 CA 憑證雜湊取代。

移除節點(向下擴展)
在移除節點之前,務必先將節點排乾。排乾可確保您的應用程式不會停機,方法是從節點中優雅地清除 pod 並在健康的節點上排程。

排放節點:使用 kubectl 排放命令,排放您要移除的節點。此命令會從節點移除 pod,同時讓 DaemonSets(關鍵系統服務) 繼續執行。

$ kubectl drain <node-name> --ignore-daemonsets

<node-name> 以您想要移除的節點的主機名稱或 IP 位址取代。

 

刪除節點:排放後,您可以使用 kubectl 刪除節點命令安全地從叢集中移除節點。

 

$ kubectl delete node <node-name>

<node-name> 以您想要移除的節點的主機名稱或 IP 位址取代。

您也可以執行其他管理作業,例如升級控制平面、升級工作人員節點,以及連續升級。

維持最佳效能:監控、記錄和儲存

有效的監控與記錄對於維持 Kubernetes 叢集的健康至關重要。Prometheus 和 ELK Stack 等工具提供了對資源利用率、pod 健全度和整體效能的深度見解,使您能夠在問題影響應用程式之前主動識別和處理問題。Kubernetes 也與各種第三方解決方案整合,提供彈性。

高效率的資料管理是具狀態應用程式的關鍵。Pure Storage 的 Portworx® 提供強大的容器原生解決方案,能與您的 Kubernetes 叢集無縫整合。

Portworx 透過下列方式簡化工作負載的儲存作業:

  • 提供持久性容量:即使重新啟動或重新排程 pod,也能確保資料持續存在。
  • 提供資料保護與災害復原:提供快照和複寫功能,並盡可能減少事故期間的停機時間。
  • 簡化管理:提供易於使用的介面,以配置、監控和管理儲存資源。

結論

Kubernetes 叢集是現代化容器調度的基礎,提供更佳的擴充性、容錯性,以及簡化的應用程式管理。了解 Kubernetes 叢集的元件、設定流程與管理實務,對於發揮其完整潛力至關重要。Pure Storage 的 Portworx 與 Kubernetes 無縫整合,提供強大的儲存功能,可提升容器化工作負載的整體效率與可靠性。

10/2025
Virtual Machine Provisioning at Enterprise Scale | Everpure
Sizing and scaling Red Hat OpenShift Virtualization with Portworx.
白皮書
22 頁

查看重要資訊與活動

影片
觀看影片:企業級資料雲端的價值。

Charlie Giancarlo 討論管理為何管理資料才是未來趨勢,而非儲存設備。發掘整合式做法如何革新企業級 IT 作業。

立即觀看
資源
傳統儲存裝置無法驅動未來。

現代化工作負載需求必須達到 AI 級速度、安全性與規模。您的技術棧準備好了嗎?

進行評估
PURE360 示範
探索、認識、體驗 Pure Storage。

存取隨取隨用影片與示範,了解 Pure Storage 的強大功效。

觀賞示範影片
精神領袖
創新競賽

儲存創新最前線的產業領導者最新深度資訊與觀點。

了解更多資訊
您的瀏覽器已不受支援!

較舊版的瀏覽器通常存在安全風險。為讓您使用我們網站時得到最佳體驗,請更新為這些最新瀏覽器其中一個。

Personalize for Me
Steps Complete!
1
2
3
Thinking...