前言
本書第一版出版於2016 年,幾年過去,Kubernetes 已從一個新生事物發展為一個影響全球IT 技術的基礎設施平台,也推動了雲原生應用、微服務架構、Service Mesh 等熱門技術的普及和落地。現在,Kubernetes 已經成為明星專案,其開放原始碼專案擁有超過兩萬名貢獻者,成為開放原始碼歷史上發展速度超快的專案之一。
在這幾年裡:
Kubernetes 背後的重要開放原始碼公司RedHat 被IBM 大手筆收購,使RedHat 以Kubernetes 架構為基礎的先進PaaS平台--OpenShift 成為IBM 在雲端運算基礎設施中的重要籌碼。
Kubernetes 的兩位核心創始人Joe Beda 和Craig McLuckie 所創立的提供Kubernetes 諮詢和技術支援的初創公司Heptio,也被虛擬化領域的巨頭VMware 收購。
Oracle收購丹麥一家初創公司Wercker,然後開發Click2Kube,這是針對Oracle 裸機雲(Oracle Bare Metal Cloud)的一鍵式Kubernetes 叢集安裝工具。
世界500 大中的一些大型企業也決定以Kubernetes 為基礎重構內部IT 平台架構,大數據系統的一些使用者也在努力將其生產系統從龐大的大數據專有技術堆疊中剝離出來接近Kubernetes。
Kubernetes 是將「一切以服務(Service)為中心,一切圍繞服務運轉」作為核心宗旨的創新型產品,這是它的亮點。它的功能和架構設計自始至終地遵循了這一核心宗旨,建置在Kubernetes 上的系統不僅可以獨立執行在實體機、虛擬機器叢集或企業私有雲上,也可以被託管在公有雲上。
Kubernetes 的另一個亮點是自動化。在Kubernetes 的解決方案中,一個服務可以自我擴充、自我診斷,並且容易升級,在收到服務擴充的請求後,Kubernetes 會觸發排程流程,最後在選定的目標節點上啟動對應數量的服務實例備份,這些服務實例備份在啟動成功後會自動加入負載平衡器中並生效,整個過程無須額外的人工作業。另外,Kubernetes 會定時巡查每個服務的所有實例的可用性,確保服務實例的數量始終保持為預期的數量,當它發現某個實例不可用時,會自動重新啟動該實例或在其他節點上重新排程、執行一個新實例,這樣,一個複雜的過程無須人工操作即可全部自動完成。試想一下,如果一個包含幾十個節點且執行幾萬個容器的複雜系統,其負載平衡、故障檢測和損毀修復等都需要人工介入進行處理,其工作量將多大。
一般來說我們會把Kubernetes 看作Docker 的上層架構, 就好像Java 與J2EE 的關係一樣:J2EE 是以Java 為基礎的企業級軟體架構,Kubernetes則以Docker 為基礎打造了一個雲端運算時代的全新分散式系統架構。但Kubernetes 與Docker 之間還會具有更為複雜的關係, 從表面上看, 似乎Kubernetes 離不開Docker,但實際上在Kubernetes 的架構裡,Docker 只是其目前支援的兩種底層容器技術之一,另一種容器技術則是Rocket,Rocket 為CoreOS 推出的競爭產品。
Kubernetes 之所以同時支援Docker 和Rocket 這兩種互相競爭的容器技術,是有深刻的歷史原因的。快速發展的Docker 打敗了Google 名噪一時的開放原始碼容器技術lmctfy,並迅速風靡世界。但是,作為一個已經對全球IT 公司產生重要影響的技術,Docker 容器標準的制定不可能被任何一個公司主導。於是,CoreOS 推出了與Docker 抗衡的開放原始碼容器專案Rocket,動員一些知名IT 公司一起主導容器技術的標準化,並與Google 共同發起基於CoreOS+ Rocket+Kubernetes的新專案Tectonic,使容器技術分裂局勢加劇。最後,Linux 基金會於2015 年6 月宣佈成立開放容器技術專案(Open Container Project),Google、CoreOS 及Docker 都加入了該專案。OCP 專案成立後,Docker 公司放棄了自己的獨家控制權,Docker 容器格式也被OCP採納為新標準的基礎,Docker 負責起草OCP 草案標準的初稿文件,並傳送自己的容器執行引擎的原始程式作為OCP 專案的啟動資源。
2015年7月,Google 正式宣佈加入OpenStack 陣營,目標是確保Linux容器及其連結的容器管理技術Kubernetes能夠被OpenStack 生態圈所接納,這也表示對資料中心控制層面的爭奪已經結束,以容器為代表的應用形態與以虛擬化為代表的系統形態將完美融合於OpenStack 之上,並與軟體定義網路和軟體定義儲存一起主導下一代資料中心。
Google 憑藉著幾十年大規模容器使用的豐富經驗,步步為營,先是祭出Kubernetes 這個神器,然後掌控了容器技術的制定標準,最後入駐OpenStack陣營全力支援Kubernetes 的發展。可以預測,Kubernetes 的影響力可能超過十年,所以,我們每個IT 人都有理由重視這門新技術。
誰能比別人領先一步掌握新技術,誰就能在競爭中贏得先機。慧與中國通信和媒體解決方案領域的資深專家團一起分工協作、平行研究,並廢寢忘食地合力撰寫,才促成了這部巨著的出版。經過這些年的高速發展,Kubernetes先後發佈了十幾個大版本,每個版本都帶來了大量的新功能,能夠處理的應用場景也越來越豐富。本書遵循從入門到精通的學習路線,涵蓋了入門、安裝指南、實作指南、核心原理、開發指南、運行維護指南、新特性演進等,內容翔實、圖文並茂,幾乎囊括Kubernetes 目前主流版本的各方面,無論是軟體工程師、測試工程師、運行維護工程師、軟體架構師、技術經理,還是對於資深IT 人士,本書都極具參考價值。
吳治輝