新聞中心
當(dāng)前位置:網(wǎng)站首頁 > 新聞中心
Kubernetes與Docker的競爭,你了解真實(shí)情況嗎?
Docker和Kubernetes是云計(jì)算市場的熱點(diǎn)技術(shù),而且總被拿來比較,他們的受歡迎程度在整個開發(fā)社區(qū)中不斷增長。那么你是否會關(guān)注它們二者之間的競爭,實(shí)際情況到底如何?
了解Docker和Kubernetes:容器編排
在過去幾年中,容器改變了軟件開發(fā)和部署的面貌。因此,任何在DevOps空間工作的人,遲早都會遇到“Kubernetes vs Docker”的討論。最初的討論可能令人困惑,因?yàn)镈ocker和Kubernetes不是直接競爭對手。正如我們所知,討論應(yīng)該更多地針對“Kubernetes vs Docker Swarm”。
但是,對于任何DevOps從業(yè)者來說,理解Docker和Kubernetes的細(xì)節(jié)是很重要的。這兩種技術(shù)都在迅速改進(jìn)并改變了DevOps的做法。因此,充分了解這些技術(shù)的現(xiàn)狀將有助于你獲得競爭優(yōu)勢。Docker和容器的崛起
容器是輕量級可執(zhí)行程序包,作為獨(dú)立軟件運(yùn)行。它們包含所有必需的組件,如代碼,run time,系統(tǒng)工具,庫和配置設(shè)置,以便一致地執(zhí)行。
Docker是一個容器的開放平臺,但它不是最早的。自20世紀(jì)70年代以來,容器平臺一直存在。他們的開發(fā)可以追溯到Unix中的chroot系統(tǒng)調(diào)用。在2000年代早期,F(xiàn)reeBSD Jails和Linux服務(wù)器的開發(fā)導(dǎo)致了2008年的Linux容器(LXC)。Docker在2013年左右出現(xiàn)在容器領(lǐng)域,并立即取得了成功。原因是Docker使得運(yùn)行容器變得簡單;使用Docker,開發(fā)人員可以輕松啟動,停止和銷毀容器。而且?guī)淼牡蛯W(xué)習(xí)曲線和易用性,使其成為軟件開發(fā)過程中的主要方向。
最初,由于安全問題,IT運(yùn)營團(tuán)隊(duì)并不熱衷于在生產(chǎn)環(huán)境中使用容器。當(dāng)時,他們已經(jīng)在使用虛擬機(jī)(VM)。但與VM不同,主機(jī)的內(nèi)核在容器之間共享。因此,通過容器拿下主機(jī)的風(fēng)險(xiǎn)更高。使用此漏洞,黑客可以輕松啟動拒絕服務(wù)(DoS)和其他形式的攻擊。此外,容器是根據(jù)常見鏡像創(chuàng)建的,團(tuán)隊(duì)對使用可能會使整個生產(chǎn)管道面臨風(fēng)險(xiǎn)的不良鏡像持謹(jǐn)慎態(tài)度。
盡管生產(chǎn)團(tuán)隊(duì)擔(dān)心,Docker仍然獲得了發(fā)展勢頭,因?yàn)樗岄_發(fā)人員變得更輕松。隨著技術(shù)的成熟,Docker開源社區(qū)更加重視解決安全問題。不久,Docker容器開始出現(xiàn)在生產(chǎn)環(huán)境中。
Kubernetes和容器編排
Kubernetes的發(fā)展獨(dú)立于Docker。2003年左右,谷歌創(chuàng)建了Borg系統(tǒng)來應(yīng)對日益增長的集群管理問題。這是一個內(nèi)部工具。2014年年中,Google推出Kubernetes作為Borg系統(tǒng)的開源版本。不久,微軟,紅帽,IBM和Docker加入,以支持Kubernetes社區(qū)。
Kubernetes是一個容器編排解決方案。當(dāng)開發(fā)人員在開發(fā)環(huán)境中處理少量容器時,管理服務(wù)并不是什么大問題。但是,當(dāng)應(yīng)用程序部署到生產(chǎn)環(huán)境并且有數(shù)百或數(shù)千個容器和服務(wù)時,管理任務(wù)變得復(fù)雜。Kubernetes簡化了大規(guī)模部署的容器管理問題。
在Kubernetes環(huán)境中,開發(fā)人員使用pod的概念創(chuàng)建他們的應(yīng)用程序。Pod是集群在一起的容器,就像單個單元一樣工作。這些pod已部署到Kubernetes主節(jié)點(diǎn)以及配置要求,如pod數(shù)和網(wǎng)絡(luò)設(shè)置。主節(jié)點(diǎn)管理工作節(jié)點(diǎn)。在部署pod之后,主節(jié)點(diǎn)負(fù)責(zé)跟蹤容器。Kubernetes使生產(chǎn)團(tuán)隊(duì)易于進(jìn)行容器管理和編排。
了解Kubernetes和Docker的交叉點(diǎn)
從上面的討論中可以看出,Docker容器是使用Kubernetes管理的。所以不應(yīng)該有任何“Docker vs. Kubernetes”討論。但Docker有一款名為Docker Swarm的產(chǎn)品。它是一個集群和調(diào)度工具。它類似于Kubernetes,所以任何正在研究容器編排工具的人都應(yīng)該研究“Kubernetes vs. Docker Swarm”比較。
由于Docker的普及,許多開發(fā)團(tuán)隊(duì)使用Docker Swarm啟動容器編排。這似乎是自然的下一步。這很容易學(xué)習(xí),Kubernetes的學(xué)習(xí)曲線更加陡峭。但是使用Minikube學(xué)習(xí)它變得越來越容易,Minikube是一個運(yùn)行單節(jié)點(diǎn)Kubernetes集群的工具。
另一個重要因素是Kubernetes擁有比Docker Swarm更強(qiáng)大的社區(qū),所有主要的云提供商都支持它。亞馬遜AWS已經(jīng)為Kubernetes(Amazon EKS)啟動了Amazon Elastic Container Service,Google Cloud擁有Kubernetes Engine,微軟Azure擁有Azure Kubernetes服務(wù)(AKS)。所以目前看來,主要的市場力量正在將Kubernetes作為一個容器編排解決方案。Docker和Kubernetes的主要趨勢
管理Docker和Kubernetes環(huán)境的DevOps團(tuán)隊(duì)?wèi)?yīng)該關(guān)注這些關(guān)鍵趨勢:
微服務(wù)的使用:微服務(wù)架構(gòu)是容器使用興起的主要原因之一。在這種架構(gòu)中,應(yīng)用程序被分解為更小的獨(dú)立服務(wù)。容器非常適合在生產(chǎn)環(huán)境中支持這些類型的應(yīng)用程序。因此,期望支持更多使用Docker和Kubernetes的基于微服務(wù)的應(yīng)用程序。
多云環(huán)境的增加:企業(yè)越來越擔(dān)心使用單云解決方案。因此,他們正在尋求多云環(huán)境以獲得更多選擇并減少對單個供應(yīng)商的依賴。這意味著DevOps團(tuán)隊(duì)必須具備在多云環(huán)境中運(yùn)行Docker和Kubernetes所需的技能,這將帶來新的挑戰(zhàn)。
對Docker和Kubernetes的支持越來越多:Docker和Kubernetes都擁有強(qiáng)大的社區(qū)。Docker Hub擁有一個活躍的用戶群,可以定期更新各種應(yīng)用程序的鏡像。Kubernetes也得到了開源社區(qū)和亞馬遜,谷歌,微軟和IBM等大公司的大力支持。所以Docker和Kubernetes將在企業(yè)和小企業(yè)中變得更加普遍。
結(jié)語
所以其實(shí)并不是“Kubernetes vs Docker”,討論應(yīng)該集中在“Kubernetes vs. Docker Swarm”上。這兩種技術(shù)在今天的軟件環(huán)境中都扮演著重要的角色。Docker容器改進(jìn)了開發(fā)過程,Kubernetes容器編排改進(jìn)了部署過程。DevOps團(tuán)隊(duì)可以利用這些技術(shù)的強(qiáng)大功能構(gòu)建更強(qiáng)大的持續(xù)集成和持續(xù)交付(CI/CD)管道,以實(shí)現(xiàn)更快,更可靠的軟件開發(fā)周期。
|