iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0

前言

隨著微服務架構和容器技術的發展,管理大量容器成為現代應用程式開發中的一大挑戰。Kubernetes (簡稱 K8s) 作為一個強大的容器編排平台,為企業提供了靈活且高效的應用管理解決方案。而 Kubernetes 是由 Google 開發並於 2014 年正式開源的。Kubernetes 的名稱來自希臘語,意為“舵手”或“領航員”,象徵著它在現代應用程式運行中的重要角色。

https://ithelp.ithome.com.tw/upload/images/20240908/20140874f4oWv0shTk.png

控制平面 (Control Plane)

Control Plane 是 Kubernetes 集群的大腦,它負責管理集群的所有活動,從集群狀態的維護到應用的調度,都是通過控制平面進行的。控制平面由多個協同工作的組件組成,每個組件都有特定的職責。

https://ithelp.ithome.com.tw/upload/images/20240908/20140874nexNBRYws8.png

1. API Server:

API Server Kubernetes是控制平面的核心組件,所有的操作請求都通過 API Server 進行。它是 Kubernetes 集群與外部通信的門戶,負責接收和處理來自用戶、CLI 工具或其他外部系統的 API 請求。

2. etcd:

etcd 是 Kubernetes 使用的分佈式鍵值存儲系統,負責保存集群的所有數據,包括配置數據、狀態信息和元數據。它是 Kubernetes 的源數據庫,存儲著集群中的所有狀態信息,如 Pod 的狀態、Namespace、ConfigMap 等等。

3. Controller Manager

Controller Manager 是 Kubernetes 的一個管理中心,用來執行各類控制器 (Controller)。控制器是一種持續監控集群狀態並進行調整的程序,例如當某個 Pod 數量少於預期時,ReplicaSet 控制器會自動創建新的 Pod 來滿足要求。

Controller Manager 集中管理多個控制器,每個控制器都負責一個具體的任務,如節點控制器、複製控制器、端點控制器等等。這些控制器不斷比較當前集群狀態和預期狀態,如果發現差異,則會進行自動調整以達到期望狀態。此外,Controller Manager 還負責監控節點的健康狀況,並在節點失效時進行恢復操作,確保集群的高可用性。

4. Scheduler

Scheduler 是 Kubernetes 中的調度器,它的主要職責是將新創建的 Pod 分配到合適的工作節點上。Scheduler 在進行調度時會考慮多種因素,如資源需求(CPU、內存等)、節點的負載情況、Pod 的親和性和反親和性規則,以及節點的地理位置等。

工作節點 (Worker Nodes)

工作節點是 Kubernetes 集群中實際運行應用容器的地方。每個工作節點都包含以下重要組件,它們共同協作來確保應用容器的穩定運行:

Node

Node 是 Kubernetes 集群中一個基本的運行單元,通常對應於一台虛擬機器或物理伺服器。每個 Node 內部都運行著多個 Kubernetes 組件,如 kubelet、Kube Proxy 和一個容器運行時(如 Docker)。Node 負責運行分配到它上面的 Pod,並監控這些 Pod 的狀態。

https://ithelp.ithome.com.tw/upload/images/20240908/20140874yNliKrke3n.png

1. kubelet

kubelet 是運行在每個工作節點上的核心代理,負責與控制平面通信,並執行分配到該節點的 Pod 任務。kubelet 會定期從 API Server 拉取 Pod 規範,然後確保這些 Pod 按照規範正確運行在該節點上。 kubelet 還負責監控容器的運行狀態,並定期向控制平面報告該節點的狀態。

如果某個容器發生故障, kubelet 會自動重新啟動該容器,或根據設定進行其他故障恢復操作。 kubelet 的運行依賴於節點的容器運行時(如 Docker),它通過容器運行時接口(CRI)與容器運行時進行交互,來創建、啟動和管理容器。

2. Kube Proxy

Kube Proxy 是工作節點上的網絡代理,負責處理 Kubernetes 服務的網絡路由。Kube Proxy 通過維護 iptables 或 ipvs 規則來管理集群內的網絡流量,確保來自不同 Pod 和服務之間的通信能夠順利進行。

Kube Proxy 支持多種服務發現和負載均衡方式,這使得 Kubernetes 能夠靈活應對各種網絡需求,無論是內部 Pod 之間的通信,還是外部流量的引入,都能保證數據的穩定傳輸。

3. Contriner Runtime Engine

Contriner Runtime Engine(如 Docker 或 containerd)是 Kubernetes 工作節點上實際負責運行容器的組件。它負責從鏡像倉庫拉取容器鏡像,然後在工作節點上創建和啟動容器

◆ 每日咒術小知識

https://ithelp.ithome.com.tw/upload/images/20240908/20140874KIu4PZo1n8.png

參考資料

https://kubernetes.io/
https://ithelp.ithome.com.tw/articles/10234828

https://kubernetes.io/zh-cn/docs/concepts/overview/components/


上一篇
第四篇: 展開領域前調整 VM 環境
下一篇
第六篇: 展開第一個 Kubernetes Cluster 領域
系列文
成為 Kubernetes 特級咒術師的 30 天修行30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言