Kubernetes Kernel
設(shè)計思想:
與傳統(tǒng)架構(gòu)區(qū)別:
更關(guān)注業(yè)務模塊
不在費心與負載均衡的選項和部署實施問題
不在考慮引入或自研一個復雜的治理框架
不在頭疼服務監(jiān)控和故障處理模塊的開發(fā)
節(jié)省30%的開發(fā)成本
自動化機制, 大幅降低系統(tǒng)后期的運維難度和成本
服務跨平臺, 無語言限制
K編程框架,中間件沒有任何侵入性, 現(xiàn)有服務更容易遷移到該平臺
完全屏蔽底層網(wǎng)絡的細節(jié),基于Service的虛擬IP(Cluster IP)的設(shè)計思路,讓架構(gòu)與底層的硬件拓撲無關(guān)
Master
分支三進程: 實現(xiàn)了整個集群的資源管理, Pod調(diào)度, 彈性伸縮, 安全控制, 系統(tǒng)監(jiān)控和糾錯等管理功能, 且為自動完成.
高可用部署建議3臺服務器互備, 集群首腦.
Kube-apiserver
提供Http Rest接口的關(guān)鍵服務進程, 是K里所有資源的增刪改查等操作的唯一入口,也是集群控制的入口進程.
Kube-controller-manager
K里所有資源對象的自動化控制中心,可以理解為資源對象的"大總管"
Kube-scheduler
負責資源調(diào)度(Pod調(diào)度)的進程, 相當于公交公司的"調(diào)度室"
etcd
K-V數(shù)據(jù)庫
存儲K里所有資源對象的數(shù)據(jù)
Node
早期版本叫Minion, 可以是一臺物理機或虛擬機
Node故障, Master會將工作調(diào)度到其他Node
作為集群工作節(jié)點, 運行真正的應用程序, 最小單元為Pod.
倆服務進程Kubelet&Kube-proxy,主要負責Pod的創(chuàng)建,啟動,監(jiān)控,重啟,銷毀,以及實現(xiàn)軟件模式的負載均衡器.
Node可以再運行期間動態(tài) Add到K集群中, 前提是這個節(jié)點上已經(jīng)正確安裝,配置和啟動了上述關(guān)鍵進程, 默認情況下Kubelet會向Master注冊自己, 這也是K推薦的Node管理方式, 一旦Node被納入集群管理范圍, Kubelet進程會定時向Master匯報自身情況, 包括操作系統(tǒng),Docker版本,機器的CPU和內(nèi)存, 以及那些Pod再運行等, 這樣Master可以獲知每個Node的資源使用情況, 并實現(xiàn)高效均衡的資源調(diào)度策略, 如果Node指定時間內(nèi)不上報信息, 會被Master判定為"失聯(lián)", Node會被標記為不可用(Not Ready), 隨后Master會觸發(fā)"工作負載大轉(zhuǎn)移"的自動流程.
Kubelet
負責Pod對應的容器的創(chuàng)建,啟停等任務,同時與Master密切協(xié)作,實現(xiàn)集群管理的基本功能
Kube-proxy
實現(xiàn)K Service的通信與負載均衡機制的重要組件
Docker Engine(docker)
Docker引擎, 負責本機的容器創(chuàng)建和管理工作