Kubernetes中如何部署一個(gè)應(yīng)用?
近日以來(lái),Kubernetes棄用Docker、不再維護(hù)與Docker之間的橋接關(guān)系已在Apache開(kāi)源基金會(huì)公布,在技術(shù)圈內(nèi)也傳的風(fēng)生水起,其實(shí)Docker的結(jié)局不是偶然,而是必然。自Google大舉推出Kubernetes以來(lái),快速的完善其能力,Docker的被拋棄已是必然,只是時(shí)間早晚問(wèn)題。作為互聯(lián)網(wǎng)研發(fā)運(yùn)維同學(xué),我們是時(shí)候好好了解下Kubernetes了~什么是Kubernetes呢?一個(gè)自動(dòng)化容器操作的開(kāi)源平臺(tái),支持自動(dòng)部署、調(diào)度節(jié)點(diǎn)、彈性伸縮。此外,它還是一個(gè)開(kāi)放的開(kāi)發(fā)平臺(tái),不局限于任何開(kāi)發(fā)平臺(tái),不限定任何編程接口。無(wú)論是使用Java、python、golang、net編寫(xiě)的服務(wù)都可以映射為k8s的service,通過(guò)標(biāo)準(zhǔn)的tcp協(xié)議進(jìn)行交互。并且由于k8s對(duì)開(kāi)發(fā)框架、開(kāi)發(fā)語(yǔ)言沒(méi)有侵入性,所以即使應(yīng)用原先部署在私有云、物理機(jī)平臺(tái)都可以平滑地遷移到k8s平臺(tái)。最后它還是一個(gè)分布式系統(tǒng)開(kāi)發(fā)與支撐平臺(tái),提供靈活的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制、強(qiáng)大的故障發(fā)現(xiàn)能力、自我修復(fù)能力、彈性擴(kuò)容能力,涵蓋了從開(kāi)發(fā)到上線運(yùn)維的全過(guò)程,讓開(kāi)發(fā)人員只聚焦于業(yè)務(wù)開(kāi)發(fā)。Kubernetes中有MasterNode、WorkNode兩大技術(shù)概念。主節(jié)點(diǎn)masternode控制整個(gè)集群,是指揮中心,從節(jié)點(diǎn)worknode處理業(yè)務(wù),是業(yè)務(wù)骨干。MasterNode包括kubectl、Apiserver、Scheduler、Controller、Ectd,我們從數(shù)據(jù)流來(lái)看Kubernetes內(nèi)部是如何運(yùn)轉(zhuǎn)。管理人員(一般為運(yùn)維人員)通過(guò)kubetcl來(lái)執(zhí)行資源的增、刪、改、查等操作,而kubetcl是通過(guò)APIserver來(lái)去執(zhí)行這一系列管理動(dòng)作的,并在執(zhí)行的過(guò)程中將所有資源對(duì)象的信息存在在etcd,Scheduler負(fù)責(zé)整個(gè)Pod資源的調(diào)度(比如業(yè)務(wù)訪問(wèn)量增大需要擴(kuò)容等),Controller-manager通過(guò)Apiserver提供的接口實(shí)時(shí)監(jiān)控整個(gè)集群資源對(duì)象的當(dāng)前狀態(tài),當(dāng)某個(gè)node發(fā)生意外時(shí)會(huì)執(zhí)行自動(dòng)修復(fù)流程,保障業(yè)務(wù)的正常運(yùn)行。Workernode包括kubelet、Kube-proxy、Pod、Container,其中Kubelet負(fù)責(zé)Pod對(duì)應(yīng)的容器的創(chuàng)建、啟動(dòng)、停止等任務(wù),同時(shí)與Master節(jié)點(diǎn)一起管理集群,Kube-proxy負(fù)責(zé)內(nèi)外的通信,即將來(lái)自外部的Internet訪問(wèn)和具體的業(yè)務(wù)Pod節(jié)點(diǎn)關(guān)聯(lián),Pod即業(yè)務(wù)節(jié)點(diǎn),由一個(gè)或多個(gè)Docker容器組成,底層基于Docker引擎來(lái)創(chuàng)建容器。Service服務(wù)負(fù)責(zé)業(yè)務(wù)與機(jī)器之間的映射,一個(gè)Service對(duì)應(yīng)多個(gè)處理同類(lèi)業(yè)務(wù)。Kubernetes的基礎(chǔ)概念介紹完了之后,我們來(lái)看看在Kubernetes中如何從0到1的部署一個(gè)應(yīng)用呢?總的來(lái)說(shuō)包含6個(gè)部分:制作鏡像—》管理Pod—〉持久化Pod數(shù)據(jù)—》暴露應(yīng)用—〉發(fā)布應(yīng)用—》監(jiān)控應(yīng)用。第一步是制作鏡像,我們知道應(yīng)用除了業(yè)務(wù)服務(wù)之外,還包含數(shù)據(jù)庫(kù)、MQ等中間件,Centos、Ubuntu等中間件。在Kubernetes中承載應(yīng)用的便是容器,而容器中承載應(yīng)用的便是鏡像。鏡像就像一個(gè)文件目錄,從下往上包含基礎(chǔ)鏡像、中間件鏡像、服務(wù)鏡像,一層層的堆疊起來(lái)。運(yùn)維人員把基礎(chǔ)鏡像、中間件鏡像做好了之后,交給開(kāi)發(fā)人員制作服務(wù)鏡像,三個(gè)鏡像都完事兒之后,應(yīng)用鏡像就做好了,里面包含了應(yīng)用的代碼和所運(yùn)行的環(huán)境。第二步是管理Pod。在Kubernetes中,服務(wù)通過(guò)鏡像部署在容器中,但容器畢竟只是一個(gè)封閉式的沙箱,每一個(gè)相互隔離,我們需要有更上層的概念把它們給組合起來(lái),這便是Pod,一個(gè)Pod中有多個(gè)容器,共享相同的網(wǎng)絡(luò)和IP地址。在Kubernetes中主要是通過(guò)控制器Controller管理控制。從業(yè)務(wù)的類(lèi)型分為有狀態(tài)應(yīng)用(產(chǎn)生持久化數(shù)據(jù),需要數(shù)據(jù)存儲(chǔ)功能等,比如mysql、Kafka)、無(wú)狀態(tài)應(yīng)用(應(yīng)用實(shí)例不涉及事務(wù)交互,不產(chǎn)生持久化數(shù)據(jù),對(duì)同一個(gè)請(qǐng)求響應(yīng)結(jié)果完全一致,比如tomcat)、守護(hù)型應(yīng)用(長(zhǎng)期運(yùn)行、提供持續(xù)的監(jiān)聽(tīng)服務(wù))、批處理型應(yīng)用(一次性的處理大量任務(wù))來(lái)看,控制器也分為Deployment、StatefulSet、DaemonSet、Job、CronJob幾類(lèi)。根據(jù)應(yīng)用的不同類(lèi)型,可設(shè)置不同的控制器,通過(guò)Kind字段進(jìn)行定義即可。第三步是持久化Pod數(shù)據(jù),在容器部署過(guò)程中一般需要啟動(dòng)時(shí)的初始化數(shù)據(jù)、啟動(dòng)過(guò)程中的臨時(shí)數(shù)據(jù)、啟動(dòng)中產(chǎn)生的持久化數(shù)據(jù),在Pod內(nèi)通過(guò)Volume卷進(jìn)行數(shù)據(jù)持久化,即使容器銷(xiāo)毀了,Volume卷中的數(shù)據(jù)仍然存在。Kubernetes支持多達(dá)28種數(shù)據(jù)類(lèi)型,EmptyDir類(lèi)型在創(chuàng)建Pod時(shí)產(chǎn)生、Pod移除時(shí)數(shù)據(jù)卷才被釋放;HostPath支持將Pod中文件系統(tǒng)的某一個(gè)文件或目錄掛載容器組;Persistent類(lèi)型是Pod集群中的一塊存儲(chǔ)空間,作為一個(gè)資源對(duì)象被管理,通過(guò)編寫(xiě)yaml文件可進(jìn)行持久化數(shù)據(jù)。第四步是暴露應(yīng)用,在Kubernetes中的Service便可提供Pod服務(wù)的暴露,一個(gè)Service對(duì)應(yīng)多個(gè)Pod,用戶請(qǐng)求對(duì)應(yīng)多個(gè)Service,通過(guò)Service的服務(wù)發(fā)現(xiàn)和負(fù)載均衡作用,將一個(gè)請(qǐng)求轉(zhuǎn)發(fā)給多個(gè)Pod進(jìn)行完成。第五步是發(fā)布應(yīng)用,在Kuernetes中一般通過(guò)ingress去發(fā)布應(yīng)用,讓用戶去訪問(wèn),每個(gè)ingress會(huì)關(guān)聯(lián)一組pod,而service會(huì)創(chuàng)建這組pod的負(fù)載均衡,通過(guò)service去區(qū)分這些節(jié)點(diǎn)上的Pod。結(jié)合DevOps流程,開(kāi)發(fā)人員通過(guò)在Github等代碼倉(cāng)庫(kù)上傳下載代碼,使用Jenkins進(jìn)行編譯構(gòu)建,最后通過(guò)Kubernetes進(jìn)行部署即可。第六步是監(jiān)控應(yīng)用,監(jiān)控就像我們的眼睛一樣,替我們看管著Kubernetes中的上百上千個(gè)Container節(jié)點(diǎn)。在Kubernetes常用的監(jiān)控有兩種方式,其一是在服務(wù)中插入探針,隨著Docker一起部署運(yùn)行,采集實(shí)時(shí)運(yùn)行狀態(tài)(如服務(wù)調(diào)用鏈路、接口調(diào)用情況)進(jìn)行分析,其二是獲取從容器到應(yīng)用的運(yùn)行日志。至此,關(guān)于Kubernetes是什么?技術(shù)架構(gòu)和核心概念、如何的從0到1部署應(yīng)用我們便介紹完了。在背靠Google的情況下,Kubernetes毫無(wú)疑問(wèn)會(huì)成為云原生最熱門(mén)的技術(shù),趕快學(xué)習(xí)、實(shí)戰(zhàn)起來(lái)吧~
主站蜘蛛池模板:
人妻激情偷乱视频一区二区三区
|
国产一区二区三区在线看|
国产主播在线一区|
日韩精品午夜视频一区二区三区|
波多野结衣中文一区|
亚洲国产精品一区二区久|
精品国产一区二区三区久久蜜臀|
亚洲av日韩综合一区久热|
无码av免费毛片一区二区|
中文无码精品一区二区三区|
日韩在线一区二区三区视频|
伊人久久精品一区二区三区|
人妻无码久久一区二区三区免费|
午夜福利一区二区三区高清视频
|
国产成人一区二区三区精品久久|
国产一区二区草草影院|
亚洲日本一区二区三区|
国产视频一区二区在线播放|
中文字幕永久一区二区三区在线观看|
久久精品免费一区二区三区|
国产一区二区精品久久岳|
国产成人一区二区三区视频免费
|
中文字幕一区二区三区永久|
亚洲男人的天堂一区二区|
一区二区三区在线|日本|
国产一区二区电影在线观看|
久久一区二区三区99|
高清国产精品人妻一区二区|
亚洲综合av永久无码精品一区二区|
中文字幕亚洲综合精品一区|
欧美成人aaa片一区国产精品|
麻豆视频一区二区三区|
丝袜美腿高跟呻吟高潮一区|
亚洲高清偷拍一区二区三区|
成人区精品人妻一区二区不卡|
国产福利91精品一区二区三区|
无码国产精品一区二区高潮|
色噜噜AV亚洲色一区二区|
人妖在线精品一区二区三区|
日韩一区二区三区射精|
欧洲亚洲综合一区二区三区|