溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Kubernetes的概念和作用是什么

發(fā)布時(shí)間:2021-06-24 11:55:10 來源:億速云 閱讀:413 作者:chen 欄目:云計(jì)算

本篇內(nèi)容介紹了“Kubernetes的概念和作用是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

是時(shí)候該學(xué)習(xí)Kubernetes了,不然都不敢說自己了解容器、了解Docker。

1、Kubernetes的前世

Kubernetes,它是一個(gè)全新的基于容器技術(shù)的分布式架構(gòu)方案,近些年在容器領(lǐng)域使用非常廣泛,作為容器化部署實(shí)施的典型方案。

看似很新(相對(duì)于剛出現(xiàn)時(shí)來說),但它卻是谷歌十幾年以來大規(guī)模應(yīng)用容器技術(shù)的經(jīng)驗(yàn)積累和升華的重要成果。確切地說,Kubernetes是谷歌嚴(yán)格保密十幾年的秘密武器——Borg的一個(gè)開源版本。Borg是谷歌的一個(gè)久負(fù)盛名的內(nèi)部使用的大規(guī)模集群管理系統(tǒng),它基于容器技術(shù),目的是實(shí)現(xiàn)資源管理的自動(dòng)化,以及跨過個(gè)數(shù)據(jù)中心資源利用率的最大化。十幾年以來,谷歌一直通過Borg系統(tǒng)管理者數(shù)據(jù)龐大的應(yīng)用程序集群,由于谷歌員工都簽署了保密協(xié)議,即使離職也不能泄露Borg的內(nèi)部設(shè)計(jì),所以外界一直無法了解關(guān)于它的更多信息。直到2015年4月,傳聞許久的Borg論文發(fā)布,伴隨著Kubernetes的高調(diào)宣傳被谷歌首次公開,大家才得以了解它的更多內(nèi)幕。正式由于站在Borg這個(gè)前輩的肩膀上,汲取了Borg過去十年間的經(jīng)驗(yàn)與教訓(xùn),所以Kubernetes一經(jīng)開源就一鳴驚人,并迅速稱霸容器領(lǐng)域。

Kubernetes的概念和作用是什么

Borg就是一個(gè)噴氣式飛機(jī)的駕駛系統(tǒng),非常的專業(yè)和高大上,他適用于谷歌這樣的大公司,它有幾百萬的機(jī)器。Kubernetes是一個(gè)它的簡化版,它是一輛設(shè)計(jì)優(yōu)良的轎車,它適合中小型公司,更方便的用它來調(diào)度自己的集群。

2、Kubernetes是什么?

Kubernetes用于自動(dòng)部署,擴(kuò)展和管理容器化應(yīng)用程序的開源系統(tǒng),它將組成應(yīng)用程序的容器組合成邏輯單元,以便于管理和服務(wù)發(fā)現(xiàn)。Kubernetes源自谷歌15年生產(chǎn)環(huán)境的運(yùn)維經(jīng)驗(yàn),同時(shí)凝聚了社區(qū)的最佳創(chuàng)意和實(shí)踐。

Kubernetes的概念和作用是什么

Kubernetes,構(gòu)建在Docker技術(shù)之上,為跨主機(jī)的容器化應(yīng)用提供資源調(diào)度、服務(wù)發(fā)現(xiàn)、高可用管理和彈性伸縮等一整套功能,它提供了完善的管理工具,涵蓋開發(fā)、部署測試、運(yùn)維監(jiān)控等各個(gè)環(huán)節(jié)。它的目標(biāo)不僅僅是一個(gè)編排系統(tǒng),更是提供一個(gè)規(guī)范,可以讓你來描述集群的架構(gòu),定義服務(wù)的最終狀態(tài),Kubernetes可以幫你將系統(tǒng)自動(dòng)達(dá)到和維持在這個(gè)狀態(tài)。

Kubernetes的概念和作用是什么

2.1 亮點(diǎn)

亮點(diǎn)1: Kubernetes以“一切以服務(wù)(Service)為中心,一切圍繞服務(wù)運(yùn)轉(zhuǎn)”作為指導(dǎo)思想的創(chuàng)新型產(chǎn)品。它在功能和架構(gòu)設(shè)計(jì)上始終遵循著這一指導(dǎo)思想,構(gòu)建在Kubernetes上的系統(tǒng)不僅可以獨(dú)立運(yùn)行在物理機(jī)、虛擬機(jī)集群或企業(yè)私有云上,也可以被托管在公有云上。

亮點(diǎn)2: Kubernetes是一個(gè)開放的開發(fā)平臺(tái)。與J2EE不同,它不局限于任何一種語言,沒有限定任何編程接口,所以不論是用Java、Go、C++還是Python編寫的程序,都可以被映射為Kubernetes的Service,并通過標(biāo)準(zhǔn)的TCP通訊協(xié)議進(jìn)行交互。此外,Kubernetes平臺(tái)對(duì)現(xiàn)有的編程語言、編程框架、中間件沒有任何侵入性,做到了零侵入,因此現(xiàn)有的系統(tǒng)也很容易改造升級(jí)并遷移到Kubernetes平臺(tái)之上。

亮點(diǎn)3: Kubernetes的另一個(gè)亮點(diǎn)是自動(dòng)化。在Kubernetes的解決方案中,一個(gè)可以自我擴(kuò)展、自我診斷,并且容易升級(jí),在收到服務(wù)擴(kuò)容的請(qǐng)求后,Kubernetes會(huì)觸發(fā)調(diào)度流程,最終在選定的目標(biāo)節(jié)點(diǎn)上啟動(dòng)相應(yīng)數(shù)據(jù)的服務(wù)實(shí)例副本,這些服務(wù)實(shí)例副本在啟動(dòng)成功后會(huì)自動(dòng)加入負(fù)載均衡器中并生效,整個(gè)過程無須額外的人工操作。另外,Kubernetes會(huì)定時(shí)巡查每個(gè)服務(wù)的所有實(shí)例的可用性,確保服務(wù)實(shí)例的數(shù)量始終保持為預(yù)期的數(shù)量,當(dāng)它發(fā)現(xiàn)某個(gè)實(shí)例不可用時(shí),會(huì)自動(dòng)重啟該實(shí)例或者其他節(jié)點(diǎn)上重新調(diào)度、運(yùn)行一個(gè)新實(shí)例,這樣一個(gè)復(fù)雜的過程無須人工干預(yù)即可全部自動(dòng)完成。

亮點(diǎn)4: Kubernetes是一個(gè)完備的分布式系統(tǒng)支撐平臺(tái)。具備完備的集群管理能力,包括多層次的安全防護(hù)和準(zhǔn)入機(jī)制、多租戶應(yīng)用支撐能力、透明的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制、內(nèi)建的智能負(fù)載均衡器、強(qiáng)大的故障發(fā)現(xiàn)和自我修復(fù)能力、服務(wù)滾動(dòng)升級(jí)和在線擴(kuò)容能力、可擴(kuò)展的資源自動(dòng)調(diào)度機(jī)制,以及多粒度的資源配額管理能力。同時(shí),Kubernetes提供了完善的管理工具,這些涵蓋了包括開發(fā)、部署測試、運(yùn)維監(jiān)控在內(nèi)的各個(gè)環(huán)節(jié)。因此,Kubernetes是一個(gè)全新的基于容器技術(shù)的分布式架構(gòu)解決方案,并且是一個(gè)一站式的完備的分布式系統(tǒng)開發(fā)和支持平臺(tái)。

隨著容器化部署環(huán)境限制、語言差異、容器數(shù)量的龐大、負(fù)載均衡、故障檢測、故障修復(fù)等問題,倘若將過多的精力、時(shí)間放在這些地方,其工作量將會(huì)多大,將會(huì)讓很多企業(yè)、產(chǎn)品對(duì)容器望而止步。在容器化的時(shí)代,Kubernetes足以免去上述面臨的問題,讓容器化使用變得的更加容易、輕松,只需花費(fèi)更多的時(shí)間去完成業(yè)務(wù)功能的開發(fā)。

2.2 特性

Kubernetes特性如下:

Service拓?fù)洌?/strong> 基于集群拓?fù)涞姆?wù)流量路由??梢宰屢粋€(gè)服務(wù)基于集群的Node拓?fù)溥M(jìn)行流量路由。例如,一個(gè)服務(wù)可以指定流量是被優(yōu)先路由到一個(gè)和客戶端在同一個(gè)Node或者在同一可用區(qū)域的端點(diǎn)。

端點(diǎn)切片: Kubernetes 集群中網(wǎng)絡(luò)端點(diǎn)的可擴(kuò)展跟蹤。

存儲(chǔ)編排: 自動(dòng)掛載所選存儲(chǔ)系統(tǒng),包括本地存儲(chǔ)、諸如 GCP 或 AWS 之類公有云提供商所提供的存儲(chǔ)或者諸如 NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker 這類網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)。

Secret和配置管理: 部署和更新 Secrets 和應(yīng)用程序的配置而不必重新構(gòu)建容器鏡像,且不必將軟件堆棧配置中的秘密信息暴露出來。

批量執(zhí)行: 除了服務(wù)之外,Kubernetes 還可以管理你的批處理和 CI 工作負(fù)載,在期望時(shí)替換掉失效的容器。

服務(wù)發(fā)現(xiàn)與負(fù)載均衡: 無需修改您的應(yīng)用程序即可使用陌生的服務(wù)發(fā)現(xiàn)機(jī)制。Kubernetes 為容器提供了自己的 IP 地址和一個(gè) DNS 名稱,并且可以在它們之間實(shí)現(xiàn)負(fù)載均衡。

自我修復(fù):重新啟動(dòng)失敗的容器,在節(jié)點(diǎn)死亡時(shí)替換并重新調(diào)度容器,殺死不響應(yīng)用戶定義的健康檢查的容器,并且在它們準(zhǔn)備好服務(wù)之前不會(huì)將它們公布給客戶端。

自動(dòng)化上線和回滾: Kubernetes 會(huì)分步驟地將針對(duì)應(yīng)用或其配置的更改上線,同時(shí)監(jiān)視應(yīng)用程序運(yùn)行狀況以確保你不會(huì)同時(shí)終止所有實(shí)例。如果出現(xiàn)問題,Kubernetes 會(huì)為你回滾所作更改。你應(yīng)該充分利用不斷成長的部署方案生態(tài)系統(tǒng)。

自動(dòng)裝箱: 根據(jù)資源需求和其他約束自動(dòng)放置容器,同時(shí)避免影響可用性。將關(guān)鍵性工作負(fù)載和盡力而為性質(zhì)的服務(wù)工作負(fù)載進(jìn)行混合放置,以提高資源利用率并節(jié)省更多資源。

IPv4/IPv6雙協(xié)議棧: 為 Pod 和 Service 分配 IPv4 和 IPv6 地址。

水平擴(kuò)縮: 使用一個(gè)簡單的命令、一個(gè)UI或基于CPU使用情況自動(dòng)對(duì)應(yīng)用程序進(jìn)行擴(kuò)縮。

3、為什么使用Kubernetes?

使用Kubernetes的理由很多,最重要的理由是,IT行業(yè)從來都是由新技術(shù)驅(qū)動(dòng)的。

當(dāng)前,Docker容器化技術(shù)已經(jīng)被很多公司采用,從單機(jī)走向集群已成為必然。云計(jì)算的蓬勃發(fā)展正在加速這一進(jìn)程。Kubernetes作為當(dāng)前被業(yè)界廣泛認(rèn)可和看好的基于Docker的大規(guī)模容器化分布式系統(tǒng)解決方案,得到了以谷歌為首的IT巨頭們的大力宣傳和維持推進(jìn)。

2015年,谷歌聯(lián)合20多家公司一起建立了CNCF(Cloud Native Computing Foundation,云原生計(jì)算基金會(huì))開源組織來推廣Kubernetes,并由此開創(chuàng)了云原生應(yīng)用(Cloud Native Application)的新時(shí)代。作為CNCF“欽定”的官方云原生平臺(tái),Kubernetes正在顛覆應(yīng)用程序的開發(fā)方式。

不妨從以下幾個(gè)方面來看看,你一定會(huì)喜歡上它的哦!

3.1 一個(gè)平臺(tái)搞定所有

使用 Kubernetes部署任何應(yīng)用都是小菜一碟。只要應(yīng)用可以打包成鏡像,能夠容器部署,Kubernetes就一定能啟動(dòng)它。

Kubernetes的概念和作用是什么

不管什么語言、什么框架寫的應(yīng)用(如:Java, Python, Node.js),Kubernetes都可以在任何環(huán)境中安全的啟動(dòng)它,如:物理服務(wù)器、虛擬機(jī)、云環(huán)境。

