Kubernetes 集群 是一組運行容器化應用程序的節點。容器化應用程序將應用程序與其依賴項和一些必要的服務打包在一起。它們比虛擬機更輕巧、更靈活。通過這種方式,Kubernetes 集群允許更輕松地開發、移動和管理應用程序。Kubernetes 集群允許容器跨多臺機器和環境運行:虛擬機、物理機、基于云的和本地。與虛擬機不同,Kubernetes 容器不限于特定的操作系統。相反,它們能夠共享操作系統并在任何地方運行。
Kubernetes 集群由一個主節點和多個工作節點組成。這些節點可以是物理計算機或虛擬機,具體取決于集群。主節點控制集群的狀態;例如,哪些應用程序正在運行以及它們對應的容器映像。主節點是所有任務分配的來源。它協調流程,例如:
- 調度 和擴展應用程序
- 維護 集群的狀態
- 實施 更新
工作節點 是運行這些應用程序的組件。 工作節點執行主節點分配的任務。它們可以是 虛擬機 或物理計算機,都作為一個系統的一部分運行。Kubernetes 集群必須至少有一個主節點和一個工作節點才能運行。對于生產和登臺,集群分布在多個工作節點上。對于測試,組件可以全部運行在同一個物理或虛擬節點上。
命名空間 是 Kubernetes 用戶在一個物理集群中組織許多不同集群的一種方式。 命名空間使用戶能夠通過資源配額在不同團隊之間劃分物理集群內的集群資源。因此,它們非常適合涉及復雜項目或多個團隊的情況。
Kubernetes 集群由什么組成?
一個 Kubernetes 集群包含六個主要組件:
- API 服務器: 向所有 Kubernetes 資源公開一個 REST 接口。作為 Kubernetes 控制平面的前端。
- 調度器:根據資源需求和指標放置容器。記下沒有分配節點的 Pod,并選擇要在其上運行的節點。
- 控制器管理器:運行控制器進程并將集群的實際狀態與其所需的規范相協調。管理控制器,例如節點控制器、端點控制器和復制控制器。
- Kubelet:通過與 Docker 引擎(用于創建和管理容器的默認程序)交互,確保容器在 Pod 中運行。獲取一組提供的 PodSpec 并確保其對應的容器完全可操作。
- Kube-proxy:管理網絡連接并維護跨節點的網絡規則。在給定集群中的每個節點上實現 Kubernetes 服務概念。
- etcd:存儲所有集群數據。一致且高度可用的 Kubernetes 后備存儲。
這六個組件都可以在 Linux 上運行或作為 Docker 容器運行。主節點運行 API 服務器、調度程序和控制器管理器,工作節點運行 kubelet 和 kube-proxy。
您如何使用 Kubernetes 集群?
要使用 Kubernetes 集群,您必須首先確定其所需狀態。Kubernetes 集群的期望狀態定義了許多操作元素,包括:
- 應該運行的應用程序和工作負載
- 這些應用程序需要使用的圖像
- 應為這些應用程序提供的資源
- 所需副本數量
為了定義所需的狀態,JSON 或 YAML 文件(稱為清單)用于指定應用程序類型和運行系統所需的副本數量。開發人員使用 Kubernetes API 來定義集群的期望狀態。這種開發人員交互使用命令行界面 (kubectl) 或利用 API 直接與集群交互以手動設置所需的狀態。然后,主節點將通過 API 將所需狀態傳達給工作節點。
Kubernetes 通過 Kubernetes 控制平面自動管理集群以使其與所需狀態保持一致。Kubernetes 控制平面的職責包括調度集群活動以及注冊和響應集群事件。
Kubernetes 控制平面運行連續的控制循環,以確保集群的實際狀態與其期望的狀態相匹配。例如,如果您部署一個應用程序以使用五個副本運行,但其中一個崩潰了,Kubernetes 控制平面將注冊此崩潰并部署一個額外的副本,以便保持五個副本的期望狀態。
自動化通過 Pod 生命周期事件生成器或 PLEG 進行。這些自動任務可以包括:
- 啟動 和重啟容器
- 調整 應用程序的副本數
- 驗證 容器鏡像
- 啟動 和管理容器
- 實施 更新和回滾
如何創建 Kubernetes 集群?
您可以在物理機或虛擬機上創建和部署 Kubernetes 集群。建議新用戶使用 Minikube 開始創建 Kubernetes 集群。Minikube 是一個開源工具,兼容 Linux、Mac 和 Windows 操作系統。Minikube 可用于創建和部署僅包含一個工作節點的簡單、流線型集群。
此外,您可以使用 Kubernetes 模式來自動管理集群規模。Kubernetes 模式有助于將基于云的架構重用于基于容器的應用程序。雖然 Kubernetes 確實提供了許多有用的 API,但它沒有提供如何將這些工具成功整合到操作系統中的指南。Kubernetes 模式提供了一種一致的方式來訪問和重用現有的 Kubernetes 架構。您可以利用可重用的 Kubernetes 集群藍圖網絡,而不是自己創建這些結構。