這篇文章主要介紹“選擇Kubernetes作為Docker編排工具的理由有哪些”,在日常操作中,相信很多人在選擇Kubernetes作為Docker編排工具的理由有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”選擇Kubernetes作為Docker編排工具的理由有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
十載的光山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整光山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“光山網(wǎng)站設(shè)計(jì)”,“光山網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
在K8S1.1中默認(rèn)設(shè)置中,Deployments是alpha版。在1.2中,當(dāng)你開(kāi)啟一個(gè)新的集群的時(shí)候,Deployments功能開(kāi)啟beta版,被認(rèn)為是穩(wěn)定的,并且可以運(yùn)行。
為什么在K8S1.1中部署程序顯得有些乏味 (點(diǎn)擊這里閱讀更多信息:https://engineering.nanit.com/real-world-deployments-on-kubernetes-68fa81396dad#.rw2succxq),在這里我就不贅述具體細(xì)節(jié)了,這里的要點(diǎn)是:
1.你得自己計(jì)算每個(gè)部署的唯一值,然后把它放到Replication-Controller定義文件。
2.首次創(chuàng)建以及更新已經(jīng)存在的一個(gè)Replication-Controller,你得有不同的進(jìn)程。
3.在你能夠通過(guò)滾動(dòng)更新配置一個(gè)新的版本后,你得在系統(tǒng)里找一個(gè)存在的Replication-Controller。
Deployments開(kāi)始逐漸取代Replication-Controller/ Rolling-Update程序。Deployments是聲明性的,這一點(diǎn)很厲害:就是你不必告訴集群要做什么,你只要聲明你想要什么功能,然后集群就會(huì)調(diào)度所有需要的東西來(lái)將它自己呈現(xiàn)出理想狀態(tài)。不需要你自己計(jì)算唯一值,要更新的時(shí)候也不再需要自己去尋找存在的配置。
官方介紹指南使用kubectl create創(chuàng)建部署,使用kubectl apply更新部署。但從我的個(gè)人經(jīng)驗(yàn)來(lái)看,你可以在上述兩個(gè)案例中應(yīng)用,這就意味著你創(chuàng)建和更新的時(shí)候不再需要不同程序。
最后一個(gè)很棒的部署功能就是支持回滾。K8S1.1中的回滾功能已經(jīng)通過(guò)重新部署舊Replication-Controller完成。在K8S1.2中,當(dāng)你創(chuàng)建一個(gè)配置的時(shí)候,你可以使用記錄Flag。這樣的話,在你需要的任何時(shí)候,都會(huì)允許你回滾一個(gè)配置到目前的版本。
K8S1.2版本之前,K8S最大的缺點(diǎn)之一就是,它缺乏在不同AZs上對(duì)延展程序的支持。這就意味著你的集群只存活在單個(gè)的AZ上,萬(wàn)一這個(gè)AZ出什么故障,你會(huì)失去你整個(gè)的集群。要handle這些故障的唯一辦法就是管理多個(gè)集群,但是這么做的開(kāi)銷(xiāo)是在無(wú)法負(fù)擔(dān)。
K8S1.2帶來(lái)了Multi-AZ的全力支持。你可以很容易在任何AZ生成節(jié)點(diǎn),調(diào)度器能充分意識(shí)到不同節(jié)點(diǎn)調(diào)度你的pods。
雖然在這領(lǐng)域這是一個(gè)顯著的改進(jìn),但是Multi-AZ支持并不適用于K8S及其組件。你的集群仍然存在于一個(gè)AZ,如果這個(gè)AZ停機(jī)你會(huì)陷入一種古怪的狀態(tài):集群功能齊全但集群不會(huì),這就意味著不能handle部署操作等等。
K8S1.2帶來(lái)完全支持Multi-AZ的功能。你可以輕松的在任意AZ上復(fù)活,而且調(diào)度器調(diào)度你的pods到不同的節(jié)點(diǎn)上的時(shí)候?qū)Υ耸橇私獾摹?/p>
這個(gè)領(lǐng)域中,這是一個(gè)了不起的改進(jìn),因?yàn)橹С諱ulti-AZ 不僅應(yīng)用于K8S master和它的組件。你的Master在單個(gè)的AZ上面也是運(yùn)行的,如果AZ出了故障,你將會(huì)陷入一個(gè)不好的狀態(tài):集群全都會(huì)起作用,但是master卻不會(huì),這就意味著想配置這樣的操作處理不了。
K8S1.1有一個(gè)通過(guò)Secrets存儲(chǔ)配置內(nèi)置選項(xiàng)。但是仍然推薦使用Secrets來(lái)存儲(chǔ)敏感數(shù)據(jù),ConfigMap允許通過(guò)更加直接方便的方式來(lái)允許我們存儲(chǔ)不敏感數(shù)據(jù)配置。
K8S1.2中一個(gè)很棒的調(diào)整就是,Secrets和ConfigMap不僅可以作為數(shù)據(jù)卷(K8S1.1中的唯一選擇)使用,而且對(duì)于你的定義文件來(lái)說(shuō),還可以作為環(huán)境變量。比加載數(shù)據(jù)卷和在應(yīng)用程序上讀取文件更加方便,就是為了獲取一個(gè)簡(jiǎn)單的配置項(xiàng)目。
擁有一個(gè)K8S集群有時(shí)讓我們忘記我們有集群中還有節(jié)點(diǎn)。我們創(chuàng)建容器,但是大多數(shù)時(shí)候我們甚至不知道他們跑在哪個(gè)節(jié)點(diǎn)上。
雖然也有那么幾次當(dāng)我們需要處理一些與節(jié)點(diǎn)相關(guān)的任務(wù)的時(shí)候是知道的。一個(gè)例子就是,一個(gè)應(yīng)用程序從節(jié)點(diǎn)收集語(yǔ)句,然后傳送他們到一些度量服務(wù)器。另一個(gè)例子就是,從所有運(yùn)行在節(jié)點(diǎn)上的容器那里收集所有日志,然后發(fā)送到我們的登錄系統(tǒng)。這些例子中,我們需要單個(gè)的容器在運(yùn)行每個(gè)節(jié)點(diǎn)。
K8S1.1僅僅只是提供給我們靜態(tài)pods來(lái)完成這個(gè)目的。為了定義一個(gè)靜態(tài)pod,我們可能不得不在每個(gè)節(jié)點(diǎn)上的特定文件夾下用pod定義。這顯然很不方便因?yàn)椋?/p>
1、 如果我們想要添加靜態(tài)pods,我們就不得不警告在集群上運(yùn)行的每個(gè)節(jié)點(diǎn)。
2、 靜態(tài)pods在本地被kubelet管理,所以我們無(wú)法查詢API,也無(wú)法對(duì)他們進(jìn)行任何別的操作。
K8S1.2介紹了 Daemon-Sets,它會(huì)提供給我們一個(gè)更加方便的方式在每個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)pod。Daemon-Sets里面的pods是可視的,就好像系統(tǒng)里的其他pod一樣。你可以刪除一個(gè)Daemon-Set,然后通過(guò)API創(chuàng)建你想要的Daemon-Sets。不需要改變節(jié)點(diǎn)上的文件了。
集群大小對(duì)于一個(gè)公司來(lái)說(shuō)是一個(gè)很重要的問(wèn)題,它有著決定核心基礎(chǔ)設(shè)施的權(quán)利。我們此刻永遠(yuǎn)也不會(huì)知道我們會(huì)在一年后規(guī)模變得多大,但是我們需要百分之百確定的是,我們現(xiàn)在選擇的工具以后不會(huì)限制我們。
官方新發(fā)布的1.2版本每個(gè)集群支持1000個(gè)節(jié)點(diǎn),同時(shí)支持30000個(gè)pod同時(shí)運(yùn)行。
然而這些數(shù)字可能是好的也可能是壞的(取決于你的主觀意愿),查看團(tuán)隊(duì)運(yùn)行到了什么進(jìn)程是鼓舞人心的,1.2相比1.1發(fā)布版已經(jīng)有了一個(gè)X10的縮放改善。
期待在1.3上看到一個(gè)更高的數(shù)字。
Jobs允許你運(yùn)行pods,以及成功完成一定數(shù)量的pods。在K8S1.1中,我們可以創(chuàng)建裸pods(沒(méi)有Replication-Controller),但是這些pods根本不能保證完成。例如,運(yùn)行有pod的節(jié)點(diǎn)在執(zhí)行過(guò)程中重啟,pod就不會(huì)在另一個(gè)節(jié)點(diǎn)被重啟。通過(guò)驗(yàn)證我們完成的job,上述的情況確認(rèn)不會(huì)發(fā)生。
雖然這不是一個(gè)改變世界的功能,但是絕對(duì)是一個(gè)有用的功能!
除了上文描述的功能和改進(jìn),你很容易覺(jué)察到1.1版本后的巨大進(jìn)步。每個(gè)issue就是幾個(gè)小時(shí)的問(wèn)題,而且由擁有者優(yōu)先化。等待良久的功能即將實(shí)現(xiàn)。越來(lái)越多的貢獻(xiàn)者正在加入這個(gè)大派對(duì),通過(guò)提交代碼幫助改善這個(gè)項(xiàng)目,擴(kuò)大以及討論這些issue。這大概就是我最喜歡使用的OSS項(xiàng)目之一了。
到此,關(guān)于“選擇Kubernetes作為Docker編排工具的理由有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!