關(guān)于容器、微服務(wù)、Docker的十大問題

2022-10-05    分類: 網(wǎng)站建設(shè)

容器的運(yùn)行無法簡單參考虛擬機(jī)的實(shí)踐經(jīng)驗(yàn)。例如,幾乎任何工作負(fù)載都可以立即虛擬化,但是有些工作負(fù)載適合容器化部署,有的則不適合。

本文回答企業(yè)在使用容器時最常見的10個問題,幫助大家更好地理解容器部署、工作負(fù)載容器化等問題。

關(guān)于容器、微服務(wù)、Docker的十大問題

1. 最適合容器的使用場景是什么?

在生產(chǎn)環(huán)境中,最適合容器化部署的理想應(yīng)用類型應(yīng)該是微服務(wù)。微服務(wù)是一個聚焦的任務(wù),它只代表整個應(yīng)用程序中很小部分。因?yàn)槲⒎?wù)專注于單個任務(wù),所以它可以獨(dú)立于應(yīng)用程序的其它部分進(jìn)行伸縮擴(kuò)展。此外,由于微服務(wù)是高內(nèi)聚和松散耦合的,因此可以彼此獨(dú)立部署和發(fā)布。

此外,使用容器基礎(chǔ)設(shè)施構(gòu)建微服務(wù)可以更快、更好地實(shí)現(xiàn)其優(yōu)勢。只要面向外部的API不破壞應(yīng)用兼容性,軟件開發(fā)人員就可以快速迭代并改進(jìn)整個微服務(wù),且不會影響其它開發(fā)人員的微服務(wù)。但是,大多數(shù)傳統(tǒng)的企業(yè)應(yīng)用程序并不符合微服務(wù)體系結(jié)構(gòu),所以也不是所有企業(yè)都適合使用微服務(wù)。

2. 容器部署時需要考慮的關(guān)鍵因素都有哪些?

(1)UI界面管理和API

管理用戶界面UI,包括那些基于API的圖形化UI(即外部系統(tǒng)直接使用API訪問系統(tǒng))。

(2)鏡像倉庫

公共鏡像倉庫,例如Docker Hub提供公共管理的容器鏡像倉庫。許多容器管理系統(tǒng)都提供私有鏡像倉庫,企業(yè)組織可以在其中管理自己的鏡像。

(3)編排和調(diào)度

編排層能夠使容器以所需的狀態(tài)運(yùn)行,并提供滾動更新和回滾的功能。當(dāng)然,Kubernetes已經(jīng)成為容器編排的實(shí)際標(biāo)準(zhǔn)。

(4)容器運(yùn)行時

容器運(yùn)行時,可以讓集群節(jié)點(diǎn)在鏡像倉庫中獲取容器鏡像,還可生成正確的文件結(jié)構(gòu)在主機(jī)上運(yùn)行容器,也可與網(wǎng)絡(luò)和存儲插件交互,也能創(chuàng)建、啟停容器。

(5)安全管控

通過安全組件執(zhí)行安全策略,包括秘鑰管理、安全掃描、圖像簽名、網(wǎng)絡(luò)隔離和加密、以及基于角色的訪問控制(RBAC)等。

(6)持續(xù)監(jiān)控

監(jiān)控程序能夠提供集群節(jié)點(diǎn)、容器和微服務(wù)級別的可視化能力。

(7)DevOps工作流

DevOps對于容器部署并不重要,但是它們通常一起使用,例如,DevOps工具、CI/CD管道工具和容器鏡像生成器等工具需要協(xié)同工作。

3. 是否可以在Windows、VMware環(huán)境運(yùn)行容器?

Windows容器生態(tài)系統(tǒng)還不夠成熟,無法廣泛應(yīng)用于生產(chǎn)環(huán)境中。Windows容器缺乏容器編排工具的支持。例如,最新的Kubernetes軟件版本只提供了對Windows容器的beta支持。此外,容器支持的Windows應(yīng)用程序非常少。Windows服務(wù)器對身份驗(yàn)證、安全和網(wǎng)絡(luò)的支持也非常有限的?,F(xiàn)有的幾個組件要么處于“beta”版本,要么處于“預(yù)覽”版本。當(dāng)然,盡管有這些限制,針對特定場景也是可以使用Windows容器,例如內(nèi)部開發(fā)等場景,通過容器可以獲得敏捷性、可移植性和成本優(yōu)勢。

