Kubernetes 在過去幾年中一直是雲端計算領域最著名的開源專案之一。
2018 年,Kubernetes 度過了自己的 4 歲生日。從 2014 年開源,到如今成功從 CNCF 孵化,它已成為容器編排的事實標準。雖然 Kubernetes 還很年輕,但它正如初升的朝陽,在過去幾年中一往直前,為組織設計和部署應用程式帶來全新定義。本文將回顧 2018 年 Kubernetes 的發展情況,同時展望它在 2019 年的前行之路。
當容器於 2008 年首次推出時,虛擬機器(VM)還是雲提供商和內部資料中心尋求最佳化資料中心資產的最佳選擇。
在那時,VM 確實提供了良好的靈活性,但它也存在一些缺陷,如每個 VM 都需要在整個層(管理程式)中模擬完全可操作的系統,並大幅佔用物理 CPU 資源。即使採用 Intel VT-x 和 AMD-V 等技術,使用 VM 的效能也遠不如裸機執行。
在這個背景下,容器技術透過在所有映象中共享相同的核心來解決這些缺陷。換句話說,來自不同映象的流程可以在同一空間中執行,而核心負責保證它們之間的正確隔離,我們也可以設定限制映象資源利用,對計算資源進行合理調配。佔用記憶體更少,又不存在硬體模擬層,因此容器一經提出就迅速走紅。
但隨著容器廣泛進入生產領域,人們很快也意識到一個事實,就是儘管在同一臺計算機上部署容器很容易,但它在高可用性管理、災難恢復和可伸縮性方面仍存在不少問題,優秀的編排層才是在生產中大規模部署容器的必要前提。
這些問題催生了一種名為容器編排系統的新型軟體,這種軟體也在過去五年中得到了普及。它們負責進行叢集操作,協調排程、記憶體分配、安全性和網路,目的是確保所有映象按規定工作。
經過激烈競爭,最後,於 2014 年開源的 Kubernetes 力克 Docker Swarm 和 Apache Mesos,成了容器編排領域當之無愧的勝者。它背靠 Google 多年實踐,實現了對即時部署、彈性伸縮、健康檢查與高可用性(HA)系統的全部改寫,能為生產完整生命週期保駕護航。
在剛開源的前兩年,Kubernetes 只有五個主要版本。從 2017 年起,它相繼推出 1.6、1.7、1.8、1.9,圍繞穩定性、效能和平臺的 cloud availability 做了改進。而在 2018 年,Kubernetes 更進一步,又進行了 4 次重大更新,在企業最關註的安全性和可擴充套件性上做了顯著改善:
-
2018 年 3 月 27 日,Kubernetes v1.10 釋出。此版本持續增強了 Kubernetes 的成熟性、可擴充套件性以及可插拔性,併在儲存、安全、網路增強了其穩定性;
-
2018 年 6 月 28 日,Kubernetes v1.11 釋出。此版本增強了網路功能、可擴充套件性與靈活性。Kubernetes 1.11 功能的更新為任何基礎架構、雲或內部部署都能嵌入到 Kubernetes 系統中增添了更多可能性;
-
2018 年 9 月 28 日,Kubernetes v1.12 釋出。此版本新增了兩個備受期待的功能,Kubelet TLS Bootstrap 和對 Azure 虛擬機器規模集支援(並已達到 GA 階段)。同時該版本在安全性和 Azure 等關鍵功能上作出了改進;
-
2018 年 12 月 4 日,Kubernetes v1.13 釋出。此版本是迄今為止釋出時間最短的版本之一。這一週期的三個主要特性已逐漸過渡到 GA。此版本中的顯著特徵包括:使用 kubeadm 簡化叢集管理、Container Storage Interface(CSI)、以 CoreDNS 作為預設 DNS。
功能方面,Kubernetes 在 1.10 版本中對接了 kubectl 憑證,從此雲服務供應商、企業可以釋出二進位制外掛以處理特定雲供應商 IAM 服務的身價驗證,可擴充套件性更強。
在 1.13 版本中,CoreDNS 被宣告為透過所有規模/資源使用測試的預設叢集 DNS。CoreDNS 解決了 kube-dns 存在的安全性和擴充套件性問題,把 Service 放在一個容器中完成,並用不同外掛來複制(並增強)kube-dns 功能,為 Kubernetes 在網路安全方面的長期發展鋪好了路。
CNCF 是一個隨容器編排和微服務發展起來的新一代基金會,它的設立初衷是在開源社群基礎上對現代分散式系統環境進行不斷最佳化。而在 Google 把 Kubernetes 捐獻給它後,CNCF 就把管理、支援 Kubernetes 推廣發展作為自己的使命。
2018 年,作為 Kubernetes 最強大的支持者,CNCF 為繁榮社群做了許多事,其中又以 3 個孵化專案的成功畢業最為典型:
-
2018 年 3 月 7 日,CNCF 宣佈 Kubernetes 正式畢業;
-
2018 年 8 月 9 日, Prometheus 成為繼 Kubernetes 之後的第二個畢業專案;
-
2018 年 11 月 28 日,CNCF 宣佈 Envoy 成功畢業。
而在不久前剛舉辦的雲容器領域最大的峰會之一 KubeCon + CloudNativeCon North America 2018 上,基金會宣佈接受 etcd 分散式鍵值儲存作為孵化專案,發揮它在 Kubernetes 叢集管理軟體設計中的重要作用;2019 年 1 月 24 日,CNCF 宣佈 CoreDNS 畢業,為新一年 Kubernetes 的蓬勃發展打響第一炮。
在 GitHub 上,由於 Kubernetes 在穩定性和成熟性上已經上升到一個新高度,這一年提交數量有所降低,但 Kubernetes 的程式碼行數還在保持持續增長,且已突破 200 萬大關。
儘管谷歌這些年來是 Kubernetes 的主要貢獻者,但現在其他技術人員在這個專案上的貢獻量已經幾乎和谷歌持平了。此外,包括 IBM、Microsoft 等主要雲提供商在內的 600 餘個組織也為社群發展提供了的重要支援。在國內,華為、才雲等組織和機構的貢獻也名列前茅。
在 Kubernetes 程式碼庫中匯出的 API 端點數量已經穩定在 16,000,這也從側面印證了 Kubernetes 的成熟度和複雜性水平。
Kubernetes 所處的時間點是傳統和現代軟體開發日益高流量的交叉點。根據 CNCF 統計資料,2018 年,雲原生技術增長了 200%,全球有近三分之一的企業正在運營多達 50 個容器,運營 50 至 249 個容器地企業佔比也超過 25%,有超過 80% 的受訪者把 Kubernetes 作為容器管理的首選。
這些資料都在說明這樣一個事實:誰掌握了 Kubernetes,誰就能進一步擴大在雲端計算市場的競爭力,在風雲詭譎的市場上搶佔先機。結合這個背景,2018 年同樣也是谷歌、亞馬遜、微軟等大型雲提供商圍繞 Kubernetes 奮勇爭先的一年:
-
1 月,紅帽收購 CoreOS,擴大其 Kubernetes 和容器的領導地位;
-
2 月,Pivotal 與 VMware 聯合開發的企業級容器平臺 Pivotal Container Service 1.0(簡稱 PKS),使運營商能夠大規模運營 Kubernetes;
-
5 月,微軟宣佈擴大與紅帽的合作關係,在 Azure 上提供全託管的 OpenShift,使開發人員能夠在 Azure 和本地執行基於容器的應用程式;
-
6 月,微軟宣佈 Azure Kubernetes 服務(AKS)可用。 透過 AKS,使用者可以部署和管理他們用於生產的 Kubernetes 應用程式;
-
6 月,亞馬遜 EKS 可用。 Amazon EKS 簡化了構建、保護、操作和維護 Kubernetes 叢集的過程,對企業充分利用基於容器的雲端計算優勢進行簡化;
-
8 月,Google 將 Kubernetes 的雲資源控制權移交給 CNCF 社群,並且承諾會在三年內提供價值約 900 萬美元的支援;
-
10 月,IBM 斥資 340 億美元收購 Red Hat,這是開源領域金額最大的一筆收購,也標志著 IBM 將更強勢介入雲端計算市場,介入 Kubernetes 競爭;
-
11 月,VMware 用 5.5 億美元收購 Heptio,借 Kubernetes 加強其在雲原生態系統中的角色。
這些舉動都在表明雲端計算市場的戰火將繼續蔓延,Kubernetes 已經成為兵家必爭之地。而根據招聘網站 Dice 的報告,2018 年,Kubernetes 也是最受網際網路公司青睞的 IT 技能之一,發展前景不可估量。
這兩年,AI 發展得如火如荼,越來越多的企業正在尋求把它用於降低成本和業務創新,同時結合大資料實現企業整體的數字化升級。但再強的演演算法也需強大的架構和工程作為支撐。
從開發到測試再到生產,容器為流程執行提供了緊湊的環境,它們易於擴充套件,能將大型完整應用程式分解為有針對性、易於維護的微服務,完美契合 AI 應用開發的各個階段。因此,Kubernetes 和 AI 的結合也被業界視為大勢所趨。
但是,AI 在產品化過程中仍會遇到部署複雜、指令繁冗等種種問題。為瞭解決這些問題,智慧且易於操作的 Kubeflow 應運而生。它可以使機器學習的工作負載分佈在多個節點上,極大提高開發人員的工作效率,讓 Kubernetes 上的機器學習、深度學習堆疊變得簡單、快速、可擴充套件。
2018 年 11 月 8 日,Google Cloud 宣佈推出 Kubeflow Pipelines。它部分基於並利用來自 TensorFlow Extended 的庫,允許開發人員利用該工作並將其投入生產,促進了企業內部協作,併進一步實現了訪問民主化。
近日,英特爾推出 Kubernetes-Native 深度學習平臺 Nauta,這是一個企業級堆疊,適用於需要執行 DL 的工作負載,訓練那些將在生產中部署的模型。使用者可以在單個或多個工作節點上使用 Kubernetes 定義,安排容器化深度學習實驗,並檢查這些實驗的狀態和結果。
Kubeflow 在簡易化 Kubernetes 上配置和生產化機器學習工作負載上取得了重大進步,我們認為這會極大程度上讓更多企業接受該平臺。
—— Reza Shafii,CoreOS 產品副總裁
新的一年,Kubernetes 和 AI 在融合之路上還有很長的一段路需要走,而除了簡化整個流程,它們仍將面臨在頻寬上做出更多突破。
然而,隨著 Kubernetes 被更廣泛採用,它也為容器帶來了挑戰,這涉及從安全性到複雜性再到可擴充套件性的各個方面。
可擴充套件性包括兩部分:基礎架構的可擴充套件性和 API 的可擴充套件性。
談到它,首先我們要理解一個概念:微服務。微服務是一項在雲中部署應用和服務的技術,它允許公司將其應用程式分解為更小的專用程式碼包,根據需要進行獨立調整和更新。雖然可用性很強,但與之俱來的是網路複雜性,企業難以管理用於構建應用程式的微服務之間的流量,也難以提高這些應用程式執行方式的安全性和可視性。
為瞭解決這個問題,現在許多供應商開始紛紛採用谷歌、IBM 和 Lyft 開發的開源專案 Istio,以幫助改進雲原生網路。
近日,Nirmata (一家增強企業 DevOps 能力的容器初創公司)的一項研究顯示,雖然 Kubernetes 未來可期,但它的複雜性已經成為專案繼續發展的一個不可忽視的障礙。根據他們的調查報告,有超過 50% 的開發人員表示曾因 Kubernetes 的複雜操作有過不同程度的困擾。
對簡單小型業務來說,Kubernetes 的體量太大了,不如直接用 shell 指令碼來得高效直接。因此如果 Kubernetes 想要取得真正的成功,它還要在輕量級和化繁為簡上做出更多努力。
同樣的,安全性問題也不容小覷。去年,Kubernetes 出現的嚴重安全漏洞,攻擊者可以利用該漏洞透過 Kubernetes API 伺服器連線到後端伺服器,利用 API 伺服器的 TLS 憑證進行身份驗證併傳送任意請求,從企業防火牆內破壞應用和服務。
而同樣是 2018 年,包括特斯拉、Weight Watchers 在內的多家公司也曾遭受 Kubernetes 環境的攻擊,原因是他們把 Kubernetes 儀錶板開啟並暴露在網際網路上。這些事故無疑會打擊企業對 Kubernetes 的信心。
Kubernetes 的安全性問題是多維度的。一方面,對於一個執行在 Kubernetes 上的普通應用,真正業務程式碼只佔 0.1%,不同的元件都可能存在不同的安全隱患;另一方面,企業的廣泛使用和網路安全意識缺失也加劇了問題的嚴重性。
可喜的是,隨著問題的暴露,社群中圍繞 Kubernetes 安全的技術專案(如 Notary、TUF 以及谷歌 gVisor)在日益增多,開發者們也正積極地針對漏洞進行補丁和建議。
隨著越來越多的公司將 Kubernetes 視為轉向現代化 IT 企業的路標,再結合 2018 年的發展情況,新的一年,我們可以對 Kubernetes 有以下展望:
-
2019 年,Kubernetes 將完成其作為首選、協調的主導地位;
-
Kubernetes 與大資料的結合將是一種趨勢;
-
Kubernetes 快速變化的腳步不會停滯;
-
Kubernetes 安全性或將成為焦點;
-
IT 領導者將對他們的 Kubernetes 平臺更加挑剔。
至於螢幕前的你 —— Kubernetes 最親密的開發者,2019 年,你希望它將在哪些方面實現巨大突破呢?Kubernetes 有你,社群有你,讓我們一起期待 Kubernetes 的成長!
Kubernetes實戰培訓將於2019年3月8日在深圳開課,3天時間帶你係統掌握Kubernetes,學習效果不好可以繼續學習。本次培訓包括:雲原生介紹、微服務;Docker基礎、Docker工作原理、映象、網路、儲存、資料捲、安全;Kubernetes架構、核心元件、常用物件、網路、儲存、認證、服務發現、排程和服務質量保證、日誌、監控、告警、Helm、實踐案例等。
長按二維碼向我轉賬
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。