Kubernetes各组件的功能
Kubernetes各組件的功能
1.kubectl
kubectl是Kubernetes官方提供的命令行工具CLI,用戶可以通過(guò)命令行的方式與Kubernetes API Server進(jìn)行操作,通信協(xié)議使用HTTP/JSON。
2.client-go
client-go是從Kubernetes代碼中抽離出來(lái)的包,作為官方提供的GO語(yǔ)言的客戶端發(fā)揮作用。client-go簡(jiǎn)單、易用,Kubernetes系統(tǒng)的其他組件與Kubernetes API Server通信的方式也是基于client-go實(shí)現(xiàn)。
3.kube-apiserver
它負(fù)責(zé)Kubernetes"資源組/資源版本/資源"以RESTful風(fēng)格的形式對(duì)外暴露并提供服務(wù)。kube-apiserver組件也是集群中唯一與Etcd集群進(jìn)行交互的核心組件。Kubernetes將所有的數(shù)據(jù)存儲(chǔ)在Etcd集群中前綴為registry的目錄下。
kube-apiserver的特性:
- 將Kubernetes系統(tǒng)中所有資源對(duì)象都封裝成RESTful風(fēng)格的API接口進(jìn)行管理。
- 可進(jìn)行集群狀態(tài)管理和數(shù)據(jù)管理,是唯一與Etcd集群交互的組件。
- 擁有豐富的集群安全訪問(wèn)機(jī)制,以及認(rèn)證,授權(quán)及準(zhǔn)入控制器。
- 提供了集群各組件的通信和交互功能。
4.kube-controller-manager
它負(fù)責(zé)管理Kubernetes集群中的節(jié)點(diǎn)(Node),Pod副本,服務(wù),端點(diǎn)(Endpoint),命名空間(Namespace),服務(wù)賬戶(ServiceAcconut),資源定額(ResourceQuota)等。
5.kube-scheduler
該組件是Kubernetes集群默認(rèn)的調(diào)度器,它負(fù)責(zé)在Kubernetes集群中為一個(gè)Pod資源對(duì)象找到合適的節(jié)點(diǎn)并在該節(jié)點(diǎn)上運(yùn)行。在調(diào)度的過(guò)程中每次只負(fù)責(zé)調(diào)度一個(gè)Pod資源對(duì)象。調(diào)度算法分為兩種,分別為預(yù)選調(diào)度算法和優(yōu)選調(diào)度算法。
6.kubelet
該組件運(yùn)行在每個(gè)Kubernetes節(jié)點(diǎn)上,用于管理節(jié)點(diǎn)。kubelet組件用來(lái)接收、處理、上報(bào)kube-apiserver組件下發(fā)的任務(wù)。它主要負(fù)責(zé)所在節(jié)點(diǎn)上的Pod資源對(duì)象的管理,例如Pod資源對(duì)象的創(chuàng)建、修改、監(jiān)控、刪除、驅(qū)逐及Pod生命周期管理等。
kubelet組件會(huì)定期監(jiān)控所在節(jié)點(diǎn)的資源使用狀態(tài)并上報(bào)給kube-apiserver組件,這些資源數(shù)據(jù)可以幫助kube-scheduler調(diào)度器為Pod資源對(duì)象預(yù)選節(jié)點(diǎn)。kubelet也會(huì)對(duì)所在節(jié)點(diǎn)的鏡像和容器做清理工作,保證節(jié)點(diǎn)上的鏡像不會(huì)占滿磁盤空間、刪除的容器釋放相關(guān)資源。
kubelet組件實(shí)現(xiàn)了3種開(kāi)放接口:
- Container Runtime Interface:簡(jiǎn)稱CRI(容器運(yùn)行時(shí)接口)提供容器運(yùn)行時(shí)通用插件接口服務(wù)。CRI定義了容器和鏡像服務(wù)的接口。CRI將kubelet組件與容器運(yùn)行時(shí)進(jìn)行解耦,將原來(lái)完全面向Pod級(jí)別的內(nèi)部接口拆分成面向Sandbox和Container的gRPC接口,并將鏡像管理和容器管理分離給不同的服務(wù)。
- Container Network Interface:簡(jiǎn)稱CNI(容器網(wǎng)絡(luò)接口),提供網(wǎng)絡(luò)通用插件接口服務(wù)。CNI定義了Kubernetes網(wǎng)絡(luò)插件的基礎(chǔ),容器創(chuàng)建時(shí)通過(guò)CNI插件配置網(wǎng)絡(luò)。
- Container Storage Interface:簡(jiǎn)稱CSI(容器存儲(chǔ)接口),提供存儲(chǔ)通用插件接口服務(wù)。CSI定義了容器存儲(chǔ)卷標(biāo)準(zhǔn)規(guī)范,容器創(chuàng)建時(shí)通過(guò)CSI插件配置存儲(chǔ)卷。
7.kube-proxy
該組件運(yùn)行在Kubernetes集群中每個(gè)節(jié)點(diǎn)上,作為節(jié)點(diǎn)上的網(wǎng)絡(luò)代理。它監(jiān)控kube-apiserver的服務(wù)和端點(diǎn)資源變化,并通過(guò)iptables/ipvs等配置負(fù)載均衡器,為一組Pod提供統(tǒng)一的TCP/UDP流量轉(zhuǎn)發(fā)和負(fù)載均衡功能。但是kube-proxy組件與其他負(fù)載均衡服務(wù)的區(qū)別在于kube-proxy代理只想Kubernetes服務(wù)及其后端Pod發(fā)出請(qǐng)求。
Kubernetes Project Layout 設(shè)計(jì)
| cmd/ | 存放可執(zhí)行文件的入口代碼,每個(gè)可執(zhí)行文件都會(huì)對(duì)應(yīng)一個(gè)main函數(shù) |
| pkg/ | 存放核心庫(kù)代碼,可被項(xiàng)目?jī)?nèi)部或外部直接引用 |
| vendor/ | 存放項(xiàng)目依賴的庫(kù)代碼,一般為第三方庫(kù)代碼 |
| api/ | 存放OpenAPI/Swagger的spce文件,包括JSON、Protocol的定義等 |
| build/ | 存放與構(gòu)建相關(guān)的腳本 |
| test/ | 存放測(cè)試工具及測(cè)試數(shù)據(jù) |
| docs/ | 存放設(shè)計(jì)或用戶使用文檔 |
| hack/ | 存放與構(gòu)建、測(cè)試等相關(guān)代碼 |
| third_party | 存放第三方工具、代碼或者其他組件 |
| plugin/ | 存放Kubernetes插件代碼目錄,例如認(rèn)證、授權(quán)等相關(guān)插件 |
| staging/ | 存放部分核心庫(kù)的暫存目錄 |
| translations/ | 存放i18n(國(guó)際化)語(yǔ)言包的相關(guān)文件,可以在不修改內(nèi)部代碼的情況下支持不同語(yǔ)言及地區(qū) |
總結(jié)
以上是生活随笔為你收集整理的Kubernetes各组件的功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于Kubernetes1.20.1版本
- 下一篇: Kubernetes构建过程分析