Docker+ Kubernetes已成為雲端計算的主流(二十五)
前言
最近正在抽時間編寫k8s的相關教程,很是費時,等相關內容初步完成後,再和大家分享。對於k8s,還是上雲更為簡單、穩定並且節省成本,因此我們需要對主流雲服務的容器服務進行了解,以便更好地應用於生產。
目錄
主流雲服務容器服務介紹
-
亞馬遜AWS
-
微軟Azure
-
阿里雲
-
騰訊雲
Docker+ Kubernetes已成為雲端計算的主流
-
什麼是Kubernetes(k8s)
-
Kubernetes正在塑造應用程式開發和管理的未來
-
Docker+ Kubernetes已成為雲端計算的主流
主流雲服務容器服務介紹
亞馬遜AWS
Amazon Web Services (AWS) 是亞馬遜公司旗下雲端計算服務平臺,為全世界範圍內的客戶提供雲解決方案。AWS面向使用者提供包括彈性計算、儲存、資料庫、應用程式在內的一整套雲端計算服務,幫助企業降低IT投入成本和維護成本。
那麼如何在AWS上執行Docker呢?AWS 同時為 Docker 開源解決方案和商業解決方案提供支援,並且可通過多種方式在 AWS 上執行容器:
-
Amazon Elastic Container Service (ECS),是一種高度可擴充套件的高效能容器編排服務,支援Docker容器,讓我們可以在 AWS 上輕鬆執行和擴充套件容器化應用程式,而不需要安裝和操作自己的容器編排軟體,不需要管理和擴充套件虛擬機器叢集,也不需要在這些虛擬機器上排程容器。其工作原理如下圖所示:
-
AWS Fargate,適用於Amazon ECS的技術,可讓我們在生產環境中執行容器,而無需部署或管理基礎設施。
-
Amazon Elastic Container Service for Kubernetes (EKS) ,可以讓我們在 AWS 上執行 Kubernetes,而無需安裝和操作 Kubernetes 主節點。
-
Amazon Elastic Container Registry (ECR) ,是一個高度可用且安全的私有容器儲存庫,可以讓我們能夠輕鬆地儲存和管理Docker 容器映象,並對靜態映象進行加密和壓縮,以便快速提取和保護這些映象。
-
AWS Batch,可以讓Docker 容器執行高度可擴充套件的批處理工作負載。
微軟Azure
Microsoft Azure 是一個開放而靈活的企業級雲端計算平臺。通過 IaaS + PaaS 幫助使用者加快發展步伐,提高工作效率並節省運營成本。
Azure是一種靈活和支援互操作的平臺,它可以被用來建立雲中執行的應用或者通過基於雲的特性來加強現有應用。它開放式的架構給開發者提供了Web應用、互聯裝置的應用、個人電腦、伺服器、或者提供最優線上複雜解決方案的選擇。
在容器這塊,Azure同樣的提供了眾多解決方案:
下面我們側重介紹下以下服務:
-
Azure 容器例項:Azure 容器例項提供了在 Azure 中執行容器的最簡捷方式,既無需預配任何虛擬機器,也不必採用更高階的服務。
-
Azure Service Fabric:Azure Service Fabric 是一款分散式系統平臺,可方便使用者輕鬆打包、部署和管理可縮放的可靠微服務和容器。 開發人員和管理員不需解決複雜的基礎結構問題,只需專注於實現苛刻的任務關鍵型工作負荷,即那些可縮放、可靠且易於管理的工作負荷。總之,Azure Service Fabric 旨在解決構建和執行服務方面的難題,並有效地利用基礎結構資源,使團隊可以使用微服務方法來解決業務問題。並且,其與服務生成方式無關,可以使用任意技術。不過,它確實提供內建程式設計 API,以便使用者可以更輕鬆地生成微服務。
-
Azure Kubernetes 服務 (AKS):AKS管理託管的 Kubernetes 環境,使使用者無需具備容器業務流程專業知識即可快速、輕鬆地部署和管理容器化的應用程式。 它還通過按需預配、升級和縮放資源,消除了正在進行的操作和維護的負擔,而無需使應用程式離線。
-
Azure 應用服務:Azure應用服務是用於託管 Web 應用程式、REST API 和移動後端的服務。可以使用 .NET、NET Core、Java、Ruby、Node.js、PHP 或 Python 等偏好的語言進行開發。 在基於 Windows 和 Linux 的環境中,應用程式都可以輕鬆地執行和縮放。應用服務不僅可將 Microsoft Azure 的強大功能(例如安全性、負載均衡、自動縮放和自動管理)新增到應用程式。還能利用其DevOps功能,例如來自Azure DevOps、GitHub、Docker 中心和其他源的持續部署,以及包管理、過渡環境、自定義域和 SSL 證書。
-
Azure Dev Spaces:使用 Azure Dev Spaces,可以測試並以迭代方式開發在 Azure Kubernetes 服務 (AKS) 中執行的整個微服務應用程式,而無需複製或模擬依賴項。 Azure Dev Spaces 減少了在共享 Azure Kubernetes 服務 (AKS) 群集中與你的團隊協作以及直接在 AKS 中執行和除錯容器的負擔,並降低了這些工作的複雜度。
阿里雲
阿里雲(www.aliyun.com)創立於2009年,是全球領先的雲端計算及人工智慧科技公司,為200多個國家和地區的企業、開發者和政府機構提供服務。2017年1月阿里雲成為奧運會全球指定雲服務商。2017年8月阿里巴巴財報資料顯示,阿里雲付費雲端計算使用者超過100萬。阿里雲致力於以線上公共服務的方式,提供安全、可靠的計算和資料處理能力,讓計算和人工智慧成為普惠科技。阿里雲在全球18個地域開放了49個可用區,為全球數十億使用者提供可靠的計算支援。此外,阿里云為全球客戶部署200多個飛天資料中心,通過底層統一的飛天作業系統,為客戶提供全球獨有的混合雲體驗。
飛天(Apsara)是由阿里雲自主研發、服務全球的超大規模通用計算作業系統。 它可以將遍佈全球的百萬級伺服器連成一臺超級計算機,以線上公共服務的方式為社會提供計算能力。 從PC網際網路到移動網際網路到萬物網際網路,網際網路成為世界新的基礎設施。飛天希望解決人類計算的規模、效率和安全問題。飛天的革命性在於將雲端計算的三個方向整合起來:提供足夠強大的計算能力,提供通用的計算能力,提供普惠的計算能力。飛天誕生於2009年2月,目前為全球200多個國家和地區的創新創業企業、政府、機構等提供服務。
同樣,阿里雲對容器也提供了友好的支援:
-
容器服務 ACS
容器服務提供高效能可伸縮的容器應用管理服務,支援用Docker和Kubernetes進行容器化應用的生命週期管理,提供多種應用釋出方式和持續交付能力並支援微服務架構。容器服務簡化了容器管理叢集的搭建工作,整合了阿里雲虛擬化、儲存、網路和安全能力,打造雲端最佳容器執行環境。
-
容器服務 ACK
容器服務 Kubernetes 版(簡稱 ACK)提供高效能可伸縮的容器應用管理能力,支援企業級 Kubernetes 容器化應用的全生命週期管理。容器服務 Kubernetes 版簡化叢集的搭建和擴容等工作,整合阿里雲虛擬化、儲存、網路和安全能力,打造雲端最佳的 Kubernetes 容器化應用執行環境。
-
彈性容器例項 ECI
阿里雲彈性容器例項(Elastic Container Instance)是 Serverless 和容器化的彈性計算服務。使用者無需管理底層 ECS 伺服器,只需要提供打包好的映象,即可執行容器,並僅為容器實際執行消耗的資源付費。
-
容器映象服務 ACR
容器映象服務(Container Registry)提供安全的映象託管能力,穩定的國內外映象構建服務,便捷的映象授權功能,方便使用者進行映象全生命週期管理。容器映象服務簡化了Registry的搭建運維工作,支援多地域的映象託管,並聯合容器服務等雲產品,為使用者打造雲上使用Docker的一體化體驗。
騰訊雲
騰訊云為騰訊傾力打造的雲端計算品牌,以卓越科技能力助力各行各業數字化轉型,為全球客戶提供領先的雲端計算、大資料、人工智慧服務,以及定製化行業解決方案。其基於QQ、微信、騰訊遊戲等海量業務的技術錘鍊,從基礎架構到精細化運營,從平臺實力到生態能力建設,騰訊雲將之整合並面向市場,使之能夠為企業和創業者提供集雲端計算、雲資料、雲運營於一體的雲端服務體驗。
在容器這塊,騰訊雲提供瞭如下解決方案:
-
容器服務 TKE
騰訊雲容器服務(Tencent Kubernetes Engine ,TKE)基於原生 kubernetes 提供以容器為核心的、高度可擴充套件的高效能容器管理服務。騰訊雲容器服務完全相容原生 kubernetes API ,擴充套件了騰訊雲的 CBS、CLB 等 kubernetes 外掛,為容器化的應用提供高效部署、資源排程、服務發現和動態伸縮等一系列完整功能,解決使用者開發、測試及運維過程的環境一致性問題,提高了大規模容器叢集管理的便捷性,幫助使用者降低成本,提高效率。容器服務提供免費使用,涉及的其他雲產品另外單獨計費。
-
容器例項服務 CIS
容器例項服務(Container Instance Service , CIS)可以幫使用者在雲上快捷、靈活的部署容器,讓使用者專注於構建程式和使用容器而非管理裝置上。無需預購 CVM(雲伺服器),就可以在幾秒內啟動一批容器來執行任務。同時,開發者也可以通過 kubernetes API 把已有kubernetes 叢集的 pod 排程到 CIS 上以處理突增業務。CIS 根據實際使用的資源計費,可以幫使用者節約計算成本。使用 CIS 可以極大降低使用者部署容器的門檻,降低使用者執行 batch 型任務或處理業務突增的成本。
Docker+ Kubernetes已成為雲端計算的主流
從上面主流的雲服務中我們可以看到,沒有哪家雲廠商不支援Docker,同樣的,也沒有哪家雲廠商不支援Kubernetes!也就是說,Docker+ Kubernetes已經成為雲端計算的主流!
什麼是Kubernetes(k8s)
Kubernetes(簡稱k8s)誕生於谷歌,是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,k8s的目標是讓部署容器化的應用簡單並且高效,其提供了應用部署、規劃、更新、維護的機制。
k8s主要有以下特點:
-
可移植
支援公有云,私有云,混合雲,多重雲(multi-cloud) 。可以將容器化的工作負載從本地開發計算機無縫移動到生產環境。在本地基礎結構以及公共雲和混合雲中,在不同環境中協調容器,保持一致性。
-
可擴充套件性
支援模組化,外掛化,可掛載,可組合。並且k8s的擴充套件和外掛在社群開發者和各大公司的支援下高速增長,使用者可以充分利用這些社群產品/服務以新增各種功能。
-
自動化和可伸縮性
支援自動部署,自動重啟,自動複製,自動伸縮/擴充套件,並且可以定義複雜的容器化應用程式並將其部署在伺服器群集甚至多個群集上——因為k8s會根據所需狀態優化資源。通過內建的自動縮放器,k8s可輕鬆地水平縮放應用程式,同時自動監視和維護容器的正常執行。
Kubernetes正在塑造應用程式開發和管理的未來
k8s構建於 Google 數十年經驗,一大半來源於 Google 生產環境規模的經驗。結合了社群最佳的想法和實踐,而且還在不斷地高速迭代和更新之中。
她銜著金鑰匙出生,一誕生就廣受歡迎,更是在2017,其打敗了所有的競爭對手,贏得了雲端計算的戰爭——主流的雲廠商基本上都紛紛放棄了自己造“輪子”的舉動,終止了各自的容器編排工具,加盟了k8s陣營,其中包括Red Hat、微軟、IBM、阿里、騰訊、華為和甲骨文等。
k8s像風暴一樣席捲了應用開發領域,並且已成為雲原生應用程式(架構、元件、部署和管理方式)的事實標準,大量的開發者和企業正在使用k8s建立由微服務和無伺服器功能組成的現代架構。
Docker+ Kubernetes已成為雲端計算的主流
容器是現代軟體交付的未來,而Kubernetes是編排容器的最佳方案(事實上的標準)。
Docker 和Kubernetes相輔相成,聯手打下了雲端計算的“萬里江山”。Docker 為打包和分發容器化應用程式提供了一個開放的標準,而 Kubernetes 則協調和管理通過 Docker 建立的分散式容器化應用程式。換句話說,Kubernetes 提供了部署和執行通過Docker生成的應用程式所需的基礎結構。
在主流的雲服務,基於Docker+k8s的新型PaaS平臺具有敏捷部署、彈性伸縮、靈活排程、故障自動恢復等優勢,充分滿足業務擴充套件中的資源支援,因此在短短兩年之內,便從Docker Swarm、Cloud Foundry Diego、Kontena、Apache Mesos、Amazon ECS…等大量對手中脫穎而出,拿下了皇冠。
k8s和Docker的勝利意味著這是有史以來第一次,無論使用哪一種雲平臺,研發人員都可以擁有完全相同的計算環境。
往期內容連結
Docker最全教程——從理論到實戰(一)
Docker最全教程——從理論到實戰(二)
Docker最全教程——從理論到實戰(三)
Docker最全教程——從理論到實戰(四)
Docker最全教程——從理論到實戰(五)
Docker最全教程——從理論到實戰(六)
Docker最全教程——從理論到實戰(七)
Docker最全教程——從理論到實戰(八)
Docker最全教程之使用Tencent Hub來完成CI(九)
Docker最全教程——資料庫容器化(十)
Docker最全教程——資料庫容器化之持久儲存資料(十一)
Docker最全教程——MongoDB容器化(十二)
Docker最全教程——Redis容器化以及排行榜實戰(十三)
Docker最全教程之Ubuntu下安裝Docker(十四)
Docker最全教程之樹莓派和Docker(十五)
Docker最全教程之使用TeamCity來完成內部CI、CD流程(十六)
Docker最全教程之使用Docker搭建Java開發環境(十七)
Docker最全教程之Go實戰,牆裂推薦(十八)
Docker最全教程之使用.NET Core推送釘釘訊息(十九)
Docker最全教程之使用 Visual Studio Code玩轉Docker(二十)
Docker最全教程之Python爬網實戰(二十一)
Docker最全教程之使用PHP搭建個人部落格站點(二十二)
Docker最全教程之使用Node.js搭建團隊技術文件站(二十三)
Docker最全教程之MySQL容器化 (二十四)