Kubernetes 是一個 client-server 的架構,主要有
以下介紹 Kubernetes 的組成
在每個 Kubernetes cluster 中,至少要有一個 worker node,它們是用來部署容器的工作節點的集合,也是實際工作發生的地方。
每個節點可以容納多個 pod,而每個 pod 內運行著 container。
每個節點中包含以下三個部份組成:
Container Runtime:這是運行容器的軟體,例如 Docker 或者 containerd。它負責拉取容器鏡像並運行容器。
kubelet:這是節點上的主要代理程式,負責監控 pod 和 container 的狀態,並確保它們按照 Kubernetes 控制平面發出的指令運行。kubelet 會定期向 control plane 報告節點和 pod 的狀態。
kube-proxy:這是一個網路代理,負責實現 Kubernetes 服務的網絡功能。它處理網絡規則以確保 pod 之間的網絡通信和負載均衡。
這些元件同時工作,確保 Kubernetes cluster 中的應用程序能夠可靠地運行和管理。
在 Kubernetes 控制平面(Control Plane)中,有許多工具用來管理整個 cluster 的運作。
主要的工具包括:
Kube-API Server:這是 Kubernetes control plane 的核心元件,負責處理所有 REST API 請求,協調所有 Kubernetes 元件之間的互動。
Kube-Scheduler:這個元件負責將新建立的 pod 分配到合適的 node 上運行。它根據資源需求、策略和當前的負載狀況進行調度。
Kube-Controller-Manager:它管理 Kubernetes 控制器,這些控制器負責執行 cluster 中的各種自動化任務,例如節點管理、複製控制和終止不健康的 pod。
etcd:這是一個分佈式鍵值儲存,儲存了 cluster 的所有數據和配置資訊。etcd 是 Kubernetes 的可靠數據儲存層,用於實現高可用性和數據一致性。
Cloud-Controller-Manger: 當 Kubernetes 要與雲端平台結合時,cloud controller manager 就是 Kubernetes 跟雲端平台 API 溝通的橋樑。
與先前介紹的核心元件不同,以下的附加元件是用來確保系統整體運行的完整性:
CoreDNS 是 Kubernetes 中的一個 DNS 服務器,用於在 cluster 內提供名稱解析服務。它可以將服務名稱解析為相應的 IP 地址,使 pod 之間的溝通更加順暢。
Kubernetes 提供了一個基於網頁的用戶界面(Web UI),也稱為 Dashboard,用於視覺化管理 Kubernetes cluster。通過這個界面,管理員可以查看 cluster 狀態、部署應用程序、管理資源和監控 cluster 性能。
容器資源監控是指監控 Kubernetes cluster 中各個容器的資源使用情況,例如 CPU、內存、磁盤和網路等。
Cluster-level Logging 是指集中收集和管理 Kubernetes cluster 中所有應用程序和系統組件的日誌。這些日誌可以用於故障排除和性能分析。
Network Plugins 是用來實現和擴展 Kubernetes 網路功能的元件。