摘要:管理其下控制的的生命周期,保證指定數(shù)量的正常運(yùn)行。青云在國(guó)內(nèi)是獨(dú)樹(shù)一幟,特別適合用來(lái)部署這種分布式應(yīng)用。其中,是提供的命令行工具,可在任何被管理的機(jī)器上運(yùn)行。這里嘗試用命令行工具檢查下集群狀態(tài)。
一、Kubernetes概述
Kubernetes是Google一直在推進(jìn)的容器調(diào)度和管理系統(tǒng),是Google內(nèi)部使用的容器管理系統(tǒng)Borg的開(kāi)源版本。它可以實(shí)現(xiàn)對(duì)Docker容器的部署,配置,伸縮和監(jiān)控等。當(dāng)下,Kubernetes絕對(duì)是最火熱的開(kāi)源工程之一,在短短的一年多時(shí)間里,其Github工程已有接近兩萬(wàn)次的Commits提交,一千多個(gè)PR。目前已經(jīng)正式發(fā)布1.0版本,具備服務(wù)生產(chǎn)環(huán)境的能力。
Kubernetes作為容器管理和調(diào)度系統(tǒng),能在多臺(tái)Host上部署預(yù)定義的容器,實(shí)現(xiàn)跨Host容器的互通訪(fǎng)問(wèn)。下圖是Kubernetes的High-level架構(gòu)圖:
Kubernetes的基本概念包括:
Cluster:Kubernetes維護(hù)一個(gè)集群,Docker的containers都運(yùn)行其上。并且,這個(gè)集群可以運(yùn)維在任何云及Bare Metal物理機(jī)上。
Master:Master節(jié)點(diǎn)包含apiserver,controller-manager,sheduler等核心組件(常常也將etcd部署于其中)。
Node:Kubernetes采用Master-Slaves方式部署,多帶帶一臺(tái)Slave機(jī)器稱(chēng)為一個(gè)Node(以前叫 Minion)。
Pods:Kubernetes最小管理單位,用于控制創(chuàng)建、重啟、伸縮一組功能相近,共享磁盤(pán)的Docker容器。雖然Pod可以多帶帶創(chuàng)建使用,但是推薦通過(guò)Replication Controller管理。
Replication controllers(RC):管理其下控制的Pods的生命周期,保證指定數(shù)量(replicas)的Pods正常運(yùn)行。
Service:可用作服務(wù)發(fā)現(xiàn),類(lèi)似于Loadbalancer,通過(guò)Selectors為一組Pods提供對(duì)外的接口。
Labels:K/V鍵值對(duì),用來(lái)標(biāo)記Kubernetes組件的類(lèi)別關(guān)系(例如標(biāo)記一組Pods是frontServices,另一組是backServices)。Labels對(duì)于Kubernetes的伸縮調(diào)度非常重要。
如果想了解Low-Level的架構(gòu)細(xì)節(jié),可以查看其官網(wǎng)的架構(gòu)圖http://kubernetes.io/v1.0/docs/design/architecture.png。
從官網(wǎng)的架構(gòu)圖中可以看到,Kubernetes是一個(gè)組件多且依賴(lài)復(fù)雜的系統(tǒng)(上圖僅僅是單Master,三臺(tái)Node的情況。目前,Kubernetes已經(jīng)支持Multi-Masters的部署架構(gòu),即需要至少三臺(tái)主機(jī)作為Master)。并且Kubernetes社區(qū)開(kāi)發(fā)速度非???,版本差異大,文檔更新往往不及時(shí)。所以,如果需要完整部署測(cè)試仍然有不少的工作量。如果要在生產(chǎn)中使用它,其運(yùn)維管理也有較高的門(mén)檻。這里,我們將詳細(xì)介紹如何使用FIT2CLOUD幫助用戶(hù)高效完成Kubernetes的系統(tǒng)部署、日常運(yùn)維等,降低用戶(hù)使用它的難度。
二、Kubernetes、青云QingCloud、FIT2CLOUD三者之間的關(guān)系首先,Kubernetes作為容器管理系統(tǒng),其自身也需要部署在相應(yīng)的計(jì)算資源之上。而我們認(rèn)為只有部署在IaaS平臺(tái)上的Kubernetes才能充分發(fā)揮其彈性調(diào)度管理的特性。這里,我們選擇了QingCloud作為部署Kubernetes集群的IaaS平臺(tái),主要是考慮如下幾個(gè)因素:
從安全角度看,類(lèi)似Kubernetes這類(lèi)的PaaS應(yīng)該是部署在VPC內(nèi)。青云VPC在國(guó)內(nèi)是獨(dú)樹(shù)一幟,特別適合用來(lái)部署Kubernetes這種分布式應(yīng)用。
從部署管理角度看,青云提供的“userdata”和“metadata”功能在自動(dòng)初始化云主機(jī)上非常有用,可以簡(jiǎn)化整個(gè)部署過(guò)程。
從成本和靈活性角度看,青云的按秒計(jì)費(fèi),資源快速響應(yīng)是非常有吸引力的。這點(diǎn)以我們自身為例:一年多以來(lái)我們已經(jīng)在青云上面創(chuàng)建了超過(guò)1萬(wàn)五千臺(tái)虛機(jī),花費(fèi)僅在1000多。
其次,Kubernetes本身作為一個(gè)復(fù)雜的分布式應(yīng)用,也需要工具(比如FIT2CLOUD)來(lái)實(shí)現(xiàn)快速部署、統(tǒng)一管理、監(jiān)控告警、升級(jí)和伸縮。Kubernetes負(fù)責(zé)容器的調(diào)度和管理,F(xiàn)IT2CLOUD則負(fù)責(zé)主機(jī)的調(diào)度和管理。
最后,從目標(biāo)用戶(hù)視角看,Kubernetes集群(容器云)的使用者是應(yīng)用開(kāi)發(fā)人員,或者準(zhǔn)確的講是基于Docker容器的微服務(wù)開(kāi)發(fā)者,而FIT2CLOUD和QingCloud的使用者是Kubernetes集群(容器云)運(yùn)維和系統(tǒng)管理員。下圖清晰描述了Kubernetes、QingCloud、FIT2CLOUD三者及其使用者之間的關(guān)系:
QingCloud的VPC基于二層網(wǎng)絡(luò)隔離,實(shí)現(xiàn)了100%的私有網(wǎng)絡(luò)隔離,并且用戶(hù)在其Web控制臺(tái)就能完全操作VPC私有網(wǎng)絡(luò),包括創(chuàng)建私有網(wǎng)絡(luò),綁定公網(wǎng) IP,DHCP,端口映射轉(zhuǎn)發(fā)等。
我們推薦在QingCloud的VPC內(nèi)網(wǎng)中部署Kubernetes,之后通過(guò)綁定公網(wǎng)IP和端口映射將KubernetesMaster節(jié)點(diǎn)的apiserver endpoint暴露出來(lái)。具體部署架構(gòu)如下圖所示:
在此之前,我們需要在QingCloud的Web控制臺(tái)上配置下VPC網(wǎng)絡(luò)。具體如下:
創(chuàng)建一個(gè)VPC私有網(wǎng)絡(luò),同時(shí)創(chuàng)建一個(gè)路由器,如下圖所示:
創(chuàng)建一個(gè)虛擬路由器,并把上一步創(chuàng)建的私有網(wǎng)絡(luò)連接到該路由器上,如下圖所示:
注意:創(chuàng)建虛擬路由器時(shí),需打開(kāi)該虛擬路由器所用防火墻下行8080端口。因?yàn)樵摱丝趯⒃诤竺嬗糜谙蛲獗┞禟ubernetes服務(wù)接口。
申請(qǐng)一個(gè)公網(wǎng) IP,綁定在路由器上,以便VPC內(nèi)的Kubernetes apiserver 可以通過(guò)路由器對(duì)外提供服務(wù)。
在VPC內(nèi)建立一個(gè)負(fù)載均衡器(LoadBalancer),并為其在8080端口負(fù)載均衡器的監(jiān)聽(tīng)器來(lái)監(jiān)聽(tīng)Kubernetes Master節(jié)點(diǎn)上的apiserver服務(wù)(該服務(wù)默認(rèn)運(yùn)行在8080端口)。 這樣做的好處是可以只需要配置一次VPC私有網(wǎng)絡(luò)及端口轉(zhuǎn)發(fā)規(guī)則,在私有網(wǎng)絡(luò)內(nèi)部啟動(dòng)關(guān)閉主機(jī)都會(huì)自動(dòng)attach到LoadBalancer,對(duì)外提供服務(wù)。 具體操作如下圖:
一旦VPC創(chuàng)建配置完成,就可以開(kāi)始通過(guò)FIT2CLOUD快速部署Kubernetes集群。
四、使用FIT2CLOUD部署和管理Kubernetes集群 4.1、創(chuàng)建Kubernetes集群如上所示,本次示例中,我們會(huì)部署一個(gè)單Master(192.168.0.3),2個(gè)Nodes(Minions)節(jié)點(diǎn)的Kubernetes集群。首先,我們會(huì)在FIT2CLOUD上創(chuàng)建兩個(gè)不同的虛機(jī)組。一個(gè)是k8s-master,作為Master節(jié)點(diǎn);一個(gè)是k8s-node作為Nodes 節(jié)點(diǎn)。具體步驟如下所示:
注:通過(guò)FIT2CLOUD在QingCloud上啟動(dòng)機(jī)器,需要先登入FIT2CLOUD控制臺(tái)并綁定QingCloud云賬號(hào),具體步驟可以參考FIT2CLOUD官方文檔。另外請(qǐng)參考 FIT2CLOUD新手指南(QingCloud版)了解如何快速開(kāi)始在FIT2CLOUD中管理QingCloud資源。
第一步:通過(guò)FIT2CLOUD控制臺(tái)創(chuàng)建Kubernetes集群和虛機(jī)組
如下圖創(chuàng)建Master節(jié)點(diǎn)虛機(jī)組。注意這里必須按指定虛機(jī)組名稱(chēng),因?yàn)楹罄m(xù)的初始化Master節(jié)點(diǎn)腳本需要利用到這個(gè)參數(shù)自動(dòng)發(fā)現(xiàn)master的相關(guān)信息。
類(lèi)似創(chuàng)建Node節(jié)點(diǎn)的虛機(jī)組。兩個(gè)虛機(jī)組創(chuàng)建完成后會(huì)在虛機(jī)組列表中顯示,如下圖:
第二步:新建虛機(jī)創(chuàng)建模版,分別用來(lái)Provision Master節(jié)點(diǎn)主機(jī)和Nodes節(jié)點(diǎn)主機(jī)
“虛機(jī)創(chuàng)建模板”是FIT2CLOUD內(nèi)用來(lái)快速創(chuàng)建云主機(jī)的預(yù)定義模板。包括云賬號(hào)信息、云主機(jī)配置以及相關(guān)初始化操作。為快速Provision這里的Kubernetes集群,我們需要首先新建這些模板。為新建這些模板并實(shí)現(xiàn)自動(dòng)部署Kubernetes集群,我們已經(jīng)在FIT2CLOUD中內(nèi)置了3個(gè)Kubernetes集群部署腳本(這些腳本在CentOS 7.0系統(tǒng)上測(cè)試通過(guò),在本示例中無(wú)論是Master節(jié)點(diǎn)還是Salve節(jié)點(diǎn)都請(qǐng)選擇CentOS 7.0操作系統(tǒng)),分別如下:
k8s_master_installer.sh:用來(lái)部署Kubernetes Master節(jié)點(diǎn)。
k8s_node_installer.sh: 用來(lái)部署Kubernetes Node節(jié)點(diǎn)。
k8s_ui_installer.sh:用來(lái)激活安裝 kube-ui (Kubernetes webUI)。
這些腳本可以在FIT2CLOUD的腳本列表中查看到,如下圖:
首先,設(shè)置Master節(jié)點(diǎn)的“創(chuàng)建虛機(jī)模版”,如下圖:
在這其中有兩個(gè)點(diǎn)需要注意,具體如下:
第一點(diǎn):如上圖可見(jiàn),創(chuàng)建虛機(jī)模版時(shí)可以在初始化操作中執(zhí)行腳本,這里選擇Kubernetes Master節(jié)點(diǎn)的安裝部署腳本k8s_master_installer.sh。如希望了解Master節(jié)點(diǎn)的部署流程,請(qǐng)倉(cāng)庫(kù)該腳本內(nèi)具體內(nèi)容。
第二點(diǎn):需要在Master節(jié)點(diǎn)的“創(chuàng)建虛機(jī)模板”內(nèi)指定Master主機(jī)自動(dòng)attach到負(fù)載均衡器上,從而將Kubernetes Master節(jié)點(diǎn)上的apiserver暴露給VPC外部,方便用戶(hù)從VPC外部通過(guò)公網(wǎng)IP控制Kubernetes集群。同時(shí),集群上運(yùn)行的真正負(fù)載Service也可以由此通過(guò)apiserver proxy供外部訪(fǎng)問(wèn)。該設(shè)置如下圖所示:
其次,設(shè)置Node節(jié)點(diǎn)的“創(chuàng)建虛機(jī)模板”。和Master節(jié)點(diǎn)類(lèi)似,設(shè)置Node節(jié)點(diǎn)的“創(chuàng)建虛機(jī)模板”時(shí)候需要指定初始化腳本為k8s_node_installer.sh,并同樣把啟動(dòng)的Node節(jié)點(diǎn)放到和Master節(jié)點(diǎn)相同的QingCloud私有網(wǎng)絡(luò)。但是,Node節(jié)點(diǎn)不需要如同Master節(jié)點(diǎn)那樣掛載到負(fù)載均衡器上(因?yàn)镹ode節(jié)點(diǎn)在本示例不需要對(duì)外暴露端口,而是通過(guò)Master節(jié)點(diǎn)的apiserver proxy轉(zhuǎn)發(fā)的方式對(duì)外暴露服務(wù))。k8s_node_installer.sh腳本中詳細(xì)描述了整個(gè)Node節(jié)點(diǎn)的部署流程,如下圖:
在Slave節(jié)點(diǎn)的部署腳本中需要注意如下兩點(diǎn):
上圖第一處紅色標(biāo)注中,腳本會(huì)調(diào)用f2cadm命令獲取集群Master節(jié)點(diǎn)的內(nèi)網(wǎng)IP信息,以便配置Node節(jié)點(diǎn)的kubelet服務(wù),使其加入集群。 其中,f2cadm是FIT2CLOUD提供的命令行工具,可在任何被FIT2CLOUD管理的機(jī)器上運(yùn)行。該命令行工具可從FIT2CLOUD服務(wù)端獲取當(dāng)前集群/虛機(jī)組/虛機(jī)的元數(shù)據(jù)信息。這里,f2cadm工具通過(guò)虛機(jī)組名稱(chēng)"k8s-master"來(lái)獲取集群中Master節(jié)點(diǎn)的內(nèi)網(wǎng)IP信息,這也是為什么前面創(chuàng)建Master節(jié)點(diǎn)虛機(jī)組名稱(chēng)必須為"k8s-master"的原因。當(dāng)然,理論上只需要保持腳本內(nèi)和虛機(jī)組定名稱(chēng)一致即可,不一定必須是"k8s-master"。
kubelet配置文件中,設(shè)定 KUBELET_ARGS="--pod-infra-container-image=repository.fit2cloud.com:5000/pause:latest"。如果不設(shè)置,國(guó)內(nèi)用戶(hù)啟動(dòng) kubelet 服務(wù)會(huì)到Google服務(wù)器下載 pause 的image,這會(huì)導(dǎo)致網(wǎng)絡(luò)問(wèn)題。
第三步:創(chuàng)建Kubernetes集群所需的虛機(jī)
完成上述配置之后,我們就可以回到控制臺(tái)虛機(jī)頁(yè)面,按順序啟動(dòng)一臺(tái)KubernetesMaster 主機(jī),等待其創(chuàng)建成功并執(zhí)行初始化部署腳本完畢,再啟動(dòng)2臺(tái)Nodes主機(jī)(以后如果需要擴(kuò)展Node節(jié)點(diǎn),只需要再啟動(dòng)所需數(shù)量的Nodes主機(jī)即可)。如下圖,Kubernetes集群已經(jīng)創(chuàng)建完畢:
至此,Kubernetes集群?jiǎn)?dòng)完畢,并已經(jīng)可以部署完成并正常工作。這里嘗試用kubectl命令行工具檢查下集群狀態(tài)。在本地運(yùn)行該命令后,其結(jié)果會(huì)展示2個(gè)Node節(jié)點(diǎn)已經(jīng)上線(xiàn)(Ready),具體如下。
? ~ export KUBERNETES_MASTER=http://119.254.111.36:8080 ? ~ kubectl get nodes NAME LABELS STATUS 192.168.100.3 kubernetes.io/hostname=192.168.100.3 Ready 192.168.100.5 kubernetes.io/hostname=192.168.100.5 Ready
由于是本地使用 kubectl 命令,需要設(shè)定下 KUBERNETES_MASTER 環(huán)境變量(apiserver endpoint地址),即為VPC出口公網(wǎng)IP的8080端口。
這時(shí)候我們就可以開(kāi)始測(cè)試一些Kubernetes的基本功能,比如創(chuàng)建Replication Controllers,啟動(dòng)nginx pods 并注冊(cè)一個(gè)名為nginxservice的Service做服務(wù)發(fā)現(xiàn)。
創(chuàng)建 replication controller
? k8s cat ./nginx-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: nginx spec: replicas: 3 selector: app: nginx template: metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: index.alauda.cn/library/nginx:latest ports: - containerPort: 80 ? k8s kubectl create -f nginx-rc.yaml replicationcontrollers/nginx
檢查 pods 啟動(dòng)狀態(tài):
? k8s kubectl get pods NAME READY REASON RESTARTS AGE nginx-5wjo3 1/1 Running 0 14m nginx-a2nak 1/1 Running 0 14m nginx-lb5rv 1/1 Running 0 14m
注冊(cè)名為nginxservice的Service:
? k8s cat nginx-svc.yaml apiVersion: v1 kind: Service metadata: labels: name: nginxservice name: nginxservice spec: ports: - port: 80 selector: app: nginx ? k8s kubectl create -f nginx-svc.yaml services/nginxservice
創(chuàng)建好nginx pods和相應(yīng)service后,我們可以通過(guò)apiserver proxy轉(zhuǎn)發(fā)集群內(nèi)部的service, 這樣我們就可以通過(guò) Master節(jié)點(diǎn)8080端口訪(fǎng)問(wèn)集群Node節(jié)點(diǎn)上運(yùn)行的nginx服務(wù)。
本示例為簡(jiǎn)單起見(jiàn),選擇了apiserver proxy來(lái)轉(zhuǎn)發(fā)集群內(nèi)Node節(jié)點(diǎn)的服務(wù)。用戶(hù)還可以設(shè)置其他方式訪(fǎng)問(wèn)Node節(jié)點(diǎn)上的服務(wù)。更多具體的Kubernetes的操作細(xì)節(jié),可以參考 Kubernetes 官方文檔。
第四步:安裝Kubnetes WebUI
此外,F(xiàn)IT2CLOUD還內(nèi)置了Kubernetes webUI addon的安裝腳本,只需要在Master節(jié)點(diǎn)上執(zhí)行一下 kube_ui_installer.sh腳本就可以激活安裝 kube-ui。
等待腳本執(zhí)行完畢,訪(fǎng)問(wèn)VPC路由器上綁定的公網(wǎng)IP(端口為8080),即http://<公網(wǎng)_IP>:8080/ui,就能看到部署成功的Kubernetes WebUI。其上會(huì)展示該集群的基本信息、當(dāng)前狀態(tài)等。
4.2、Kubernetes集群監(jiān)控與前文所述,Kubernetes負(fù)責(zé)的是容器的創(chuàng)建、部署、監(jiān)控和伸縮,F(xiàn)IT2CLOUD負(fù)責(zé)的是VM(虛機(jī)/云主機(jī))的創(chuàng)建,部署,監(jiān)控和伸縮。FIT2CLOUD默認(rèn)系統(tǒng)監(jiān)控可以對(duì)Kubernetes集群的CPU、內(nèi)存、硬盤(pán)和網(wǎng)絡(luò)進(jìn)行監(jiān)控,也可以設(shè)定`自定義監(jiān)控指標(biāo),對(duì)Docker或者Containers做應(yīng)用級(jí)別的監(jiān)控。例如,可以監(jiān)控每臺(tái)KubernetesNode上的containers數(shù)量,方便以后基于Nodes節(jié)點(diǎn)的Containers數(shù)量來(lái)伸縮Nodes虛機(jī)。如下圖嘗試設(shè)置該自定義監(jiān)控。
將其應(yīng)用于Kubernetes Node虛機(jī)組(包括兩臺(tái)機(jī)器)上:
Kubernetes集群的Node節(jié)點(diǎn)已經(jīng)應(yīng)用了一個(gè)自定義監(jiān)控指標(biāo),現(xiàn)在可以嘗試啟動(dòng)50個(gè)nginx的容器,在Master節(jié)點(diǎn)執(zhí)行如下命令
kubectl run my-nginx --image=nginx --replicas=50 --port=80
等待幾分鐘后就可以在監(jiān)控面板上實(shí)時(shí)查看Kubernetes集群中每個(gè)Node上的container數(shù)量(如下圖所示):
除此之外,也可以在通過(guò)這個(gè)自定義監(jiān)控實(shí)現(xiàn)VM水平上的自動(dòng)伸縮,下面馬上會(huì)介紹如何利用FIT2CLOUD自定義監(jiān)控實(shí)現(xiàn)Kubernetes集群的自動(dòng)伸縮。
4.3、Kubernetes集群自動(dòng)伸縮設(shè)置我們知道,kubectl scale 命令可以用來(lái)伸縮容器數(shù)量,實(shí)現(xiàn)容器(應(yīng)用)水平的伸縮,但是對(duì)于虛機(jī)水平的伸縮,Kubernetes自身無(wú)能為力,這就需要類(lèi)似FIT2CLOUD這樣的管理平臺(tái)來(lái)幫忙實(shí)現(xiàn)。FIT2CLOUD所做的虛機(jī)水平自動(dòng)伸縮,能保證Kubernetes集群中容器(應(yīng)用)水平的伸縮能夠不受限于節(jié)點(diǎn)數(shù)量和每個(gè)節(jié)點(diǎn)的配額限制,保證容器(應(yīng)用)的成功伸縮。
這里假設(shè)Kubernetes Nodes中的Pods/Containers的資源配額是40個(gè),通過(guò)FIT2CLOUD設(shè)定自定義監(jiān)控指標(biāo)監(jiān)控Nodes中的Containers數(shù)量。當(dāng)超過(guò)80%資源配額(40*80%=32個(gè))后,自動(dòng)創(chuàng)建一臺(tái)新的Kubernetes Nodes云主機(jī),并自動(dòng)部署后加入到集群之中;同理也可以設(shè)定當(dāng)每臺(tái)Nodes中的Pods/Containers平均數(shù)量小于一定數(shù)值時(shí),自動(dòng)回收云主機(jī),節(jié)約開(kāi)支。通過(guò)如此設(shè)置就能夠保證當(dāng)Kubernetes集群的負(fù)載達(dá)到資源配額上限前提前通過(guò)FIT2CLOUD擴(kuò)容云主機(jī)并加入集群,保證上層容器擴(kuò)容得以順利實(shí)施。當(dāng)突發(fā)負(fù)載發(fā)生并觸發(fā)Node節(jié)點(diǎn)的資源配額上限時(shí),同樣會(huì)觸發(fā)FIT2CLOUD自動(dòng)伸縮機(jī)制并擴(kuò)容云主機(jī)加入集群,然后由Kubernetes調(diào)度機(jī)制保證新加入云主機(jī)最終承擔(dān)相應(yīng)的負(fù)載。下面示例將演示突發(fā)負(fù)載這一場(chǎng)景。
現(xiàn)在假定已經(jīng)通過(guò)上述教程創(chuàng)建好了一個(gè)單Master節(jié)點(diǎn),3個(gè)Node節(jié)點(diǎn)的Kubernetes集群。接下來(lái)演示如何利用FIT2CLOUD自動(dòng)伸縮功能支持上層Kubernetes的彈性伸縮特性。
首先,在虛擬機(jī)組頁(yè)面,對(duì)Kubernetes Node節(jié)點(diǎn),設(shè)定自動(dòng)伸縮。
采用情景伸縮,針對(duì)我們上面所述自定義監(jiān)控指標(biāo),當(dāng)Node節(jié)點(diǎn)上的平均pod數(shù)量超過(guò)32個(gè)時(shí)擴(kuò)容一臺(tái)Node云主機(jī);當(dāng)其中Node節(jié)點(diǎn)上的平臺(tái)pod數(shù)量最小值小于20臺(tái)時(shí),縮容一臺(tái)Node云主機(jī),由Kubernetes自行將這一臺(tái)上已有的pod在其他Node上重新啟動(dòng)。具體設(shè)置如下:
其次,當(dāng)自動(dòng)伸縮設(shè)置完畢之后嘗試通過(guò)kubectl工具,把nginx pod總數(shù)擴(kuò)展到150臺(tái)。
kubectl scale rc my-nginx --replicas=150
觀(guān)察自動(dòng)伸縮情況,現(xiàn)在總共有3臺(tái)Node。當(dāng)pod總數(shù)突然擴(kuò)展到150臺(tái)時(shí),由于Kubernetes的默認(rèn)配額限制(每個(gè)節(jié)點(diǎn)pod數(shù)量不得超過(guò)40),現(xiàn)在每臺(tái)Node上最多運(yùn)行40個(gè)pods,總共3*40=120個(gè),無(wú)法滿(mǎn)足Kubernetes層擴(kuò)容到150臺(tái)的要求,如圖:
當(dāng)前總共有3臺(tái)Node
自定義監(jiān)控每臺(tái)Node上實(shí)際的pod數(shù)量
但是,這時(shí)平均每臺(tái)Node上會(huì)運(yùn)行40個(gè)pod,這會(huì)觸發(fā)40>32個(gè)pods的自動(dòng)伸縮條件,F(xiàn)IT2CLOUD自動(dòng)伸縮機(jī)制會(huì)擴(kuò)容一臺(tái)Node主機(jī),如圖所示:
系統(tǒng)已經(jīng)擴(kuò)展了一臺(tái)Node,新擴(kuò)展的節(jié)點(diǎn)通過(guò)虛機(jī)模板創(chuàng)建啟動(dòng),自動(dòng)會(huì)加入Kubernetes集群
新啟動(dòng)的Node節(jié)點(diǎn)加入Kubernetes集群后,Kubernetes會(huì)自動(dòng)把前面未成功scale的30個(gè)containers調(diào)度到該臺(tái)Node節(jié)點(diǎn)運(yùn)行。在FIT2CLOUD中查看之前創(chuàng)建的自定義監(jiān)控指標(biāo)“podsNum”即可觀(guān)察到這一點(diǎn)。
五、總結(jié)Kubernetes代表著目前最先進(jìn)的容器管理系統(tǒng),但是它作為PaaS(容器云)與IaaS(或者Bare-Metal物理機(jī))之間還需要FIT2CLOUD對(duì)其進(jìn)行運(yùn)維管理。FIT2CLOUD可以幫助類(lèi)似Kubernetes這樣的PaaS(容器云)更好在云環(huán)境中使用。Kubernetes+FITCLOUD+QingCloud可以讓用戶(hù)非??焖俜€(wěn)定地從底至頂搭建一套容器管理系統(tǒng)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/32424.html
摘要:下文是一體數(shù)科運(yùn)維工程師姚欣銳在沙龍現(xiàn)場(chǎng)演講速記整理。目前一體數(shù)科的產(chǎn)品有等多種終端設(shè)備,通過(guò)這種車(chē)載的終端可以收集車(chē)輛的數(shù)據(jù),把駕駛行為油耗等等數(shù)據(jù)收集到統(tǒng)一的平臺(tái)中。 在新一輪的創(chuàng)新浪潮中,物聯(lián)網(wǎng)正在高速發(fā)展。由于物聯(lián)網(wǎng)行業(yè)的特殊性以及設(shè)備數(shù)量的爆炸式增長(zhǎng),對(duì)物聯(lián)網(wǎng)的IT服務(wù)架構(gòu)提出了更高的要求。得力于云計(jì)算對(duì)地理分散的各種設(shè)備協(xié)同合作的良好支持,物聯(lián)網(wǎng)的云端化成為常態(tài)。將各種設(shè)備...
摘要:其次,青云的負(fù)載均衡器能感知到容器網(wǎng)絡(luò),而傳統(tǒng)的方案在內(nèi)部還需要再做一層虛擬網(wǎng)絡(luò),層的負(fù)載均衡器無(wú)法感知容器網(wǎng)絡(luò)。 前言 容器技術(shù)目前的市場(chǎng)現(xiàn)狀是一家獨(dú)大、百花齊放。 關(guān)于容器技術(shù),看看青云QingCloud 王淵命(老王)是如何看待它的,本文來(lái)自他在青云QingCloud 深圳站實(shí)踐課堂的演講。全文 2780字,閱讀時(shí)長(zhǎng)約為 11 分鐘。 容器是什么 容器的概念外延比較廣,討論的時(shí)候...
摘要:同時(shí),得益于青云平臺(tái)彈性可擴(kuò)展的特性,部署于虛擬主機(jī)之上的容器平臺(tái)也將隨之獲得靈活伸縮的能力,用戶(hù)可以對(duì)整個(gè)系統(tǒng)進(jìn)行橫向及縱向的彈性伸縮操作。 1956 年 4 月 26 日,一架起重機(jī)把 58 個(gè)鋁制卡車(chē)車(chē)廂裝到了一艘停泊在港內(nèi)的老油輪上,誰(shuí)也不會(huì)想到,一場(chǎng)革命就這么開(kāi)始。集裝箱的誕生,讓貨物的運(yùn)輸成本大大降低,也讓原本混亂的運(yùn)輸環(huán)境,變得整潔有序,整個(gè)物流體系更加高效,最終改變了世...
摘要:量化派是一家數(shù)據(jù)驅(qū)動(dòng)的科技金融公司,通過(guò)人工智能大數(shù)據(jù)機(jī)器學(xué)習(xí)等前沿技術(shù)提供消費(fèi)信貸撮合及消費(fèi)場(chǎng)景下的白條服務(wù),每年處理千萬(wàn)級(jí)用戶(hù)信用及信用消費(fèi)申請(qǐng)。 「小楊」最近裝修房子,準(zhǔn)備去銀行貸款,但是聽(tīng)說(shuō)好多人會(huì)因?yàn)閭€(gè)人征信問(wèn)題被銀行拒絕貸款!于是,他先查了一下自己的央行征信,發(fā)現(xiàn)竟然沒(méi)有自己的征信信息,「小楊」陷入了沉思,自己經(jīng)常在淘寶、jd 上買(mǎi)東西,也有淘寶花唄和京東白條,怎么會(huì)沒(méi)有征...
閱讀 1196·2021-11-24 09:38
閱讀 2604·2021-09-27 14:00
閱讀 1165·2019-08-30 15:55
閱讀 1340·2019-08-30 14:16
閱讀 1491·2019-08-30 10:54
閱讀 2865·2019-08-28 17:58
閱讀 758·2019-08-26 13:22
閱讀 1234·2019-08-26 12:01