Kubernetes 為組織管理容器化應用程式的方式帶來了革命性的改變,它提供了強大的系統,以自動化部署、擴展和營運。Kubernetes 的核心概念是叢集的概念,這對高效率的容器調度至關重要。了解 Kubernetes 叢集對於任何希望將容器技術發揮到最大潛力的組織而言都至關重要。
在這篇文章中,我們將探討 Kubernetes 叢集是什麼、其元件、如何建立叢集,以及管理的最佳做法。
Kubernetes 叢集是一組機器(節點),共同運作並管理容器化應用程式。Kubernetes 叢集的主要目的是自動化容器化應用程式的部署、擴展和管理。這為使用者帶來了幾項關鍵優勢,例如:
Kubernetes 叢集由兩個主要元件組成:控制平面和工作節點。每個元件在管理叢集和執行容器化應用程式方面都扮演了特定的角色。
控制面是 Kubernetes 叢集的大腦,負責做出決策,並向員工節點發出指令。它由幾個關鍵要素組成,包括:
工人節點是叢集的工作原理。它們是實際運行容器化應用程式的機器。每個作業節點都有數個元件,負責管理和執行容器:
Kubelet:kubelet 是一種在每個員工節點上執行的代理程式。它在節點上扮演控制平面代表的角色,負責指定至節點的 pod 生命週期。Kubelet 確保 pod 內的容器下載、設定,並依照 pod 規格運作。它還能監控容器的運作狀況、重新啟動失效的容器,並取得容器所需的秘密,以安全運作。
方形:Kube-proxy 是在每個員工節點上執行的網路代理伺服器。它實施為叢集定義的網路策略,並確保 pod 可以相互和外部服務進行通訊。Kube-proxy 維護網路路由規則,並將服務名稱轉譯為 pod IP 位址,讓 pod 能夠發現叢集內的服務並與之通訊。
透過共同合作,這些控制平面與作業節點中的元件,讓 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 代理程式。
在所有機器(主節點和工人節點)上,使用配送的封裝管理員來安裝所需的 kubeadm 工具:
|
注意:在某些系統上,安裝後可能需要額外的配置。請參閱 Kubernetes 官方文件,了解您選擇的作業系統相關細節。
選擇一台機器作為主節點。在主節點上執行以下指令以初始化控制平面。此程序會產生組態檔案,並為員工節點提供合併命令:
|
執行初始化命令後,kubeadm 將為工人節點提供帶有合併命令的輸出。請記下此指令,因為在步驟 5 中會需要此指令。
在主節點上,將產生的管理員組態檔案複製到您的本機 kubectl 組態目錄。這可讓您使用 kubectl 命令來管理叢集。下列命令可達成此目標:
|
pod 網路外掛程式可讓叢集內的 pod 之間進行通訊。法蘭絨是熱門的 Pod 網路選項。您可以在主節點上使用下列命令來部署法蘭絨:
|
在每個勞工節點上,在主節點的初始化步驟(步驟 2)中執行 kubeadm 提供的合併命令。此命令會將工人節點與控制平面註冊,並準備執行容器化工作負載。加入命令一般看起來像這樣:
|
所有作業節點都加入叢集後,請使用 kubectl 命令驗證叢集的健全狀況:
|
有效管理 Kubernetes 叢集對於維持效能和可靠性至關重要。這包括擴充、升級和更新叢集中的節點。
Kubernetes 提供水平擴充功能,讓您可以根據工作負載需求輕鬆調整工作節點的數量。
以下是 kubeadm 加入命令的範例:
$ sudo kubeadm 加入<master_ip_address>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> |
移除節點(向下擴展):
在移除節點之前,務必先將節點排乾。排乾可確保您的應用程式不會停機,方法是從節點中優雅地清除 pod 並在健康的節點上排程。
排放節點:使用 kubectl 排放命令,排放您要移除的節點。此命令會從節點移除 pod,同時讓 DaemonSets(關鍵系統服務) 繼續執行。
|
<node-name> 以您想要移除的節點的主機名稱或 IP 位址取代。
刪除節點:排放後,您可以使用 kubectl 刪除節點命令安全地從叢集中移除節點。
|
<node-name> 以您想要移除的節點的主機名稱或 IP 位址取代。
您也可以執行其他管理作業,例如升級控制平面、升級工作人員節點,以及連續升級。
有效的監控與記錄對於維持 Kubernetes 叢集的健康至關重要。Prometheus 和 ELK Stack 等工具提供了對資源利用率、pod 健全度和整體效能的深度見解,使您能夠在問題影響應用程式之前主動識別和處理問題。Kubernetes 也與各種第三方解決方案整合,提供彈性。
高效率的資料管理是具狀態應用程式的關鍵。Pure Storage 的 Portworx® 提供強大的容器原生解決方案,能與您的 Kubernetes 叢集無縫整合。
Portworx 透過下列方式簡化工作負載的儲存作業:
Kubernetes 叢集是現代化容器調度的基礎,提供更佳的擴充性、容錯性,以及簡化的應用程式管理。了解 Kubernetes 叢集的元件、設定流程與管理實務,對於發揮其完整潛力至關重要。Pure Storage 的 Portworx 與 Kubernetes 無縫整合,提供強大的儲存功能,可提升容器化工作負載的整體效率與可靠性。