新聞中心
給技術(shù)經(jīng)理的Kubernetes采用指南
作者:grace_shi 2020-01-13 16:09:17
云計(jì)算
系統(tǒng)運(yùn)維 在這篇文章中,我會(huì)重點(diǎn)介紹幾個(gè)關(guān)鍵因素,來(lái)幫助您決定是否采用Kubernetes以及采用到何種程度。我還將為您提供一個(gè)方法對(duì)Kubernetes進(jìn)行一步步的評(píng)估并逐步引入到您的組織之中, Kubernetes是一項(xiàng)偉大的技術(shù),如果使用得當(dāng),它會(huì)帶來(lái)很大益處。

10年的眉縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yí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í)行。
簡(jiǎn)介
你可能經(jīng)常在公司聽(tīng)說(shuō)Kubernetes,這項(xiàng)源自于Google的容器編排技術(shù)現(xiàn)在非?;穑坪醪徽撌荄evOps還是CTO,不論他們是否完全理解這項(xiàng)技術(shù),他們都在談?wù)撍?。讀了這篇文章可能會(huì)使您更加困惑,有可能您無(wú)法完全理解。有人寄希望于Kubernetes可以幫助他解決所有問(wèn)題,但是事實(shí)并非如此。在這篇文章中,我會(huì)重點(diǎn)介紹幾個(gè)關(guān)鍵因素,來(lái)幫助您決定是否采用Kubernetes以及采用到何種程度。我還將為您提供一個(gè)方法對(duì)Kubernetes進(jìn)行一步步的評(píng)估并逐步引入到您的組織之中, Kubernetes是一項(xiàng)偉大的技術(shù),如果使用得當(dāng),它會(huì)帶來(lái)很大益處。
1. 從寵物到羊群
> 過(guò)去服務(wù)就像寵物一樣,需要管理員一個(gè)個(gè)管理維護(hù),現(xiàn)在服務(wù)器更像是羊群,管理員通過(guò)簡(jiǎn)單的命令或者配置就可以管理大量的服務(wù)器。
曾幾何時(shí),系統(tǒng)管理員用主機(jī)名和便簽來(lái)管理服務(wù)器,如今,我們并不知道我們的工作負(fù)載運(yùn)行在哪種類型的服務(wù)器上,因?yàn)檫@些本來(lái)應(yīng)該躺在機(jī)房以及數(shù)據(jù)中心的機(jī)器已經(jīng)讓位給像是 亞馬遜,微軟以及谷歌這些公有云提供商了。系統(tǒng)管理員的確像以前一樣為運(yùn)行在公共云上的虛擬機(jī)命名,就像他們養(yǎng)寵物一樣。但在過(guò)去如果銷售人員需要服務(wù)器時(shí),系統(tǒng)管理員可能需要花費(fèi)數(shù)周的時(shí)間,然后通過(guò)電話或電子郵件與銷售人員交談以進(jìn)行配置。但是隨著高性能虛擬化和公有云API的出現(xiàn),一個(gè)簡(jiǎn)單的API調(diào)用可以在幾秒鐘內(nèi)啟動(dòng)機(jī)器。聰明的技術(shù)人員意識(shí)到公有云不僅提供了對(duì)計(jì)算的快速訪問(wèn),而且還能通過(guò)提供易用的RESTful API來(lái)提供了自動(dòng)化的能力。這真是太美好了。
2. 代碼即基礎(chǔ)設(shè)施以及Devops
隨著Chef, Puppet, Ansible以及SaltStack技術(shù)的出現(xiàn),開(kāi)發(fā)和運(yùn)維之簡(jiǎn)的界限越來(lái)越模糊。以前系統(tǒng)管理員很少冒險(xiǎn)使用除了Shell腳本之外的語(yǔ)言,而Chef,Puppet以及Ansible都是發(fā)展成熟的系統(tǒng)編排框架。Puppet使用了特定于域的語(yǔ)言(DSL: Domain Specified Language)來(lái)讓系統(tǒng)管理員定義其基礎(chǔ)架構(gòu)設(shè)置的最終狀態(tài),而Chef使用的是基于Ruby語(yǔ)言的DSL,可以充分發(fā)揮Ruby語(yǔ)言的表達(dá)能力來(lái)定義基礎(chǔ)架構(gòu)的最終狀態(tài)。這些技術(shù)使我們直接進(jìn)入聲明式以及命令式架構(gòu)的時(shí)代,我們可以通過(guò)文件中的代碼來(lái)定義服務(wù)器基礎(chǔ)架構(gòu)的最終狀態(tài),因此可以像管理源代碼一樣對(duì)架構(gòu)進(jìn)行版本控制。這和手動(dòng)設(shè)置服務(wù)器并登入安裝各種軟件,設(shè)置硬件資源(如網(wǎng)絡(luò),存儲(chǔ)等)非常不同,盡管管理員可能會(huì)運(yùn)行一些腳本使這個(gè)過(guò)程更加高效,但是現(xiàn)在,使用Chef以及Puppet可以集中化管理系統(tǒng)配置,并且通過(guò)他們功能強(qiáng)大的API,可以輕松的管理大量服務(wù)器。
3. Docker的興起
Docker并不是一項(xiàng)容器技術(shù),它是一個(gè)強(qiáng)大的利用linux原始特性來(lái)輕松管理和組合容器的工具,Linux容器是使用Linux的操作系統(tǒng)的原始特性(CGroups即Control Groups和Namespaces)來(lái)構(gòu)建的。Docker只是使構(gòu)建和管理容器變得容易。使用Docker,可以輕松的打包應(yīng)用程序及其所有依賴關(guān)系。就像一個(gè)真正的容器一樣,“運(yùn)送”變得十分容易。之后這個(gè)容器可以運(yùn)行在任意Linux機(jī)器之上,而不用預(yù)先安裝其依賴項(xiàng)(其中一些可能是特定的Linux發(fā)行版)。通過(guò)容器技術(shù),我們可以運(yùn)行來(lái)自Debian Linux的Nginx,以及來(lái)自Ubuntu的Python Flask框架,與此同時(shí),還可以運(yùn)行來(lái)自 Alpine的MySQL, 這些軟件一起構(gòu)成了用戶的應(yīng)用,所有這些軟件包都在同一Linux服務(wù)器上運(yùn)行??偠灾?,Docker,提供了聲明式構(gòu)建容器的標(biāo)準(zhǔn),并提供了在Linux服務(wù)器上運(yùn)行和管理容器的生命周期的工具,成功駕馭了Linux的容器技術(shù)并且提供了巨大的便利。
盡管 Puppet和Chef擅長(zhǎng)管理物理機(jī)和虛擬機(jī)的配置,Devops更喜歡用容器來(lái)部署應(yīng)用,容器很快成為了標(biāo)準(zhǔn),并且容器可以包含很多應(yīng)用部署的邏輯,從而使業(yè)務(wù)流程的其余部分變得更加簡(jiǎn)單,是時(shí)候使用一種更現(xiàn)代的以容器為中心的編排系統(tǒng)了。
與此同時(shí),另一種快速發(fā)展的方法使得運(yùn)維人員越來(lái)越深入到開(kāi)發(fā)者的領(lǐng)域之中,Devops,工程師發(fā)現(xiàn),運(yùn)維人員希望系統(tǒng)穩(wěn)定,而開(kāi)發(fā)人員希望隨時(shí)發(fā)布新的功能,這給穩(wěn)定性的帶來(lái)了巨大的挑戰(zhàn)。這兩個(gè)目標(biāo)相互矛盾,致使團(tuán)隊(duì)互相爭(zhēng)執(zhí),直接影響了產(chǎn)品的交付速度。并且開(kāi)發(fā)團(tuán)隊(duì)的人員在沒(méi)有意識(shí)到他們的代碼會(huì)在生產(chǎn)環(huán)境中引起何種問(wèn)題之前,他們是不會(huì)花費(fèi)力氣去修復(fù)它的。因?yàn)樯a(chǎn)環(huán)境通常是由運(yùn)維團(tuán)隊(duì)來(lái)處理的。為了解決這些問(wèn)題。團(tuán)隊(duì)開(kāi)始嘗試一種新的方法:Devops,這個(gè)方法很簡(jiǎn)單,誰(shuí)寫(xiě)代碼,誰(shuí)負(fù)責(zé)發(fā)布到生產(chǎn)環(huán)境。同時(shí)也將負(fù)責(zé)之后的值班。如果開(kāi)發(fā)人員想要更加頻繁的發(fā)布新功能,那么他們需要了解作為運(yùn)維人員需要做哪些事情來(lái)支持發(fā)布。云和容器技術(shù)以及其強(qiáng)大的API和工具鏈,使得這種方式可以被并入云操作中。快速發(fā)展的DevOps團(tuán)隊(duì)會(huì)構(gòu)建由微服務(wù)組成的大型應(yīng)用程序,每個(gè)微服務(wù)都可以獨(dú)立開(kāi)發(fā)和發(fā)布,而無(wú)需測(cè)試和發(fā)布整個(gè)大型應(yīng)用程序。嘗試DevOps的團(tuán)隊(duì)會(huì)使用微服務(wù)架構(gòu),他們喜歡云和容器的可塑性和靈活性,程序員可以通過(guò)可編寫(xiě)腳本的工具和API輕松控制。
4. 進(jìn)入Kubernetes
當(dāng)Devops和微服務(wù)遇到了容器,一個(gè)新的,原生的編排框架應(yīng)運(yùn)而生,受Google Borg系統(tǒng)的啟發(fā),Kubernetes是一個(gè)開(kāi)源容器編排系統(tǒng),最初由Google的工程師構(gòu)建,現(xiàn)在由CNCF(Cloud Native Computing Foundation,云原生計(jì)算基金會(huì))維護(hù)。作為容器編排平臺(tái),Kubernetes可以實(shí)現(xiàn)自動(dòng)化應(yīng)用程序部署,擴(kuò)展和管理。盡管像Docker這樣的系統(tǒng)也可以管理服務(wù)器中的容器,但Kubernetes的功能更強(qiáng)大,其主要功能之一是可以管理運(yùn)行容器的服務(wù)器或節(jié)點(diǎn)的集群。與此類似的框架有Apache Mesos和Docker Swarm。但到目前為止,顯然,Kubernetes已經(jīng)成為贏家?,F(xiàn)在,選擇Kubernetes作為容器編排框架是一個(gè)非常安全的選擇。
4.1不僅僅是Docker
值得注意的是,Kubernetes可以編排不僅由Docker管理的容器。它還可以編排由類似于Docker的系統(tǒng)管理的容器,例如ContainerD,Cri-O和RktLet。盡管您可以創(chuàng)建和管理這些系統(tǒng)的容器,但在本文中,我們將用“ Docker”來(lái)指代“容器管理”?,F(xiàn)在,讓我們看一下Kubernetes的一些最重要的功能。
4.2 為什么選擇Kubernetes
要想知道為什么Kubernets如此重要,首先要了解Docker的邊界在哪,盡管Docker可以輕松管理一個(gè)服務(wù)器內(nèi)容器的生命周期,但是Kubernets可以輕松管理多個(gè)運(yùn)行Docker容器的服務(wù)器(即集群)。另一方面,現(xiàn)在,微服務(wù)應(yīng)用常常由幾個(gè)容器構(gòu)成,Kubernets提供了“應(yīng)用程序部署”這個(gè)概念,指的是組成應(yīng)用程序的一組容器,在集群上以分布式方式運(yùn)行。當(dāng)您要運(yùn)行由一組容器組成的應(yīng)用程序時(shí),只需告訴Kubernetes,它便可以找出集群中的哪些節(jié)點(diǎn)具有足夠的計(jì)算資源來(lái)運(yùn)行容器,并在其中調(diào)度它們。Kubernetes會(huì)在容器出現(xiàn)故障時(shí)重啟容器,甚至可以根據(jù)某些參數(shù)來(lái)擴(kuò)展你的應(yīng)用,如增加容器的數(shù)量以應(yīng)對(duì)激增流量。這就是Kubernetes的本質(zhì),這也就是人們所談?wù)摰摹叭萜骶幣拧薄?/p>
在集群上運(yùn)行多個(gè)應(yīng)用時(shí),Kubernets還提供了其他的功能來(lái)簡(jiǎn)化管理,它使管理應(yīng)用程序的配置和證書(shū)變得更加容易,Kubernetes還管理其他基礎(chǔ)架構(gòu),例如存儲(chǔ)和網(wǎng)絡(luò),計(jì)算,這是構(gòu)成任何基礎(chǔ)架構(gòu)的最基本三個(gè)組成部分。
4.3 是否托管
盡管你可以在私有云上從頭開(kāi)始搭建Kubernetes,但在擴(kuò)展kubernetes基礎(chǔ)架構(gòu)之前您最好還是選擇OpenShift的Kubernetes發(fā)行版,它提供付費(fèi)支持。當(dāng)然,您也可以選擇在AWS,Azure或GCP的集群上搭建Kubernetes。Kubernetes是由多個(gè)組件構(gòu)成,這些組件一起運(yùn)行一個(gè)集群(稱為計(jì)算節(jié)點(diǎn)),每個(gè)計(jì)算節(jié)點(diǎn)也會(huì)運(yùn)行Kubernetes。當(dāng)您選擇任何公有云提供的托管Kubernetes產(chǎn)品時(shí),您可以選擇他們提供的任何類型的計(jì)算節(jié)點(diǎn)來(lái)組成Kubernets集群,這些可以用于容器部署,但是Kubernetes的主要主組件(也稱為“控制平面”)是由云服務(wù)提供商管理。
5. 您的組織準(zhǔn)備好使用Kubernetes嗎?
這取決一系列因素。
5.1 公有云還是私有云
Kubernetes可以部署在公有云和私有云上。在私有云上,雖然理論上您可以自己安裝和維護(hù)Kubernetes,但最好是運(yùn)行諸如OpenShift之類提供的Kubernetes發(fā)行版,該發(fā)行版可以獲得供應(yīng)商技術(shù)支持。 Kubernetes誕生于云中,是一種所謂的“云原生”技術(shù),它是管理計(jì)算集群的絕佳選擇。實(shí)際上,Kubernetes也是管理私有云的絕佳選擇。
對(duì)于像是AWS,Azure以及GCP這類公有云,你可以在一組計(jì)算節(jié)點(diǎn)上運(yùn)行Kubernetes,例如,你可以使用Kops(一種流行的解決方案)在AWS的EC2實(shí)例上部署Kubernetes,但是,我強(qiáng)烈建議您選擇使用托管的Kubernetes產(chǎn)品,從而將維護(hù)Kubernetes控制平面的工作移交給云服務(wù)提供商,以便您可以專注于如何在Kubernetes上運(yùn)行工作負(fù)載。
5.2 您項(xiàng)目中目前對(duì)Docker的采用程度如何?
Kubernets并不是入門(mén)級(jí)產(chǎn)品,它是一個(gè)容器編排平臺(tái)。如果您準(zhǔn)備運(yùn)行在Kubernets的應(yīng)用還沒(méi)有容器化,您首先必須確保這些應(yīng)用程序已在生產(chǎn)中的Docker上經(jīng)過(guò)了良好的測(cè)試。稍后,我們將提出一個(gè)簡(jiǎn)單的策略,說(shuō)明如何逐步實(shí)施這個(gè)步驟。 Docker已被廣泛采用,工具已經(jīng)非常成熟,可以肯定地說(shuō),Docker已經(jīng)遠(yuǎn)遠(yuǎn)超出了炒作階段。無(wú)論您的組織有多么“謹(jǐn)慎”的IT策略,采用Docker是沒(méi)有太大風(fēng)險(xiǎn)的。如果將Docker與Kubernetes以合適的方式結(jié)合,可以真正提高服務(wù)器利用率。因此,這件事值得考慮。
5.3 組織中的DevOps文化有多成熟?
一個(gè)強(qiáng)大的Devops文化意味著開(kāi)發(fā)者需要負(fù)責(zé)在生產(chǎn)環(huán)境中運(yùn)行他們開(kāi)發(fā)的服務(wù),他們會(huì)始終尋找一些自動(dòng)化操作來(lái)提高他們的生產(chǎn)力。尤其是當(dāng)應(yīng)用或者服務(wù)是以微服務(wù)的架構(gòu)為基礎(chǔ),意味著不同的團(tuán)隊(duì)需要獨(dú)立運(yùn)行不同的微服務(wù),Kubernetes非常適合這種情況,并且能很快被內(nèi)部采用。不過(guò)另一方面,Kubernetes也可以很好的運(yùn)行單體的工作負(fù)載。這里的關(guān)鍵點(diǎn)在于,如果有兩個(gè)獨(dú)立的團(tuán)隊(duì),開(kāi)發(fā)和運(yùn)維,如果運(yùn)維團(tuán)隊(duì)以一種全新的部署方式工作,然后讓開(kāi)發(fā)團(tuán)隊(duì)努力適應(yīng)一種用于容器化和應(yīng)用程序配置的構(gòu)建系統(tǒng),那么兩個(gè)團(tuán)隊(duì)可能都不會(huì)付出太大的努力來(lái)促成這件事。
5.4 組織中是否有足夠的了解Kubernetes的員工
Kubernetes需要花費(fèi)一定的時(shí)間去學(xué)習(xí),而且只有當(dāng)你學(xué)習(xí)了容器化之后再去學(xué)Kubernetes才有意義。如果您確信Kubernetes適合您的組織并且已經(jīng)考慮了以上列出的幾個(gè)要點(diǎn),那么您可能需要幾個(gè)有能力和信心在生產(chǎn)中使用Kubernetes的擁護(hù)者,如果您的組織中只有剛接觸Kubernetes的人員,我們會(huì)提供一條路徑幫助你們積累經(jīng)驗(yàn),與此同時(shí),降低再生產(chǎn)中使用Kubernetes的風(fēng)險(xiǎn)。稍后我將介紹如何實(shí)現(xiàn)。
6. Kubernetes陷阱
如果有人將Kubernetes稱為靈丹妙藥,那么他們可能還停留在初級(jí)階段。這是您需要注意的一些事情。
6.1 托管的Kubernetes不是萬(wàn)能藥
Kubernetes是一個(gè)由許多協(xié)同工作的軟件組成的系統(tǒng)。無(wú)論您是直接管理它還是選擇托管Kubernetes,都可能遇到問(wèn)題。就算是托管的Kubernetes,它的各個(gè)組成部分也可能出現(xiàn)問(wèn)題。不要僅僅因?yàn)镵ubernetes控制平面是由您的云服務(wù)提供商管理的,就覺(jué)得它不會(huì)出錯(cuò)。您可以在Github上找到幾個(gè)特定于云提供商的Kubernetes問(wèn)題。當(dāng)出現(xiàn)問(wèn)題時(shí),您可能仍需要聯(lián)系支持人員并進(jìn)行處理。這可能涉及停機(jī)時(shí)間。因?yàn)榭刂破矫嬷械腒ubernetes組件僅創(chuàng)建和監(jiān)視容器,所以如果它們出現(xiàn)故障,它們通常不會(huì)影響已經(jīng)在運(yùn)行的容器。但是,控制平面出問(wèn)題可能會(huì)影響您創(chuàng)建新容器以及自動(dòng)調(diào)整容器數(shù)量等操作。
6.2 Kubernetes上的有狀態(tài)應(yīng)用仍在不斷發(fā)展
Kubernetes適用于創(chuàng)建和銷毀(短期存在)容器的應(yīng)用。為了應(yīng)對(duì)流量激增,可以臨時(shí)創(chuàng)建很多容器,一旦情況恢復(fù)正常,這些容器將被終止。跟后臺(tái)作業(yè)運(yùn)行器一樣。這意味著它將是一個(gè)非常動(dòng)態(tài)的環(huán)境,服務(wù)器被當(dāng)做一個(gè)整體而不是個(gè)體。這意味著,像數(shù)據(jù)庫(kù)這樣有狀態(tài)的應(yīng)用似乎沒(méi)有被考慮到。實(shí)際上,數(shù)據(jù)庫(kù)這塊領(lǐng)域的開(kāi)發(fā)一直非?;钴S,現(xiàn)在這個(gè)功能也比較穩(wěn)定了。不過(guò)Kubernetes的有狀態(tài)的應(yīng)用的功能仍在快速變化中。
Kuberntes本身就支持在有狀態(tài)的應(yīng)用中使用持久卷,當(dāng)然你可以以云提供商的方式來(lái)分配持久卷給有狀態(tài)的應(yīng)用。
如果您想使用由基礎(chǔ)云提供商管理的有狀態(tài)服務(wù)(例如RDS,DynamoDB等),您需要使用Kubernetes的服務(wù)目錄(Service Catalog,),那么kubernetes就可以消費(fèi)云提供商托管的服務(wù)。
6.3 Kubernetes升級(jí)
您可能會(huì)害怕Kubernetes集群升級(jí)會(huì)帶來(lái)嚴(yán)重的后果,導(dǎo)致您更希望維持現(xiàn)有的集群設(shè)置。那么最好的方法可能是使用和生產(chǎn)集群相同版本的Kubernetes和配置來(lái)創(chuàng)建一個(gè)新集群,安裝所有關(guān)鍵應(yīng)用程序并升級(jí)該集群,檢查一切是否正常,如果正常,再升級(jí)生產(chǎn)中的集群。如果您對(duì)Kubernetes及其帶來(lái)的好處持認(rèn)真態(tài)度,那么集群升級(jí)是您無(wú)法避免的的。因此,計(jì)劃并執(zhí)行是最好的解決辦法。
6.4 許多靈活的部件
說(shuō)到虛擬化技術(shù),這已經(jīng)是我們習(xí)以為常的抽象化技術(shù)了。實(shí)際上,當(dāng)某人引用“計(jì)算機(jī)”或“服務(wù)器”時(shí),他們很可能指的是虛擬機(jī)。對(duì)于應(yīng)用來(lái)說(shuō),Kubernetes很有可能成為新的標(biāo)準(zhǔn)底層。一個(gè)新的抽象級(jí)別,成為新的常態(tài)。對(duì)于虛擬機(jī)而言,由于大多數(shù)大型系統(tǒng)都采用Linux的KVM技術(shù)進(jìn)行標(biāo)準(zhǔn)化,因此它是操作系統(tǒng)層的組成部分,盡管還涉及其他組件,但是它們是相當(dāng)?shù)讓拥?。它與Kubernetes截然不同,Kubernetes上有十幾個(gè)服務(wù)在不同機(jī)器之間相互通信,在計(jì)算,存儲(chǔ),網(wǎng)絡(luò)和自動(dòng)擴(kuò)展方面進(jìn)行相當(dāng)復(fù)雜的操作。
當(dāng)問(wèn)題出現(xiàn)時(shí),您可能不得不袖手旁觀。我們只能在某種程度上假設(shè)Kubernetes使用的這些組件的所有不同版本在某種程度上是相互協(xié)調(diào)的。至少云服務(wù)提供商希望我們相信這一點(diǎn)。
6.5 保留Kubernetes人才
如果您希望采用Kubernetes,但是只有一個(gè)人在后面支撐你,您將獨(dú)自承擔(dān)風(fēng)險(xiǎn)。雖然Kubernetes在您的項(xiàng)目中證明了自己的價(jià)值,但正如我們將要看到的,讓整個(gè)DevOps團(tuán)隊(duì)接受Kubernetes的培訓(xùn)或者自學(xué)。畢竟,誰(shuí)都想接受一次培訓(xùn)的機(jī)會(huì),來(lái)研究一項(xiàng)炙手可熱的技術(shù)?另一方面,您需要一群熟悉Kubernetes的DevOps團(tuán)隊(duì)而不是一兩個(gè)人,以便在未來(lái)也能保持Kubernetes執(zhí)行的連續(xù)性。相信我,隨著Kubernetes在LinkedIn頁(yè)面上被列為一項(xiàng)技能,人們很容易跳槽,不能只依賴一兩個(gè)人來(lái)執(zhí)行這項(xiàng)任務(wù)。
7.將Kubernetes引入您的組織
至此,如果您確信可以從在組織中部署Kubernetes受益,您可以按照以下步驟,讓您的團(tuán)隊(duì)逐步了解Kubernetes以及采用它來(lái)管理生產(chǎn)工作負(fù)載。
7.1培訓(xùn)或雇用Kubernetes人才
您需要DevOps團(tuán)隊(duì)里具有Kubernetes知識(shí)和實(shí)操能力的人員來(lái)執(zhí)行您的計(jì)劃。鑒于官網(wǎng)提供了高質(zhì)量的培訓(xùn)材料,他們可以自學(xué),也可以通過(guò)更正式的培訓(xùn)計(jì)劃。您應(yīng)該咨詢您的云提供商,看他們是否可以為您的組織專門(mén)培訓(xùn),或者他們有什么培訓(xùn)可以讓您的團(tuán)隊(duì)參加。在您所在的地區(qū)可能還有其他付費(fèi)選擇。
雇用Kubernetes人才是另一種選擇。尋找使用過(guò)Kubernetes來(lái)運(yùn)行生產(chǎn)工作負(fù)載的人員。雇用他們時(shí),您可能需要跟他們討論之前投入生產(chǎn)的方式以及在Kubernetes上運(yùn)行生產(chǎn)工作負(fù)載時(shí)面臨的挑戰(zhàn)。詢問(wèn)他們是否運(yùn)行任何有狀態(tài)的工作負(fù)載。通過(guò)這些討論,您應(yīng)該能夠確定他們是否適合您的項(xiàng)目。
7.2將工作負(fù)載遷移到Docker
首先您需要將您的工作負(fù)載遷移至Docker,然后再?gòu)腄odcker遷移至kubernetes,如果您的應(yīng)用程序沒(méi)有運(yùn)行在docker上,而您想要直接遷移到Kubernetes,那么遇到問(wèn)題時(shí),您將無(wú)法準(zhǔn)確指出是由構(gòu)建時(shí),運(yùn)行時(shí)或配置問(wèn)題引起的。另一方面,如果您的團(tuán)隊(duì)花時(shí)間在容器化工作負(fù)載,并在生產(chǎn)環(huán)境中使用Docker運(yùn)行它們,你遇到的問(wèn)題,需要考慮的問(wèn)題就會(huì)變少了。
7.3 在Kubernetes上運(yùn)行非生產(chǎn)的工作負(fù)載
現(xiàn)在您的工作負(fù)載已被容器化,您可以將一些非生產(chǎn)型工作負(fù)載(例如開(kāi)發(fā)和臨時(shí)的工作負(fù)載)遷移到Kubernetes。這樣,您的大型團(tuán)隊(duì)可以先適應(yīng)新環(huán)境,將Kubernetes集成到您的持續(xù)部署管道中,等等。
7.4 把無(wú)狀態(tài)工作負(fù)載的遷移放在前面
在將生產(chǎn)工作負(fù)載轉(zhuǎn)移到Kubernetes時(shí),可以從無(wú)狀態(tài)工作負(fù)載開(kāi)始:無(wú)狀態(tài)的工作負(fù)載指的是只提供請(qǐng)求服務(wù)但不直接保留任何數(shù)據(jù)的容器。在Kubernetes上運(yùn)行有狀態(tài)工作負(fù)載需要更深的Kubernetes專業(yè)知識(shí)。對(duì)于有狀態(tài)的工作負(fù)載,您需要做一些更仔細(xì)的計(jì)劃,以了解在節(jié)點(diǎn)發(fā)生故障時(shí)如何管理。例如,對(duì)于像Elasticsearch這樣的分布式有狀態(tài)應(yīng)用程序,這將尤其復(fù)雜。
7.5 遷移非關(guān)鍵性工作負(fù)載
一開(kāi)始只將非關(guān)鍵工作負(fù)載轉(zhuǎn)移到Kubernetes上,并讓您的團(tuán)隊(duì)在上運(yùn)行生產(chǎn)工作負(fù)載以積累相關(guān)經(jīng)驗(yàn)。例如,在生產(chǎn)中運(yùn)行工作負(fù)載需要的監(jiān)控,警報(bào)和應(yīng)用程序升級(jí)等。
7.6 大飛躍
從以上步驟我們看到了如何以一種既可以建立專業(yè)知識(shí)又可以降低風(fēng)險(xiǎn)的方式在組織中采用Kubernetes。我們還從工程角度討論了如何做好準(zhǔn)備以進(jìn)行容器化并將生產(chǎn)工作負(fù)載緩慢引入Kubernetes。您只需要判斷何時(shí)是最佳時(shí)機(jī)。每個(gè)組織的采用率與風(fēng)險(xiǎn)率都不相同,因此您應(yīng)該做出最佳判斷。我的建議是您使用Terraform之類的工具來(lái)自動(dòng)化Kubernetes集群本身的部署。
8.結(jié)論
最好的計(jì)劃總是會(huì)考慮最差的情況,這就是本文的主要思想:告訴您潛在的問(wèn)題以及如何減輕采用Kubernetes風(fēng)險(xiǎn)。 Kubernetes是偉大的技術(shù)。在很多方面,它肯定會(huì)為您提供幫助。但是,與打算使用生產(chǎn)工作負(fù)載的任何技術(shù)一樣,您將需要權(quán)衡風(fēng)險(xiǎn),看看收益是否大于風(fēng)險(xiǎn)。查看Kubernetes的失敗案例對(duì)于找出最常見(jiàn)的問(wèn)題以及如何解決這些問(wèn)題很有用。
就個(gè)人而言,我對(duì)Kubernetes以及在上面運(yùn)行生產(chǎn)工作負(fù)載感到非常興奮, Kubernetes提供的編排,自動(dòng)擴(kuò)展,提高服務(wù)器利用率和自我修復(fù)功能,這些都帶來(lái)了真正的好處,并且都不需要花費(fèi)您自己的時(shí)間去實(shí)現(xiàn)。
譯者介紹:Grace,程序員,研究生畢業(yè)于SUNY at Stony Brook,目前供職于Linktime Cloud Company,對(duì)容器化技術(shù)以及數(shù)據(jù)可視化技術(shù)感興趣。
分享標(biāo)題:給技術(shù)經(jīng)理的Kubernetes采用指南
文章URL:http://fisionsoft.com.cn/article/dhsjhjo.html


咨詢
建站咨詢
