docker + kubernetes=共生?相愛相殺?
2017年的雲計算市場,有一個領域獲得了空前的關注 -- Kubernetes。 Kubernetes可以追溯到2014年,當時Google公開發布了該項目的開源代碼。2017年,Kubernetes廣受歡迎,幾乎所有的主要IT供應商都支持這個平台。
小數今天推送的這篇文章,為您揭示Kubernetes與Docker容器之間是怎樣的關係?對企業客戶又意味著什麼?
1
Kubernetes是一個開源項目,提供容器編排,部署和管理功能。自 2015 年 7月以來,它一直是由Linux基金會下的雲原生計算基金會(CNCF)運營。儘管Kubernetes不再只是Google的一個項目,Google仍然貢獻了遠大於比其他任何機構的代碼量。
將AIX應用程序遷移到雲的最佳實踐
Kubernetes 2017年如此耀眼,2018年Kubernetes將繼續成為一支重要的力量。要理解這點,首先要認識到這項技術和雲計算的完美契合之處。
在過去三,四年中,越來越多的企業選擇使用Docker容器來部署雲工作負載。Docker容器提供的既是運行容器化應用程序的運行時,也是封裝和交付容器應用的格式。容器提供了直接在虛擬機管理程序內部改善可移植性和效率的承諾。
隨著容器使用量的增長,需要對容器集群進行編排,調度和控制。這就是Kubernetes適合的地方。Kubernetes提供了大規模運行容器的編排系統和管理平台。還提供了一系列API抽象,使其他技術可以插入,使平台具有很強的可擴展性,並且能夠支持各種不同的供應商部署用例。
比其核心編排能力更重要的是,Kubernetes在2017年成為實現多雲世界的事實平台。雖然AWS在2017年繼續主導公有雲,但企業仍然希望能夠在多個雲上部署和運行應用程序。
容器提供了運行應用程序的基本包裝,可以在任何支持容器的雲上部署。有了Kubernetes,就有了一個平台,可以幫助企業在運行Kubernetes的雲或本地部署管理容器的部署和編排。
雲中的Kubernetes
一顆種子總會發芽,結出碩果。在作為開源技術的短短3年時間裡,Kubernetes成為基於容器的工作負載的默認編排引擎。雖然捐贈的是1.0版本,但是谷歌在大規模運行容器方面有十年的研究和經驗。
Google是否在內部使用Kubernetes?來自Kubernetes博客:「Google上的許多開發人員都是以前在Borg項目上的開發人員。我們已經將Borg的最佳創意融入了Kubernetes,並試圖解決用戶在多年來與Borg確定的一些痛點。」
谷歌在一些內部項目中使用Kubernetes的聲音很清晰,且很快就會改變一些現有的關鍵產品。即使未來需要更好的展示,Kubernetes也可以輕鬆定製 – 最大的好處是可以根據需要將自定義組件與現有組件進行混合和匹配。
以下是Google在過去幾年 Kubernetes 的搜索量增長情況:
Google在Kubernetes上運行的Linux容器(LXC)並不是那麼容易處理,而且需要掌握更多的專業知識。
2017年初,Kubernetes 只支持谷歌雲平台(GCP)和谷歌Kubernetes引擎(GKE),但是在一年中,擴展到包括所有三家主要的公有雲供應商。
二月份,微軟正式加入支持Kubernetes的行列,宣布 Azure容器服務支持Kubernetes。去年11月,Kubernetes在亞馬遜彈性容器服務(Amazon EKS)首次亮相。
除了公有雲支持外,CNCF在9月份還宣布了Kubernetes認證服務提供商計劃。該計劃現在有25個合作夥伴公司開發和銷售自己的Kubernetes發行版並提供管理服務。為了確保不同Kubernetes供應商和平台之間的互操作性,CNCF於2017年11月推出了認證Kubernetes計劃,目前擁有42個成員公司。
Docker
Kubernetes部署大多使用Docker作為默認的容器引擎,除此之外還有CoreOS的rkt等。就其本身而言,Docker有一個叫做Swarm的自身的編排系統,首次亮相於2014年12月。
在許多企業的容器部署中,多數情況是Docker容器引擎正在被使用,Kubernetes被選擇作為編排工具,而不是Swarm。10月17日,在與Kubernetes進行了三年的市場競爭之後,Docker Inc.宣布也將支持Kubernetes。
要清楚的是,Docker公司並沒有放棄自己的Swarm容器編排系統; 相反,它同時支持Swarm和Kubernetes,讓企業可以選擇想要使用的平台。
在接受eWEEK 視頻採訪時,Docker首席執行官史蒂夫·辛格(Steve Singh)解釋了為什麼選擇擁抱Kubernetes。Singh說:「Kubernetes為我們所做的事情是消除了任何潛在的混亂和衝突。我們有愛Kubernetes的客戶,也有愛Docker Swarm的客戶,不應該強迫客戶在兩者之間做出選擇,而是讓他們選擇想要使用他們的東西。 」
Kubernetes之前的Docker 讓容器變得更酷,更易用。由Docker公司推出的Docker 在LXC功能的擴展之外,增加了多種功能。包括跨機器的可移植部署,版本控制,組件重用以及現在的 Docker Hub ,它提供了「開發測試流水線自動化,100,000個免費應用程序,公共和私有註冊中心」。
以下是Google for Docker搜索量增長的圖表:
Kubernetes 1.9和超越
2017年,Kubernetes更新了四個主要版本,增加了新的特性和功能。第一個主要版本是3月27日推出的Kubernetes 1.6,帶來了新的可擴展性和穩定性功能。Kubernetes 1.7於6月29日發布,提供了幫助管理和保護容器基礎設施的新功能。第三個版本是1.8更新,於9月28日推出,並支持基於角色的訪問控制(Role-Based Access Control,RBAC)。
Kubernetes 1.9是2017年的最後一次重大更新,於12月15日正式推出。Kubernetes 1.9的亮點是Apps Workloads API,它為 Kubernetes 中長時間運行無狀態和有狀態工作負載提供了基礎。
這是Kubernetes轉型的一年,2017開源的努力始於一家公有雲供應商,終於年底支持所有三家主要的公有雲提供商。該項目也從Docker競爭對手的角色轉到被Docker擁抱。多雲的承諾長久以來只是一個承諾。作為一個可以在任何公有雲提供商上啟用容器應用程序工作負載的抽象層,隨著Kubernetes 2017年的興起,2018多雲承諾將成為現實。
2
Kubernetes正在鞏固自己作為事實上的容器編排引擎的地位,而Docker幫助實現了這一點。儘管Docker一直是領先的容器技術,但容器編排市場還沒這麼清晰。2017年末,隨著包括Docker在內的主要雲平台提供商支持Kubernetes和一些令人驚訝的CNCF成員資格的增加,這種情況發生了變化。
正確的時機
「時機就是一切」,對於Kubernetes來說,這似乎是正確的。通過讓容器更易用,Docker正在推動Kubernetes的發展。事實上,它已經成為每個公司發展的共生關係 。使用Kubernetes的人越多,使用Docker的也會越多,反之亦然。
根據 Portworx2017年度容器採購調查 (2017年2月至3月完成),有兩項統計數據顯示:
「對於擁有超過5000名員工的公司,Kubernetes的使用率為48%,主要編排工具佔33%。」
「79%的樣本選擇Docker作為主要容器技術。」
為了進一步加持 Kubernetes 領導者地位,大型雲計算和軟體供應商們紛紛加入,以支持Docker容器的工作負載。
Kubernetes商業化產品
自從開源以來,Kubernetes有很多商業化產品,在過去的幾個月,這個list上取得了重大且令人印象深刻的突破。
以Google(Google ContainerEngine),Red Hat(OpenShift),CoreOS(Tectonic),Canonical和 Apprenda 為長期商業供應商(長期以月計)。微軟和VMware也已經提供了對Kubernetes的支持,最近已經全面all-in 推出。
2017 Kubernetes 得勝之年
2017年下半年,主要雲服務商將Kubernetes添加到其核心產品中。值得注意的公告包括:
亞馬遜網路服務(AWS)於八月份以白金會員 (最高級別) 加入了CNCF。雖然AWS加入CNCF與 Kubernetes 沒有直接關係,但AWS擁有大量客戶在運行容器和Kubernetes。
之後,10月份,Cloud Foundry基金會宣布了由Kubernetes提供支持的Cloud Foundry Container Runtime(CFCR),而Pivotal Cloud Foundry(與VMware合作 )則 於10月份在VMworld 宣布了Pivotal Container Service(PKS)。Pivotal和VMware都作為CNCF的白金會員註冊; 再次,可用的最高水平。
VMware正在與Kubernetes合作的事實是一個明確的信號,Kubernetes和容器希望保持相關性。許多人質疑容器和雲計算是否會取代虛擬機。雖然專家認為他們在企業中存在共存的空間,但可以看看VMware這位虛擬化之王的明顯轉變。
在十月之後,Microsoft 將 Azure容器服務 (ACS)更名 為AKS,K代表Kubernetes。這與他們以前的觀點有很大的轉變,即 ACS的好處之一是它支持多種編排工具 。
即使是Docker Inc.也已經屈服,最近在其Docker企業版框架中添加了本地Kubernetes支持。這對Kubernetes來說是一個重大的勝利,並將推動Docker自己的編排平台Docker Swarm的未來發展。
Docker甚至委託獨立基準測試來對比Swarm和Kubernetes 。兩者肯定都有用例,但Kubernetes得到Google支持的事實是經過了戰鬥性測試的(還記得 PokémonGO嗎 ? ),並且擁有巨大的社區支持,企業把它看作標準的容器編排引擎。
這對企業意味著什麼?
Kubernetes和Docker一直在堅持。隨著公司遷移到雲端,他們會發現他們有一些需求PaaS或IaaS最適合,還有一些其他需求容器(有些人稱之為CaaS)會更適合。
為了享受到上雲帶來的好處,企業正在轉向DevOps和雲原生開發。採用DevOps時,企業開始使用運行在容器中的微服務,將應用程序構建為獨立的組件。這些團隊將會變得更小( 亞馬遜CTO Werner Vogels 創造了「雙比薩團隊」(two-pizza team)一詞),並且能夠獨立於應用的其他組件更新其「服務」的功能。
通過將開發工作分解為專註於解耦服務的小型團隊,企業可以擴展開發工作,並更快地為客戶/用戶提供價值。現在,已然不是每六個月更新一次的代碼庫,而是按需隨時進行更新。
自動化是複雜的抽象,為了使這項工作自動化,提供一個簡單,可重複的方式來安全地交付和部署軟體,團隊會更頻繁地執行。
技術的抽象和多樣使監控成為難題的重要部分。企業擁有數千個獨立移動的部件,其中許多可能顯示為傳統監控解決方案的黑盒子。隨著企業邁向雲原生,越來越多的應用程序正在雲中運行,專門設計並運行良好的監控方法至關重要。
2018年將發生什麼?Kubernetes給業務需求和企業客戶能夠帶來的改變已經明晰,作為構建和運行雲原生應用的平台乘勝追擊,能夠在多大比例的企業實現軟著陸呢?大概套用那句老話是最準確的:前途是光明的,道路是曲折的。
原文鏈接:
1、2018 is the year of Kubernetes – with some help from Docker
https://www.tuicool.com/articles/QBFjAf6
2、2017 Year in Review: Kubernetes Enables a Multi-Cloud World
http://www.eweek.com/cloud/2017-year-in-review-kubernetes-enables-a-multi-cloud-world
推薦閱讀:
※Kubernetes 1.9發布:年度更新這些評論亮了!
※kubernetes1.4.5安裝文檔
※如何使用 Spinnaker 和 Kubernetes 進行資料庫變更發布?
※聊聊調度框架,K8S、Mesos、Swarm 一個都不能少
※數人云架構師:微服務體系中的K8S&Mesos調度與服務發現
TAG:Docker | Kubernetes |