k8s學習總結之各組件功能及作用的詳細介紹


K8S集群架構:
一個K8S集群是由兩大部分組成:
Master節點和Node節點
一.Master節點主要包括API Server、Scheduler、Controller manager、etcd幾大組件

1.API Server (提供其他模塊之間的數據交互和通信的樞紐(其他模塊通過API Server查詢或修改數據,只有API Server才直接和etcd進行交互)
Kubernetes 集群中,API Server 扮演着通信樞紐的位置。API Server 不僅負責和 etcd 交互(其他組件不會直接操作 etcd,只有 API Server 這么做),並切對外提供統一的API調用入口, 所有的交互都是以 API Server 為核心的。API Server 提供了以下的功能:

1).整個集群管理的 API 接口:所有對集群進行的查詢和管理都要通過 API 來進行。集群內部的組件(如kubelet)也是通過Apiserver更新和同步數據到etcd中。
2).集群內部各個模塊之間通信的樞紐:所有模塊之前並不會之間互相調用,而是通過和 API Server 打交道來完成自己那部分的工作。
3).集群安全控制:API Server 提供的驗證和授權保證了整個集群的安全。
4).數據中心樞紐: API Server 負責和 Etcd 交互存放集群用到的運行數據。

2.Scheduler (負責對集群內部的資源進行調度,相當於“調度室”。)

Scheduler負責節點資源管理,接收來自kube-apiserver創建Pods的任務,收到任務后它會檢索出所有符合該Pod要求的Node節點(通過預選策略和優選策略),開始執行Pod調度邏輯。調度成功后將Pod綁定到目標節點上。

3.Controller manager

controller-manager 作為 k8s 集群的管理控制中心,負責集群內 Node、Namespace、Service、Token、Replication 等資源對象的管理,使集群內的資源對象維持在預期的工作狀態。
每一個 controller 通過 api-server 提供的 restful 接口實時監控集群內每個資源對象的狀態,當發生故障,導致資源對象的工作狀態發生變化,就進行干預,嘗試將資源對象從當前狀態恢復為預期的工作狀態,常見的 controller 有 Namespace Controller、Node Controller、Service Controller、ServiceAccount Controller、Token Controller、ResourceQuote Controller、Replication Controller等。

4.Etcd

etcd在kubernetes集群是用來存放數據並通知變動的。
Kubernetes中沒有用到數據庫,它把關鍵數據都存放在etcd中,這使kubernetes的整體結構變得非常簡單。在kubernetes中,數據是隨時發生變化的,比如說用戶提交了新任務、增加了新的Node、Node宕機了、容器死掉了等等,都會觸發狀態數據的變更。狀態數據變更之后呢,Master上的kube-scheduler和kube-controller-manager,就會重新安排工作,它們的工作安排結果也是數據。這些變化,都需要及時地通知給每一個組件。etcd有一個特別好用的特性,可以調用它的api監聽其中的數據,一旦數據發生變化了,就會收到通知。有了這個特性之后,kubernetes中的每個組件只需要監聽etcd中數據,就可以知道自己應該做什么。kube-scheduler和kube-controller-manager呢,也只需要把最新的工作安排寫入到etcd中就可以了,不用自己費心去逐個通知了

二.Node節點主要包括kubelet、kube-proxy模塊和pod對象
1.Pod

Pod是Kubernetes最基本的操作單元。一個Pod代表着集群中運行的一個進程,它內部封裝了一個或多個緊密相關的容器。

2.Kubelet

運行在每個計算節點上
1).kubelet 組件通過 api-server 提供的接口監測到 kube-scheduler 產生的 pod 綁定事件,然后從 etcd 獲取 pod 清單,下載鏡像並啟動容器。
2).同時監視分配給該Node節點的 pods,周期性獲取容器狀態,再通過api-server通知各個組件。

3.kube-proxy

首先k8s 里所有資源都存在 etcd 中,各個組件通過 apiserver 的接口進行訪問etcd來獲取資源信息
kube-proxy 會作為 daemon(守護進程) 跑在每個節點上通過watch的方式監控着etcd中關於Pod的最新狀態信息,它一旦檢查到一個Pod資源被刪除了或新建或ip變化了等一系列變動,它就立即將這些變動,反應在iptables 或 ipvs規則中,以便之后 再有請求發到service時,service可以通過ipvs最新的規則將請求的分發到pod上

總結:kube-proxy和service的關系:
Kube-proxy負責制定數據包的轉發策略,並以守護進程的模式對各個節點的pod信息實時監控並更新轉發規則,service收到請求后會根據kube-proxy制定好的策略來進行請求的轉發,從而實現負載均衡
以上便是我在K8S學習過程中對其中各組件功能及作用的理解的總結,希望對大家有用,有問題的地方歡迎指出,如轉載請標明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM