您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Kubernetes能做什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Kubernetes能做什么”吧!
Kubernetes是用于容器化應(yīng)用程序的編排工具。它負(fù)責(zé):
部署鏡像和容器
管理容器和集群的擴(kuò)展
容器和集群的資源管理
服務(wù)的流量管理
當(dāng)你的應(yīng)用程序由運(yùn)行在不同容器中的多個(gè)服務(wù)組成時(shí),Kubernetes確實(shí)會(huì)帶來(lái)很多好處。對(duì)于具有靜態(tài)用戶群的單體應(yīng)用,這可能超出了必要。
構(gòu)建,測(cè)試并將應(yīng)用程序交付到容器倉(cāng)庫(kù)的任務(wù)不是Kubernetes的一部分,這些使用CI/CD工具就可以完成工作。除了CI/CD流水線,Kubernetes還可以幫助你將應(yīng)用部署到生產(chǎn)環(huán)境中而不會(huì)造成服務(wù)停機(jī)。
大多數(shù)應(yīng)用程序都是以單體形式開始的–將整個(gè)應(yīng)用程序放在一個(gè)地方,可以快速輕松地進(jìn)行和部署更改。但是,如果你的應(yīng)用程序發(fā)展壯大,你需要很快找到擴(kuò)大規(guī)模的方法。
這是否意味著該是Kubernetes的時(shí)候了?可能不是。
通常,擴(kuò)展更多地是關(guān)于應(yīng)用程序的內(nèi)部,而不是高級(jí)架構(gòu)和工具。例如,你可以通過(guò)使用支持相似性標(biāo)簽的負(fù)載均衡器部署多個(gè)實(shí)例來(lái)擴(kuò)展整體。
擴(kuò)展應(yīng)用程序時(shí)要考慮的第一步是測(cè)試驅(qū)動(dòng)開發(fā)(TDD),它可以確保軟件質(zhì)量并防止隨著應(yīng)用程序的增長(zhǎng)而出現(xiàn)問(wèn)題。盡管較小的模塊或服務(wù)更易于測(cè)試,但模塊化也意味著對(duì)mocking需求增加,并且需要額外的工具來(lái)配置和維護(hù)。良好的測(cè)試可以使你輕松自信地構(gòu)建和擴(kuò)展應(yīng)用程序。
當(dāng)你開始擴(kuò)展整體時(shí),Chef和Ansible等配置管理工具會(huì)派上用場(chǎng)。你可以使用它們來(lái)自動(dòng)配置新服務(wù)器,以確保它們準(zhǔn)備好運(yùn)行你的應(yīng)用程序。你甚至可以更進(jìn)一步,并使用Terraform之類的工具來(lái)幫助配置新的服務(wù)器VM,這樣你就不必手動(dòng)創(chuàng)建它們。
當(dāng)應(yīng)用程序的其他部分成為瓶頸(例如數(shù)據(jù)庫(kù))時(shí),你也可以擴(kuò)展這些部分。例如,如果數(shù)據(jù)庫(kù)成為瓶頸,則可以將經(jīng)常訪問(wèn)的數(shù)據(jù)移至高性能內(nèi)存數(shù)據(jù)存儲(chǔ)(如Redis)中,以減少數(shù)據(jù)庫(kù)的負(fù)載。
無(wú)論你使用哪種配置管理和配置工具,都必須有一個(gè)良好的CI/CD流水線。第一次部署應(yīng)用程序時(shí),你可能已通過(guò)FTP將zip文件復(fù)制到服務(wù)器,但是這種方法無(wú)法擴(kuò)展。簡(jiǎn)化的CI/CD流水線可確保自動(dòng)構(gòu)建,測(cè)試和部署你的應(yīng)用程序,而無(wú)需你或你的團(tuán)隊(duì)進(jìn)行任何額外的工作。
你甚至可以使用AWS Elastic Beanstalk,Google App Engine或Azure App Service等云服務(wù)自動(dòng)縮放單體應(yīng)用。與Kubernetes相比,所有這些都帶來(lái)了更少的管理開銷,并且它們都可以與CI/CD工具很好地協(xié)同工作。
在開發(fā)新應(yīng)用程序時(shí),請(qǐng)專注于開發(fā)最佳應(yīng)用程序。像Kubernetes這樣的復(fù)雜工具可能是管理應(yīng)用程序基礎(chǔ)結(jié)構(gòu)的正確解決方案。
隨著應(yīng)用程序的不斷增長(zhǎng),你可能最終將無(wú)法繼續(xù)添加功能到單體應(yīng)用中。這通常是因?yàn)樵搼?yīng)用,接近單個(gè)開發(fā)團(tuán)隊(duì)可以從事的工作的極限。
在這一點(diǎn)上,許多團(tuán)隊(duì)選擇拆分單體應(yīng)用并完全遷移到微服務(wù)中。盡管這是一個(gè)頗受歡迎的決定,但它既不是必需的決定,也不是靈丹妙藥。組織,可以考慮從添加單體應(yīng)用的功能服務(wù)開始,而不是整體替換單體應(yīng)用。這些支持服務(wù)中的某些實(shí)際上可能就是微服務(wù)-因此,你可以在合理的情況下使用小型服務(wù)而受益,同時(shí)仍可利用單體應(yīng)用的好處。
即使引入微服務(wù),你可能也不需要或不想從Kubernetes開始。Kubernetes擅長(zhǎng)運(yùn)行和擴(kuò)展相關(guān)服務(wù)和微服務(wù)容器的Pod。但是,采用Kubernetes的某些方面很容易被忽略,例如,Kubernetes沒(méi)有用于保護(hù)Pod,節(jié)點(diǎn)和集群的強(qiáng)大內(nèi)置工具,并且在多云環(huán)境中部署Kubernetes集群會(huì)增加很多復(fù)雜性。
從像Azure Service Fabric和AWS Fargate這樣的單云平臺(tái)開始,可以更輕松地啟動(dòng)和擴(kuò)展服務(wù),而不必強(qiáng)迫你進(jìn)行Kubernetes集群的管理。
另一個(gè)選擇是完全避免具有維護(hù)開銷的服務(wù),并選擇功能即服務(wù)(FaaS),例如AWS Lambda或Azure Functions。FaaS是一種在向應(yīng)用程序添加服務(wù)時(shí)最大程度地減少潛在基礎(chǔ)架構(gòu)開銷的好方法。此外,如果你最終需要使用Kubernetes編排的集群,則可以使用FaaS功能進(jìn)行增強(qiáng)。
現(xiàn)在,想象你的單體應(yīng)用已經(jīng)增長(zhǎng)得如此之快,以至于你不能采用單體應(yīng)用方式,開始需要遷移到微服務(wù)架構(gòu)。
慢慢地,你擁有了各種各樣的服務(wù),其中許多服務(wù)需要彼此通信。你需要確保相互依賴的服務(wù)始終處于正常運(yùn)行狀態(tài)并且彼此可見。
此外,你有時(shí)還需要考慮跨多個(gè)可用性區(qū)域(甚至可能跨多個(gè)云供應(yīng)商)運(yùn)行。
在這一點(diǎn)上,你可能需要像Kubernetes這樣的協(xié)調(diào)器。它使你可以輕松定義相關(guān)服務(wù)的模塊(Pods),并可以自動(dòng)縮放應(yīng)用實(shí)例并在服務(wù)之間進(jìn)行負(fù)載均衡。
為了使Kubernetes發(fā)揮作用,組織需要:
操作幾個(gè)或幾十個(gè)虛擬機(jī)
分配人員進(jìn)行Kubernetes專門的配置和維護(hù)
使大部分同類服務(wù)部署自動(dòng)化
與云(或托管)提供商無(wú)關(guān)
此外,Kubernetes內(nèi)置了對(duì)高可用性(Amazon RDS Multi-AZ)部署的支持,這使得提高應(yīng)用程序的可靠性和可用性變得更加容易。
當(dāng)然,這確實(shí)帶來(lái)了開銷:需要時(shí)間和工程資源來(lái)創(chuàng)建和管理集群,定義Pod以及創(chuàng)建適合部署到Kubernetes的容器化應(yīng)用程序。但是,如果你的應(yīng)用足夠大,可以從Kubernetes中受益,那么管理開銷是值得的。
到此,相信大家對(duì)“Kubernetes能做什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。