概述
可以使用k8s的API對(duì)象(objects)來描述集群要達(dá)到的期望狀態(tài)(desired state): 要運(yùn)行什么應(yīng)用(Applications)或工作負(fù)載(Workloads),要使用哪個(gè)容器鏡像(container images),要運(yùn)行的副本集(replicas)的數(shù)量按价,要使用多少網(wǎng)絡(luò)和磁盤資源缚够,等等追驴。也可以使用k8s API創(chuàng)建k8s對(duì)象來給出集群的期望狀態(tài)(一般通常是借助命令行接口工具-kubectl來實(shí)現(xiàn)的)响谓。
一旦設(shè)置了集群的期望狀態(tài)捌归,Kubernetes控制器(Kubernetes Control Plane)就會(huì)通過Pod生命周期事件發(fā)生器(Pod Lifecycle Event Generator,PLEG)來使集群當(dāng)前的狀態(tài)達(dá)到期望的狀態(tài)亚再。為了達(dá)到這一結(jié)果,k8s會(huì)自動(dòng)的執(zhí)行一系列的任務(wù)宿饱,例如啟動(dòng)或重啟容器熏瞄、掃描副本集的數(shù)量,等等谬以。k8s控制器由一個(gè)運(yùn)行在集群上的進(jìn)程集構(gòu)成:
- kubenetes master强饮,是一個(gè)包含了三個(gè)進(jìn)程的集合,運(yùn)行在被指定為集群主節(jié)點(diǎn)(master node)的單節(jié)點(diǎn)(single node)上为黎,這三個(gè)進(jìn)程是:kube-apiserver, kube-controller-manager 和 kube-scheduler.
每一個(gè)非主節(jié)點(diǎn)(non-master node)運(yùn)行著兩個(gè)進(jìn)程: - kubelet邮丰,用于和主節(jié)點(diǎn)通信。
- kube-proxy铭乾,網(wǎng)絡(luò)代理剪廉,映射k8s的網(wǎng)絡(luò)服務(wù)到每個(gè)節(jié)點(diǎn)上。
k8s的對(duì)象(Kubernetes Objects)
k8s包含各種代表系統(tǒng)狀態(tài)的抽象:已部署的容器應(yīng)用和負(fù)載炕檩,關(guān)聯(lián)的網(wǎng)絡(luò)和磁盤資源斗蒋,還有其它集群中正在執(zhí)行的動(dòng)作信息。這些抽象在k8s API中由各種對(duì)象來表示笛质。更多請(qǐng)看 Understanding Kubernetes Objects 泉沾。
k8s的基礎(chǔ)對(duì)象:
k8s的高級(jí)對(duì)象:
k8s同樣包括更高級(jí)的抽象類,它們依賴Controller類來構(gòu)建上述的基礎(chǔ)對(duì)象妇押,并提供額外的功能和便捷的特性跷究。這些對(duì)象有:
k8s控制器(Kubernetes Control Plane)
k8s控制器的各個(gè)部分,如k8s Master和kubelet進(jìn)程集敲霍,一起管控著k8s怎么和集群進(jìn)行通訊俊马。控制器維持著系統(tǒng)中所有對(duì)象的記錄肩杈,同時(shí)運(yùn)行持續(xù)的控制環(huán)(control loops)去管理這些對(duì)象的狀態(tài)柴我。不管在什么時(shí)候,控制器的控制環(huán)都會(huì)響應(yīng)集群中的改變扩然,讓系統(tǒng)中所有的對(duì)象的實(shí)際狀態(tài)去適配到給予的期望的狀態(tài)屯换。
例如,當(dāng)我們使用k8s API創(chuàng)建一個(gè)Deployment与学,我們就給系統(tǒng)提供了一個(gè)新的期望狀態(tài),k8s控制器記錄這個(gè)Deployment對(duì)象的創(chuàng)建嘉抓,然后執(zhí)行某些指令(啟動(dòng)必要的應(yīng)用索守,同時(shí)安排到集群節(jié)點(diǎn)中),于是就使集群的實(shí)際狀態(tài)適配到了期望的狀態(tài)抑片。
k8s主節(jié)點(diǎn)(Kubernetes Master)
k8s masterk負(fù)責(zé)維護(hù)集群的期望的狀態(tài)卵佛。當(dāng)我們和k8s進(jìn)行交互時(shí),如使用kubectl命令行接口,我們是在和集群的k8s master進(jìn)行通訊截汪。
這個(gè)“master”涉及到管理著集群狀態(tài)的數(shù)個(gè)進(jìn)程疾牲。顯然的,所有這些進(jìn)程都運(yùn)行在集群的一個(gè)單節(jié)點(diǎn)上衙解,這個(gè)節(jié)點(diǎn)也是被用作為master的阳柔。當(dāng)然,master同樣也能夠被復(fù)制來進(jìn)行擴(kuò)容和縮減蚓峦。
k8s節(jié)點(diǎn)(Kubernetes Nodes)
集群節(jié)點(diǎn)就是那些運(yùn)行著應(yīng)用程序和云負(fù)載的機(jī)器(虛擬機(jī)舌剂,物理服務(wù)器,等等)暑椰。k8s master控制著每一個(gè)節(jié)點(diǎn)霍转,一般將很少和這些節(jié)點(diǎn)進(jìn)行直接的交互。
2019-10-24