iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Kubernetes

Think Again Kubernetes系列 第 9

Kubernetes Control Plane

  • 分享至 

  • xImage
  •  

Google 開發三個容器系統學習到的重要概念就是,Control Plane 是分散式系統的核心,所以 Kubernetes 最重要的組件就是 Control Plane 組件,我們這一章節將初步介紹 Control Plane 組件,並在之後一一詳細介紹。

API Server

Kubernetes 將 Pod 作為統一的排程單位,但是排程資源一定有個狀態機,狀態機就一定要有存儲,Borg 把存儲統一由 BorgMaster 管理而 Omega 將狀態交給各個排程組件管理,前者缺乏靈活,後者充滿衝突。所以 Kubernetes 採取折衷方案,他採取的依然是集中式存儲,但是把 API Server 作為統一入口,不管你要存取狀態還是修改狀態,都只能通過 API Server,這樣保持了一致性,除此之外,所有的組件自己管理自己的狀態機,所以不會出現多個組件提交同一筆狀態的衝突狀態。

由於是統一入口,所以 API Sever 提供 Admission controller 可以注入,很多網路以及安全相關的設定都需要仰賴這個功能。

CRD 註冊到 API Server。

etcd

就是基於 Raft 算法的分散式 Key/Value 存儲。

kube-scheduler

Borg 以及 Omega 都有 Scheduler 的組件,但是這兩者的 Scheduler 跟 kube-scheduler 有一個極大的差異,就是 Borg 以及 Omega 的 Scheduler 需要處理邏輯還有狀態機,但是 kube-scheduler 專注於排程 Pod,所有需要排程 Pod 的動作都只能由 kube-scheduler 完成,所以所有跟排程 Pod 有關的設定都是跟 kube-scheduler 有關。

controller-manager

如果沒有 controller,kubernetes 什麼都不是。

controller 藉由 reconcile 維護自己的邏輯還有狀態機,在需要排程 Pod 的時候會傳送請求到 kube-scheduler,但是 controller 不只要求排程 Pod,比如 node controller 控制的就是 Node,deployment controller 控制的就是 Replicas,cronjob 控制的就是 job。

CRD 的 controller 會放在這邊運行

前幾篇文章都非常糟糕,今天突然開竅,也許是因為終於碰到熟悉的 Kubernetes Control Plane,也許是因為開始熟悉寫作框架,希望接下來可以繼續順利下去。


上一篇
Kubernetes 的起源:從 Borg、Omega 到 Kubernetes 的演進
下一篇
Kubernetes: Cloud OS
系列文
Think Again Kubernetes31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言