VMware的vSphere可將Docker引擎與vSphere集成,為容器在輕量級VM中運(yùn)行提供了途徑。此外VMware還提供了用于安全存儲鏡像的容器管理門戶和私有倉庫。

4. 應(yīng)該選擇CaaS、Kubernetes還是BYO容器管理解決方案

市場上有多種產(chǎn)品允許企業(yè)大規(guī)模部署容器。這些產(chǎn)品為應(yīng)用程序開發(fā)人員提供的抽象程度不同。最抽象的產(chǎn)品是容器即服務(wù)產(chǎn)品(CaaS),這類產(chǎn)品以前大多是PaaS產(chǎn)品,比如Cloud Foundry和OpenShift。這些CaaS產(chǎn)品從開發(fā)人員那里抽象出基礎(chǔ)設(shè)施的細(xì)節(jié),并以結(jié)構(gòu)化方式提供應(yīng)用程序工具。而BYO容器管理方案,則提供了最少的抽象和大的靈活性,但是增加了復(fù)雜性。

BYO:盡量避免使用BYO,除非在極少數(shù)情況下。因?yàn)楹苌儆薪M織有能力實(shí)現(xiàn)它。對于想要BYO的組織,可以選擇集成一些快速移動的開源產(chǎn)品。

Kubernetes:至少在概念上了解基礎(chǔ)設(shè)施并且能夠動手實(shí)踐,那么選擇一個相對靈活K8S發(fā)行版是一個可行方案。有些CaaS產(chǎn)品提供了一些開發(fā)人員工具的選項(xiàng),同時也為開發(fā)人員提供了更直接地使用容器編排、調(diào)度組件的選項(xiàng)。

PaaS:如果剛剛進(jìn)入微服務(wù)開發(fā),那么就使用PaaS提供的服務(wù)。

5. 容器技術(shù)會比虛擬機(jī)技術(shù)(VM)更不安全嗎?

容器技術(shù)本身并非不安全。事實(shí)上,以防止由于其它容器的破壞而遭受攻擊, 容器中每個應(yīng)用程序和用戶是相互隔離的。所以確保共享主機(jī)OS內(nèi)核的完整性是至關(guān)重要的,并確保在主機(jī)上容器的相互隔離。此外,需要監(jiān)控和保護(hù)容器間通信,而傳統(tǒng)的安全工具在這方面大多是無效的。

采用容器技術(shù)時候,建議考慮以下3點(diǎn):

使用一個經(jīng)過加固的操作系統(tǒng),通常是一個“瘦客戶機(jī)操作系統(tǒng)”,它可以限制攻擊面,并通過一個嚴(yán)格的和自動化的補(bǔ)丁管理系統(tǒng)對其進(jìn)行補(bǔ)充。

在容器的構(gòu)建和運(yùn)行階段采取控制手段,例如在軟件開發(fā)生命周期過程中對軟件進(jìn)行掃描,及早發(fā)現(xiàn)漏洞。

通過使用細(xì)粒度容器安全工具主動檢測和監(jiān)控異常行為,例如青藤蜂巢等容器安全產(chǎn)品可以提供容器和服務(wù)器級別的安全可視化圖,并有助于防止惡意應(yīng)用程序流量。

6. 容器是否可以處理敏感數(shù)據(jù)和應(yīng)用程序?

通過聚焦于容器安全的方法進(jìn)行容器部署,同時結(jié)合現(xiàn)有加密等安全工具,那么容器就可用于處理敏感數(shù)據(jù)和應(yīng)用程序。此外,還可以使用一些容器安全廠商的方案確保容器的安全,例如青藤云安全的容器解決方案等。當(dāng)然,要使此方法成功,安全團(tuán)隊(duì)必須盡早參與為敏感數(shù)據(jù)部署容器的過程。

7. 容器是否適合COTS應(yīng)用?

