K8S架構/組件說明 ---- Kubernetes

1. Borg的架構

Kubernetes是Borg的Go語言的編譯版本,在認識Kubernetes採用的架構之前不妨先了解Borg的架構:BorgMaster負責請求分發,工作節點是Borglet。爲了防止BorgMaster發生單點故障、保證高可用集羣,高可用節點最好保證三個以上的奇數個。scheduler是調度器組件,用來確定請求交給誰處理。scheduler不會直接和Borglet交互,而是把數據寫入到Paxos數據庫(Google),Borglet會監聽數據庫,如果有自己的請求會處理自己的請求。
在這裏插入圖片描述

2. Kubernetes的架構

Kubernetes相較於Borg在某些地方是有不同的。請求的任務到來之後scheduler把請求的任務交給api server,api server負責把請求寫入到etcd,scheduler並不會和etcd直接交互。

etcd的官方將它定義一個可信賴(爲了etcd持久化不造成單點故障,所以讓它本身支持集羣化,不需要使用其它的中間件)的分佈式鍵值存儲服務,它能夠爲整個分佈式集羣存儲一些關鍵數據,協助分佈式集羣的正常運轉(保存整個分佈式集羣的需要持久化的配置文件)。

rc,用來維護副本的數目或期望值,如果不滿足期望值,負責把副本數改寫爲期望值。api server是主服務的核心,是一切服務的訪問入口,scheduler、rc、kubectl、web UI、etcd都需要和api server交互。爲了減輕api server的壓力,每個組件還可以在本地生成緩存。
在這裏插入圖片描述

Kubernetes會使用ETCD做持久化方案,ETCD存儲有兩個版本,v2和v3版,v2版本會把所有數據寫入到內存中,v3版本會引入本地的持久化操作。服務器關機後,數據可以從磁盤恢復。 理論上會選擇v3版本,因爲不會造成數據丟失。Kubernetes 1.11版本以及之前的版本不支持v3版的功能。

3. ETCD組件

在這裏插入圖片描述
ETCD採用HTTP協議進行CS的構建服務,Kubernetes也採用採用HTTP協議進行CS的構建服務。所有的信息都存放在Raft中,爲了防止信息損壞,還設置了wal預寫日誌。如果你想對數據進行更新,首先生成日誌存儲起來,日誌還會被定時完整地備份。完整備份是因爲增量的備份比較多,還原比較費時。日誌和數據還會被實時寫入到本地磁盤中,進行持久化實施。

4. 組件綜述

API SERVER所有服務訪問統一入口

CrontrollerManager維持副本期望數目

Scheduler負責接受任務,選擇合適的節點(節點的某些特性分配給Pod)進行分配任務

ETCD鍵值對數據庫,儲存K8S集羣所有重要信息(持久化)

kubelet直接跟容器引擎(Docker)交互,實現容器的生命週期管理

kube-proxy實現Pob與Pod之間的訪問和負載均衡。默認是操作防火牆,負責寫入規則至 IPTABLES 實現服務映射,新版中還支持IPVS

COREDNS可以爲集羣中的SVC創建一個域名IP的對應關係解析(重要組件,實現負載均衡其中的功能)

DASHBOARD給 K8S 集羣提供一個 B/S 結構訪問體系

INGRESS CONTROLLER官方只能實現四層代理,INGRESS 可以實現七層代理(可以根據域名負載均衡)

FEDERATION提供一個可以跨集羣中心多K8S統一管理的功能

PROMETHEUS提供K8S集羣的監控能力

ELK提供 K8S 集羣日誌統一分析接入平臺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章