做淘寶客沒(méi)有網(wǎng)站怎么做武漢seo優(yōu)化顧問(wèn)
五、kubernetes架構(gòu)(K8S的架構(gòu)也是master和node模式)
集群里至少需要有一個(gè)master節(jié)點(diǎn),即就是主節(jié)點(diǎn)。node節(jié)點(diǎn)可以多個(gè)。
若是多個(gè)master節(jié)點(diǎn),worker節(jié)點(diǎn)和master的apiserverr進(jìn)行交互時(shí),就需要通過(guò)LB(load banlance)
1、示意圖(一個(gè)master、兩個(gè)worker節(jié)點(diǎn))
1.1此處紅色圈住的是master節(jié)點(diǎn)
1.2后面的是兩個(gè)worker節(jié)點(diǎn)
網(wǎng)盤(pán)的集群一個(gè)master兩個(gè)worker
2、組件
2.1、master組件:apiserver、schedule、contonrollermanager
1)master節(jié)點(diǎn)的作用
控制整個(gè)集群、負(fù)責(zé)整個(gè)集群的控制和管理。
可以暴露api
調(diào)度部署
對(duì)節(jié)點(diǎn)進(jìn)行管理。
master是不建議去部署我們的應(yīng)用程序的,部署應(yīng)用程序會(huì)增加節(jié)點(diǎn)的壓力,如果master節(jié)點(diǎn)掛了,單個(gè)看s就不可以再進(jìn)行用,master節(jié)點(diǎn)可以打污點(diǎn)
2)master組件中apiserver、schedule、contonrollermanager的作用
①apiserver
集群的控制中樞,整個(gè)K8S的操作都是要經(jīng)過(guò)apiserver,即就是資源操作的入口。也是資源操作唯一的入口。
②contonrollermanager
一個(gè)控制器,會(huì)通過(guò)apiserver提供的接口去實(shí)時(shí)監(jiān)控集群所有資源的狀態(tài)。會(huì)保證資源達(dá)到期望值
③schedule調(diào)度器
通過(guò)apiserver提供的接口,和這個(gè)apiserver進(jìn)行通信。如果監(jiān)聽(tīng)到有創(chuàng)建資源的信息,通過(guò)kubectl創(chuàng)建發(fā)送資源的命令,監(jiān)聽(tīng)到創(chuàng)建資源的信息后,會(huì)檢索所有要求pod的work節(jié)點(diǎn),通過(guò)調(diào)度算法去選擇節(jié)點(diǎn),最后將資源綁在目標(biāo)的節(jié)點(diǎn)上。
關(guān)于master至少要三個(gè)節(jié)點(diǎn),這樣才可以實(shí)現(xiàn)高可用。如果一個(gè)掛了,整個(gè)k8s都沒(méi)法用了。
2.2、worcker節(jié)點(diǎn)組件(即就是node節(jié)點(diǎn)):主要就是kubelet、kube-proxy
1)kubelet作用
兩個(gè)woker節(jié)點(diǎn),上面一個(gè),下面一個(gè)
kubelet監(jiān)聽(tīng)節(jié)點(diǎn)上的pod的狀態(tài),定期去調(diào)用apiserver暴露的接口,上報(bào)節(jié)點(diǎn)和pod節(jié)點(diǎn)的狀態(tài)上報(bào)到aiserver。也可以通過(guò)apisertver監(jiān)聽(tīng)到pod相關(guān)信息,監(jiān)聽(tīng)到資源不滿(mǎn)足期望,會(huì)告訴給apiserver,kubelet就獲取到了這個(gè)信息,要啟動(dòng)pod的節(jié)點(diǎn),會(huì)去調(diào)用docker提供的接口創(chuàng)建pod。創(chuàng)建成功后,會(huì)把信息上傳到給apiserver,apsserver每次會(huì)把信息放到etcd中,edc是鍵值數(shù)據(jù)庫(kù)。etcd的也是多個(gè),work節(jié)點(diǎn)上另外一個(gè)就是kube-proxy,做負(fù)載均衡,每個(gè)worker上都有。
2)kube-proxy(提供網(wǎng)絡(luò)代理、負(fù)載均衡)
3)calico
kubetcl get po -n kube-system -owide
獲取pod,通過(guò) -n指定命名空間、kube-system系統(tǒng)命名空間、-owide展示擴(kuò)展信息
上面有calico,網(wǎng)絡(luò)插件,功能就是給每個(gè)pod提供IP,并且將每一個(gè)node當(dāng)作路由器。
4)coredns
解決服務(wù)發(fā)現(xiàn)問(wèn)題,服務(wù)之間,訪(fǎng)問(wèn)的話(huà)都是通過(guò)serversice進(jìn)行調(diào)用,sevice解析ip地址就是coredns進(jìn)行解析。
這里也可以看coredns的service
kubetcl get svnc -n kube-system
kube-dns默認(rèn)是k8s serverice網(wǎng)段的第10個(gè)
每一個(gè)節(jié)點(diǎn)還會(huì)去安裝docker,docker是容器引擎,主要就是負(fù)責(zé)對(duì)本機(jī)上容器的一個(gè)創(chuàng)建拉取鏡像。
這些pod都在系統(tǒng)空間下
meterics-server采集數(shù)據(jù)的??梢酝ㄟ^(guò)kebutcl top po -n
,默認(rèn)命名空間下密鑰創(chuàng)建pod。此時(shí)看到的資源都指定了是kubetcl命名空間下的
通過(guò)命令可以看到每個(gè)pod的cpu、內(nèi)存、的消耗。
cpu的m是豪赫。1000mh的話(huà)是等于1h
3、etcd
etcd生生產(chǎn)環(huán)境上一定是集群
etcd在redis也看到過(guò),是在鍵值數(shù)據(jù)庫(kù)里,都是鍵值數(shù)據(jù)庫(kù)
關(guān)于etc也是部署三個(gè)以上的基數(shù)節(jié)點(diǎn),而且是單獨(dú)部署,不要和master部署,最好使用ssd的硬盤(pán),不然會(huì)導(dǎo)致集群比較慢,apisever會(huì)頻繁的和etcd做交互,把收集到的信息次持久化到etcd中。