現(xiàn)在越來越多的軟件供應(yīng)商將容器化部署作為產(chǎn)品一個選項(xiàng)。有的供應(yīng)商采用敏捷開發(fā)模式滿足容器化部署方式,將其納入他們編寫、測試和交付軟件的一部分。這些應(yīng)用都被重構(gòu)為天然適配容器的微服務(wù)。但也有供應(yīng)商,是因?yàn)楹ε虏惶峁┤萜骰渴鸸δ軐⑹ナ袌?,故而勉?qiáng)提供容器部署,這種情況下COTS多數(shù)不適合容器,因?yàn)檫@些應(yīng)用程序本質(zhì)上可能仍然是整體的,或者應(yīng)用程序沒有獨(dú)立可擴(kuò)展屬性。此外,如果企業(yè)本身沒有現(xiàn)有的容器基礎(chǔ)設(shè)施來管理,那么COTS應(yīng)用程序的容器部署可能不適合企業(yè)。

在絕大多數(shù)情況下,應(yīng)該避免在沒有供應(yīng)商明確支持的情況下封裝COTS應(yīng)用程序,避免出差錯。

8. Foundry、OpenShift等產(chǎn)品和容器之間有什么關(guān)系

Cloud Foundry是一個應(yīng)用程序PaaS平臺,它支持多種框架、語言、運(yùn)行時環(huán)境、云平臺及應(yīng)用服務(wù),使開發(fā)人員能夠在幾秒鐘內(nèi)進(jìn)行應(yīng)用程序的部署和擴(kuò)展,無需擔(dān)心任何基礎(chǔ)架構(gòu)的問題。因此,也是一個相對固定的容器框架。之所以這樣描述,是因?yàn)樗穷A(yù)先配置的,以便于安裝和維護(hù)。

OpenShift是紅帽的云開發(fā)平臺即服務(wù)(PaaS),能使開發(fā)人員創(chuàng)建、測試和運(yùn)行他們的應(yīng)用程序,并且可以把它們部署到云中。OpenShift廣泛支持多種編程語言和框架,如Java、Ruby和PHP等。另外它還提供了多種集成開發(fā)工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。

企業(yè)在評估面向容器場景的PaaS產(chǎn)品時,重需要重點(diǎn)注意其提供服務(wù)范圍,區(qū)分它們自身是否支持容器場景,還是需要自定義配置或者需要通過第三方組件服務(wù)才能支持容器場景。

9. 是否應(yīng)該重構(gòu)應(yīng)用程序,以更好地支持容器?

在生產(chǎn)中,如果通過部署容器來支持微服務(wù)的彈性工作負(fù)載時,容器將會帶來大的幫助。因此是否要重構(gòu)應(yīng)用程序以支持容器化部署,這取決于企業(yè)組織是否計劃在開發(fā)測試、生產(chǎn)等階段中使用容器。

另外,企業(yè)在決定重構(gòu)應(yīng)用程序以更好支持容器,應(yīng)該首先重構(gòu)無狀態(tài)部分應(yīng)用程序,例如web應(yīng)用程序前端部分,將其重構(gòu)為微服務(wù),以便能夠支持使用容器。此外,企業(yè)可以通過微服務(wù)體系結(jié)構(gòu)來構(gòu)建新的應(yīng)用程序,避免以后重構(gòu)。

10. 在公有云中部署容器服務(wù)效果如何?

云IaaS服務(wù)提供商提供完全托管服務(wù),而不需要處理虛擬機(jī)或底層基礎(chǔ)設(shè)施,這種趨勢現(xiàn)在也被應(yīng)用到容器中,例如,AWS Fargate提供了抽象底層基礎(chǔ)設(shè)施的托管容器服務(wù),以便開發(fā)人員關(guān)注需要執(zhí)行的任務(wù),而不是Kubernetes集群中的實(shí)例數(shù)量。

Docker容器微服務(wù)

分享名稱:關(guān)于容器、微服務(wù)、Docker的十大問題
本文地址:http://muchs.cn/news39/201889.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、虛擬主機(jī)、做網(wǎng)站、營銷型網(wǎng)站建設(shè)、微信公眾號、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營