這篇文章主要介紹了kubernetes是什么意思,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的涪陵網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
kubernetes是什么
kubernetes是Google的一個(gè)大規(guī)模容器管理技術(shù)的開(kāi)源版本,可能大部分初學(xué)者是學(xué)習(xí)docker的過(guò)程中認(rèn)識(shí)到kubernetes的,kubernetes確實(shí)也能很簡(jiǎn)單的集成docker,但是,docker只是kubernetes支持的容器之一,并不是只有docker才能與kubernetes集成,只不過(guò)因?yàn)閐ocker比較流行所以優(yōu)先使用docker。
那么為什么會(huì)有這個(gè)kubernetes呢?這與第一句介紹有關(guān):kubernetes是一個(gè)大規(guī)模容器管理技術(shù)的開(kāi)源版本,也就是說(shuō)kubernetes是為了管理大規(guī)模容器集群的技術(shù),因?yàn)楫?dāng)容器多到一定程度后,手動(dòng)一個(gè)個(gè)管理就比較麻煩了,耗時(shí)耗力,這時(shí)就有了眾多的容器管理解決方案,方便管理大量的容器,而kubernetes則是其中比較優(yōu)秀的一個(gè),所以使用者也就比較多了。
kubernetes中的概念
kubernetes中增加了很多新名詞、新概念,新手起初看的時(shí)候可能會(huì)頭暈,感覺(jué)亂,下面就來(lái)介紹一下kubernetes中的幾個(gè)重要概念。
首先是Pod,在kubernetes中,最小的管理單位是Pod而不是docker或其他容器的實(shí)例,一個(gè)Pod可以包含多個(gè)容器,而Pod則對(duì)這些容器進(jìn)行統(tǒng)一管理。
在kubernetes集群中,各個(gè)Pod都擁有一個(gè)虛擬的IP,該IP會(huì)在Pod創(chuàng)建后由kubernetes隨機(jī)分配,這個(gè)IP外部無(wú)法直接訪問(wèn),而在kubernetes內(nèi)部則是互通的,相當(dāng)于一個(gè)虛擬局域網(wǎng)絡(luò)。
一個(gè)Pod如果想要對(duì)外提供服務(wù),則需要開(kāi)放端口(也可以通過(guò)其他方式解決,這是官方提供的方式),Pod的ClusterIP+端口號(hào)就組成了一個(gè)Endpoint,該Endpoint對(duì)外提供服務(wù),而一個(gè)Pod可以開(kāi)放多個(gè)端口,也就是可以對(duì)應(yīng)多個(gè)Endpoint。如果想要該Endpoint可以對(duì)kubernetes集群外的客戶端提供服務(wù),那只需要綁定一個(gè)本機(jī)端口即可。
在kubernetes中,直接編寫(xiě)一個(gè)Pod配置文件并發(fā)布到kubernetes集群是允許的,但是這相比直接部署docker容器并沒(méi)有什么優(yōu)勢(shì),而kubernetes提供了一種更優(yōu)優(yōu)勢(shì)的方案,那就是通過(guò)Pod管理器去管理Pod,在較早的版本中使用的是ReplicationController(后稱RC),在新版本中則提供了Deployment,本文不對(duì)比兩種方案的優(yōu)劣,只通過(guò)RC來(lái)介紹該方案的優(yōu)勢(shì)。
使用RC你可以通過(guò)配置文件來(lái)完成對(duì)Pod數(shù)量的控制,只需要在RC文件中指明你需要10個(gè)某個(gè)Pod的實(shí)例,那么RC會(huì)自動(dòng)幫你部署好10個(gè)指定Pod的實(shí)例,省去了一大筆部署時(shí)間,而當(dāng)其中某個(gè)Pod掛掉后,如果是直接部署的Pod,那么就需要手動(dòng)去重啟了,而且還不一定能實(shí)時(shí)監(jiān)控到Pod的健康狀態(tài),但是通過(guò)RC去部署Pod,當(dāng)Pod掛掉后RC會(huì)自動(dòng)重新部署一個(gè)Pod來(lái)保證Pod的總數(shù)不變。
在kubernetes內(nèi)網(wǎng)中,調(diào)用一個(gè)服務(wù)可以通過(guò)Pod的clusterIP+port的方式調(diào)用,但是由于Pod的clusterIP是在Pod創(chuàng)建后隨機(jī)分配的,也就是無(wú)法提前得知Pod的clusterIP,同時(shí)Pod有可能被重建,當(dāng)Pod被重建后IP也會(huì)隨之變化,這樣就造成一個(gè)問(wèn)題,kubernetes也提供了使用環(huán)境變量的方法解決,也就是當(dāng)Pod創(chuàng)建完后會(huì)加一條環(huán)境變量保存Pod的IP,其他服務(wù)調(diào)用方可以通過(guò)環(huán)境變量獲取該P(yáng)od的IP,進(jìn)而調(diào)用服務(wù),但是以上方式有一些明顯的缺點(diǎn),需要寫(xiě)死IP,但是當(dāng)Pod重建后之前寫(xiě)死的IP就會(huì)失效,如果通過(guò)環(huán)境變量獲取,那么由于Pod可能重建,所以需要每次使用都重新獲取,比較麻煩,所以kubernetes提供了Service的概念解決了該問(wèn)題。
對(duì)于一個(gè)服務(wù),可以寫(xiě)一個(gè)Service統(tǒng)一對(duì)外提供服務(wù),Service的IP是固定不變的,同時(shí)Service不僅解決了Pod的IP無(wú)法確定的問(wèn)題,如果有多個(gè)Pod提供同一服務(wù),那么通過(guò)Service還可以為這些Pod做負(fù)載均衡,Service會(huì)根據(jù)指定負(fù)載均衡策略去將請(qǐng)求分發(fā)到不同的Pod中。
有了Service就可以通過(guò)IP去調(diào)用服務(wù)了,但是Service的IP不容易記憶,那怎么辦?kubernetes同時(shí)還提供了一套完善的DNS服務(wù),通過(guò)DNS服務(wù),你可以通過(guò)Service的名稱調(diào)用到服務(wù),而DNS服務(wù)則會(huì)將Service的名稱轉(zhuǎn)換為Service的IP。
在kubernetes中,一個(gè)Node對(duì)應(yīng)一個(gè)主機(jī)或者一個(gè)虛擬機(jī),Node是Pod的載體,所有Pod都在Node里邊部署。當(dāng)擴(kuò)展主機(jī)時(shí),只需要增加一些配置,該主機(jī)就可以自動(dòng)被kubernetes的master發(fā)現(xiàn)并配置為一個(gè)Node,供后續(xù)部署Pod使用,擴(kuò)容起來(lái)十分的快。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“kubernetes是什么意思”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!