3.2 云環(huán)境無縫遷移

如果你有換云環(huán)境的需求,例如從GCP到AWS,使用Kubernetes的話,你就不用有任何擔(dān)心。

Kubernetes的概念和作用是什么

Kubernetes完全兼容各種云服務(wù)提供商,例如 Google Cloud、Amazon、Microsoft Azure,還可以工作在 CloudStack, OpenStack, OVirt, Photon, VSphere等。

3.3 高效的利用資源

看下圖,左邊是4個(gè)虛擬機(jī),黃色和藍(lán)色部分是運(yùn)行的應(yīng)用,白色部分是未使用的內(nèi)存和處理器資源。

右邊,同樣的應(yīng)用打包運(yùn)行在容器中。

Kubernetes的概念和作用是什么

Kubernetes如果發(fā)現(xiàn)有節(jié)點(diǎn)工作不飽和,便會(huì)重新分配pod,幫助我們節(jié)省開銷,高效的利用內(nèi)存、處理器等資源。

如果一個(gè)節(jié)點(diǎn)宕機(jī)了,Kubernetes會(huì)自動(dòng)重新創(chuàng)建之前運(yùn)行在此節(jié)點(diǎn)上的pod,在其他節(jié)點(diǎn)上運(yùn)行。

3.4 開箱即用的自動(dòng)縮放能力

網(wǎng)絡(luò)、負(fù)載均衡、復(fù)制等特性,對(duì)于Kubernetes都是開箱即用的。

pod是無狀態(tài)運(yùn)行的,任何時(shí)候有pod宕了,立馬會(huì)有其他pod接替它的工作,用戶完全感覺不到。

如果用戶量突然暴增,現(xiàn)有的pod規(guī)模不足了,那么會(huì)自動(dòng)創(chuàng)建出一批新的pod,以適應(yīng)當(dāng)前的需求。

反之亦然,當(dāng)負(fù)載降下來的時(shí)候,Kubernetes也會(huì)自動(dòng)縮減 pod 的數(shù)量。

Kubernetes的概念和作用是什么

3.5 使CI/CD更簡單

你不必精通于ChefAnsible這類工具,只需要對(duì) CI 服務(wù)寫個(gè)簡單的腳本然后運(yùn)行它,就會(huì)使用你的代碼創(chuàng)建一個(gè)新的 pod,并部署到 Kubernetes集群里面。

應(yīng)用打包在容器中使其可以安全的運(yùn)行在任何地方,例如你的 PC、一個(gè)云服務(wù)器,使得測試極其簡單。

Kubernetes的概念和作用是什么

3.5 可靠性

Kubernetes如此流行的一個(gè)重要原因是:應(yīng)用會(huì)一直順利運(yùn)行,不會(huì)被pod或節(jié)點(diǎn)的故障所中斷。

如果出現(xiàn)故障,Kubernetes會(huì)創(chuàng)建必要數(shù)量的應(yīng)用鏡像,并分配到健康的pod或節(jié)點(diǎn)中,直到系統(tǒng)恢復(fù)。

而且用戶不會(huì)感到任何不適。

Kubernetes的概念和作用是什么

一個(gè)容器化的基礎(chǔ)設(shè)施是有自愈能力的,可以提供應(yīng)用程序的不間斷操作,即使一部分基礎(chǔ)設(shè)施出現(xiàn)故障。

4、總結(jié)

Kubernetes使得應(yīng)用的啟動(dòng)、遷移、部署變得簡單又安全。

不必?fù)?dān)心應(yīng)用遷移后工作出現(xiàn)問題,也不用擔(dān)心一臺(tái)服務(wù)器無法應(yīng)付突發(fā)的用戶量。

需要注意的是,你的應(yīng)用最好使用微服務(wù)架構(gòu)進(jìn)行開發(fā),因?yàn)槲⒎?wù)應(yīng)用比單體應(yīng)用更適合做容器化。

不要為了單純的使用Kubernetes而引入,要看你的系統(tǒng)規(guī)模是否值得去用,否則可能適得其反,畢竟Kubernetes的學(xué)習(xí)是需要一定成本。

參考文章:

  1. http://www.mamicode.com/info-detail-1436432.html

  2. https://yellow.systems/blog/why-you-should-use-kubernetes-in-your-next-project

“Kubernetes的概念和作用是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI