什麼是 Kubernetes 叢集?
Kubernetes (K8s) 叢集是一群執行容器化應用程式的運算節點或工作者機器。容器化是一種軟體部署和執行期程序,可將應用程式的程式碼與在任何基礎設施上執行所需的所有檔案和程式庫繫結在一起。Kubernetes 是開放原始碼容器協同運作軟體,您可以使用它大規模管理、協調和排程容器。Kubernetes 將容器放置到 Pod 中,並在節點上執行容器。Kubernetes 叢集至少包含執行容器 Pod 的主節點,以及管理叢集的控制平面。部署 Kubernetes 時,您基本上就是在執行 Kubernetes 叢集。
什麼是 Kubernetes 基礎知識?
若要了解 Kubernetes 叢集,您首先需要了解使用 Kubernetes 容器化的基礎知識。
容器是與其相依性封裝在一起的單一應用程式或微型服務,可以做為獨立環境和一個環境中的應用程式執行。 現代應用程式採用分散式微型服務架構,每個應用程式都包含數百甚至數千個獨立執行的離散型軟體元件。每個元件 (或微型服務) 都執行單一獨立函數,以增強程式碼模組化。透過為每項服務建立獨立的容器,可以在多部電腦上部署和分散應用程式。您可以擴展或縮減個別微型服務工作負載和運算功能,以將應用程式效率最大化。
Kubernetes 是開放原始碼容器協同運作軟體,可大規模簡化容器管理。它可以排程、執行、啟動和關閉容器,以及自動化管理功能。開發人員可以大規模獲得容器化的好處,而無需管理費用。
接下來,讓我們看一些核心 Kubernetes 概念。
Pod
Pod 是 Kubernetes 底下的標準可部署單位。Pod 包含一或多個容器,而且在 Pod 內容器共用相同的系統資源,例如儲存空間和網路。每個 Pod 都會獲得一個唯一的 IP 地址。
Pod 內的容器不會被隔離。將 Pod 視為類似於虛擬機器 (VM),具有類似於在 VM 上執行之應用程式的容器。Pod 和 Pod 群組可以透過將屬性標籤附加至其中來整理,例如環境類型的標籤 ‘dev’ 或 ‘prod’。
節點
節點是執行 Pod 的機器。它可以是實體或虛擬伺服器,例如 Amazon EC2 執行個體。節點上的元件包括:
- 適用於節點和容器管理的 Kubelet
- 適用於網路 Proxy 的 Kube-proxy
- 容器執行期
必須在節點上安裝相容的容器執行期才能執行容器。Kubernetes 支援多個容器執行期,例如 Kubernetes 容器執行期界面和容器。
複本集與部署
Pod 是一個獨立成品,當其節點停機時,它不會自動重新啟動。如果 Pod 被分組到複本集,則在 Kubernetes 中,您可以指定始終跨節點執行的複本集。這對於擴展和縮減以及確保應用程式和服務的持續性至關重要。
部署是 Kubernetes 管理物件,用於部署應用程式,以及在不離線的情況下更新或回復應用程式。
服務和輸入
使用 Kubernetes 服務,透過端點公開網路上的 Pod 或 Pod 群組,以取得遵循標準網路通訊規則的互動性。對於公有網際網路流量存取,Kubernetes 輸入將會附加到服務,然後連結到一個或多個 Pod。
什麼是 Kubernetes 叢集元件?
Kubernetes 叢集是一或多個節點組成的群組,並具有執行中 Pod。在叢集內,Kubernetes 控制平面會管理節點和 Pod。
控制平面元件包括:
- Kubernetes API 伺服器 (kube-apiserver),可管理叢集內部和與叢集的通訊
- 用於記錄叢集的持續狀態的儲存空間 (etcd)
用於管理節點和後續 Pod Kubernetes 資源的排程器 (kube-scheduler)
其他元件包括用於節點和工作控制的控制器管理員 (kube-controller-manager),以及用於與供應商特定公有雲端基礎設施整合的雲端控制器管理員 (cloud-controller-manager)。
因為容器沒有持續儲存空間,所以應用程式需要儲存持續的資料。Pod 也可能需要存取共用資料。可以將持久性磁碟區做為儲存區新增至叢集,在叢集內參照類似於節點。
開發人員如何使用 Kubernetes 叢集?
開發人員必須先在主節點及其工作節點上下載並安裝 Kubernetes。然後,他們可以在實體或虛擬機器上於本機、資料中心或雲端中部署叢集。
安裝
為了簡單地開始使用 Linux 虛擬機器,請在您選擇的主節點 (虛擬機器) 上首先安裝:
- Docker 或任何其他容器化軟體。
- Kubernetes 的儲存庫金鑰和程式碼儲存庫。
- 用於叢集引導操作的套件 kubeadm。
- 用於節點協調的套件 kubelet。
- 用於叢集命令列的套件 kubectl。
在其他每個指定的工作節點上執行程序。
叢集初始化
若要初始化叢集,請在主節點上執行 kubeadm init 命令。您必須新增 kube 組態檔案並部署 Pod 網路 (通常是使用 YAML 檔案),才能準備好使用叢集。kubeadm init 命令會輸出一個 join 命令,該命令可以複製並貼上到其他虛擬機器工作節點的命令列中。這允許每個工作節點加入叢集。
使用 Kubernetes
使用 Kubernetes UI 儀表板,部署者可以在叢集上建立和部署應用程式。對於 Kubernetes UI 儀表板,在主要機器上執行 kubectl proxy 命令。接著可在 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 找到 UI。
什麼是 Kubernetes 叢集管理?
Kubernetes 叢集管理是用於大規模管理多個 Kubernetes 叢集的術語。例如,考慮開發環境,團隊可能需要測試、開發和生產叢集,每個叢集會在多個分散式現場和雲端式實體和虛擬機器上執行。
若要一起管理多種不同類型的叢集,您需要能夠執行叢集操作,例如建立和銷毀、現場更新、維護、重新組態、安全、叢集資料報告等。多叢集管理可透過結合 Kubernetes 服務、專業工具、組態和最佳實務來達成。
AWS 如何協助處理您的 Kubernetes 叢集要求?
AWS 提供雲端服務來設定、執行和管理您的 Kubernetes 叢集:
- Amazon Elastic Compute Cloud (EC2) 可協助您在您選擇的執行個體類型上佈建和執行 Kubernetes。
- Amazon Elastic Kubernetes Service (EKS) 可協助您啟動、執行和擴展 Kubernetes,無需使用控制平面和 etcd 來佈建或管理主執行個體。EKS 隨附叢集管理工具,以及與 AWS 網路和安全服務的實用整合。
立即建立免費帳戶,開始使用 AWS 上的 Kubernetes 叢集。