容器雲開發必備知識
導讀 | 如今,「即服務 」的時代已經到來,將能力服務化,萬物皆可具備基礎設施的特徵。在IT界更是如此,譬如,基礎設施即服務(IaaS)、平臺即服務(PaaS)、軟體即服務(SaaS)等等。容器即服務(CaaS)無疑是這波浪潮中的又一位重量級參與者。 |
那麼作為開發者,想探究CaaS的「真諦」,首先應該明白這一系列問題——Caas是什麼?它能幹什麼?和PaaS的區別是什麼?構成CaaS有哪些基本要素?有什麼代表性的產品值得了解? 在本文中,我們將探討這一系列問題,幫助開發者「破除迷霧 」、「看清真相 」。
容器即服務,英文全稱Container-as-a-Service,簡寫CaaS,它提供一種上傳、執行、擴充套件以及管理應用程式容器的方法。這類服務全面提供執行這些功能的API或CLI,有些甚至提供GUI或Web門戶。這裡的容器可以是多種不同型別,包括Docker、LXD以及OpenVZ等等。聽起來似乎跟PaaS差不了多少,但二者也有一些區別。下面我們從概念出發,看看二者之間的差異所在。
平臺即服務(PaaS),以IaaS為基礎構建而成。此外,也有一部分PaaS供應商也開始以CaaS作為服務基礎。
從傳統意義出發,PaaS解決的是應用程式的託管、打包與分發問題,強調零停機時間部署、自動規模伸縮與負載均衡功能。此外,它還可以整合多種開發人員工具以及執行狀態與指標統計資訊。PaaS的核心優勢之一,在於開發人員可以輕鬆構建應用程式,而不再分神於應用程式執行所處的具體環境。像Cloud Foundry, Heroku以及Google App Engine等,都屬於典型的PaaS供應商。
而CaaS提供一種輕鬆快捷的容器部署方式。它還能夠保證全面完善的可移植性,確保容器能夠在幾乎任何位置上執行。CaaS還提供用於容器乃至容器叢集的配置及管理功能。
從表面上看,CaaS與PaaS好像沒什麼不同。二者都管理著應用程式的部署與託管任務,而且基本功能也區別不大。PaaS的不少優勢,都可以透過使用容器映象加容器登錄檔的方式實現。此外,Kubernetes能夠幫助使用者滾動部署並實現負載均衡與自動規模伸縮。典型的CaaS解決方案包括Google Kubernetes Engine (GKE)與Azure Container Service。
要PaaS?還是要CaaS?實際上,選擇哪種解決方案要根據你的應用場景來決定。
這二者都能幫助開發人員部署並執行應用程式。但是,PaaS會隱藏一部分容器化任務。換句話說,使用CaaS,開發者仍然需要管理一部分應用程式容器化任務;但使用PaaS,開發者就不用額外操心了。再有,PaaS在所使用的語言及技術方面也有更多要求。雖然能夠支援多種不同語言,但數量畢竟有限,這是因為PaaS通常依靠構建軟體包來執行應用程式,而不像Docker那樣使用通用型容器。
此外,CaaS能更輕鬆地運用多雲託管功能,這也是因為它不像PaaS那樣「獨斷專行 」。只要雲服務商支援容器,開發者也可以藉此釋出並執行自己的服務。
如果企業擁有強大的基礎設施團隊,或者已經習慣於處理網路及運營問題,那麼使用CaaS將幫助企業更好地發揮自身技術優勢。但如果企業並不熟悉該如何將服務部署至雲端,或者運營團隊在這方面的經驗不是很豐富,那麼PaaS無疑是更理想的入門級選項。
在PaaS與CaaS之間進行選擇時,另一大重要考量因素在於速度與控制。如果企業希望快速推出應用程式,又不想為其他事情分神,那麼PaaS的效果更好。但如果打算更好地控制服務的容器化及管理方式,那麼CaaS解決方案將成為最佳選擇。
說了半天,好像淨是好事。但CaaS難道就沒有任何缺點了嗎?
當然有。首先,根據雲服務商的具體方案,大家會發現其可能並不支援某些容器型別。絕大多數服務商當然都在支援Docker,但現在CaaS當中限定容器型別的現象正愈發普遍。雲服務商越來越多地將其產品耦合起來,確保客戶能夠滿足雲服務提出的種種使用要求。因此如果企業希望在容器型別當中做出選擇,至少應確保其符合多數CaaS供應商提出的OCI標準。
此外,由於CaaS並不怎麼強制限定能夠在容器中執行的服務型別,所以企業往往難以找到適當的工具與監控方案。請確保使用Scaylr等工具持續監控容器執行,目前大多數CaaS供應商要求使用者自行跟蹤容器狀態。
下面來看構成CaaS的各類元件。
(1) 容器登錄檔
容器登錄檔是容器映象儲存庫,我們可以將它視為容器的Maven庫。在將映象放入儲存庫後,容器管理系統即可提取映象並加以執行。
大多數開發者最熟悉的登錄檔當數Docker Hub,可以使用這類公共登錄檔,也可以使用某些本地內部版本。
(2) 容器管理
CaaS的容器管理與編排元件負責管理容器與容器叢集。常見的容器管理工具包括Kubernetes與Docker Swarm。
首先,容器管理能夠自動執行容器部署。這類元件會建立新例項,監控這些例項以確保其正常啟動,並在發生問題時加以回滾。一旦應用程式順利啟動並開始執行,容器管理還可監控服務執行狀態。如果某個服務例項發生故障或無法響應,則容器管理元件將啟動新例項以接管相應負載。
容器管理元件還幫助實現負載均衡並控制容器之間的通訊。例如,其僅允許客戶端應用程式及容器在完全啟動並執行之後,方可呼叫服務例項。
(3) 開發者工具
除了容器管理與登錄檔,CaaS解決方案中還提供多種開發者工具。最常用的工具包括CLI或API。這些工具將幫助監控並管理容器例項。雖然很多開發者希望以自動化或 化方式處理大部分管理任務,但這些開發者工具還是可以幫助快速對例項進行規模伸縮、或即時修改配置與部署選項。
多年以來,容器已經憑藉自身強大的特性進入主流市場,但CaaS供應商並沒有絲毫鬆懈。他們以更靈活的方式滿足著大多數開發團隊的需求,成功從PaaS手中奪下不少市場份額。但是,CaaS並不適合所有使用者、所有場景。換言之,它只是我們日益龐大的開發者空間中的另一款工具。究竟適不適合,請務必認真考量。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2756893/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ReactNative開發必備ES6知識React
- 後端開發必備的 RestFul API 知識後端RESTAPI
- 資料庫開發必備知識介紹資料庫
- 前端開發者必備的快取知識總結前端快取
- css必備知識點CSS
- 必備知識點 模版
- 必備知識點 路由路由
- 前端必備知識點—SVG前端SVG
- 必備知識點 檢視
- 網路基礎必備知識
- OpenStack必備基礎知識
- 大前端開發人員必知必會的HTTP知識前端HTTP
- 必備知識點 模型層ORM模型ORM
- 安裝Linux之前必備知識Linux
- Redis 面試必備知識點Redis面試
- Hybrid App 應用開發中 5 個必備知識點複習APP
- 高階前端開發人員必備工具-Node.JS知識講解前端Node.js
- Web前端必備-Nginx知識彙總Web前端Nginx
- 前端進階必備知識彙總前端
- 騰訊 PHP 面試必備知識PHP面試
- day04 必備基礎知識
- 面試官: 我必問的容器知識點!面試
- 程式猿必備的Linux基礎知識Linux
- 機器學習之必備知識篇機器學習
- Python入門必備知識點總結Python
- 效能測試必備基礎知識(二)
- Python 基礎(一):入門必備知識Python
- Java面試題必備知識之ThreadLocalJava面試題thread
- JVM調優必備理論知識-GCCollectorJVMGC
- Python 必備面試基礎知識-3Python面試
- Python 面試必備基礎知識-1Python面試
- 程式必備區塊鏈基礎知識區塊鏈
- 雲原生學習築基 ~ 組網必備知識點 ~ DNS服務DNS
- 雲原生時代,分散式系統設計必備知識圖譜(內含22個知識點)分散式
- linux嵌入式程式設計開發必備知識,這些你都要知道Linux程式設計
- 千萬淘寶店運營必備知識,你必須知道!
- 爬蟲必須得會的預備知識爬蟲
- 學習網路BGP必備基礎知識