本書作者全部來自惠普公司雲端運算實作第一線,敏銳地捕獲和探索著各種IT前瞻技術,有著全面而扎實的技術架構體系、對創新技術天生的熱情、國際技術領先者的視野,還有著對企業級IT架構的深入把握。
本書闡述Kubernetes 的基本概念、實作指南、核心原理、開發指導、運維指南及原始程式碼分析等內容,全書共分為六大章節,涵蓋入門、實作指南、架構原理、開發指南、進階案例、運行維護指南和原始程式分析等,內容豐富、圖文並茂。對生產環境中可能出現的問題,提供大量的典型案例,如安全配置、網路方案、共用存儲方案、高可用性方案及Trouble Shooting 技巧等,非常具有實作參考價值。
Kubernetes是容器生態圈中的重要一員,發展速度非常快,本書作者擁有豐富的Kubernetes實戰經驗,並即時抓住市場的需求,對Kubernetes進行精闢的分析和解剖,為渴望理解、迅速上手Kubernetes的程式設計人員提供全方位的指南,也為資深架構師拓寬思路提供源泉。
適用:軟體工程師、測試工程師、運行維護工程師、軟體架構師、技術經理,資深IT人士。
本書特色
√ 從入門到精通完整學習
√ 內容詳實、圖文並茂
√ 涵蓋Kubernetes全部特性
√ 大量實例操作、詳細程式碼解析
√ 結合作者實作經驗,深度解析常見關鍵問題
作者簡介:
龔正,HPE高級顧問
豐富的雲端運算、大數據分析和大型企業級應用的架構設計和實作經驗,電信、金融、互聯網等領域的資深專家。
吳治輝,HPE資深架構師
專注於電信軟體和雲端運算方面的軟體研發,擁有豐富大型專案架構設計經驗,業界少有具備很強Coding能力的S級資深架構師。
王偉,HPE資深系統架構師、大數據和雲端運算技術專家
參與過多個大型應用的架構設計、系統開發和執行,精通大數據、雲端運算及大型系統架構和開發的相關技術、互聯網和電信業的熱點技術。
崔秀龍,HPE資深架構師
開放原始程式碼軟體、自動化愛好者,擁有豐富從業經驗,對軟體生命週期的各個環節均有深刻的理解。
閆健勇,HPE高級專案經理、總架構師
具電信行業系統建設資深經驗,主導多項電信大型系統的架構設計和管理,對於雲端運算、大數據在電信業中的應用擁有豐富的經驗。
崔曉甯,HPE高級顧問
在雲端運算、大數據和分散式運算架構下的業務品質控制、推動組織架構優化有豐富的經驗。
劉曉紅,HPE高級諮詢顧問
資深電信從業經驗,親歷中國移動BSS/OSS領域核心系統的建設發展歷程,專注於雲端運算、大數據等前端技術的研究。
作者序
前言
我不知道你是如何獲得這本書的,可能是在百度頭條、網路廣告、朋友圈中聽說本書後購買的,也可能是某一天逛書店時,這本書剛好神奇地出現在你面前的書架上,讓你想起一千多年前那個意外獲得《太公兵法》的傳奇少年,你覺得這是冥冥之中上天的恩賜,於是果斷帶走。不管怎樣,我相信多年以後,這本書仍然值得你回憶。
Kubernetes這個名字起源於古希臘,是舵手的意思,所以它的Logo既像一張漁網,又像一個羅盤。Google採用這個名字的一層深意就是:既然Docker把自己定位為馱著集Boxing在大海上自在遨遊的鯨魚,那麼Google就要以Kubernetes掌舵大航海時代的發言權,「捕捉」和「指引」這條鯨魚按照「主人」設定的路線巡遊,確保Google傾力打造的新一代容器世界的宏偉藍圖順利實現。
雖然Kubernetes自誕生至今才1年多,其第一個正式版本Kubernetes 1.0於2015年7月才發佈,完全是個新生事物,但其影響力極大,已經吸引包含IBM、惠普、微軟、紅帽、Intel、VMware、CoreOS、Docker、Mesosphere、Mirantis等許多業界巨頭紛紛加入。紅帽這個軟體虛擬化領域的領導者之一,在容器技術方面已經完全「跟從」Google了,不僅把自家的第三代OpenShift產品的架構底層換成Docker+Kubernetes,還直接在其新一代容器作業系統Atomic內原生整合Kubernetes。
Kubernetes是第一個將「一切以服務(Service)為中心,一切圍繞服務運轉」作為指導思想的創新型產品,它的功能和架構設計自始至終地遵循這一指導思維,建置在Kubernetes上的系統不僅可獨立執行在實體機、虛擬機器叢集或企業私有雲上,也可以被託管在公有雲中。Kubernetes方案的另一個亮點是自動化,在Kubernetes的解決方案中,一個服務可以自我擴充、自我診斷,並且容易升級,在收到服務擴充的請求後,Kubernetes會觸發排程流程,最後在選定的目標節點上啟動對應數量的服務實例備份,這些備份在啟動成功後會自動加入負載平衡器中並生效,整個過程無須額外的人工作業。另外,Kubernetes會定時巡查每個服務的所有實例的可用性,確保服務實例的數量始終保持為預期的數量,當它發現某個實例不可用時,會自動重新啟動該實例或在其他節點重新排程、執行一個新實例,這樣,一個複雜的過程無須人工操作即可全部自動化完成。試想,如果一個包含幾十個節點且執行著幾萬個容器的複雜系統,其負載平衡、故障檢測和損毀修復等都需要人工介入進行處理,那將是多麼的難以想像。
通常我們會把Kubernetes看作Docker的上層架構,就好像Java與J2EE的關係一樣:J2EE是以Java為基礎的企業級軟體架構,而Kubernetes則以Docker為基礎打造一個雲端運算時代的全新分散式系統架構。但Kubernetes與Docker之間還有更為複雜的關係,從表面上看,似乎Kubernetes離不開Docker,但實際上在Kubernetes的架構裡,Docker只是其目前支援的兩種底層容器技術之一,另一個容器技術則是Rocket,後者來自CoreOS這個Docker昔日的「戀人」所推出的競爭產品。
Kubernetes同時支援這兩種互相競爭的容器技術,這是有深刻的歷史原因的。快速發展的Docker打敗Google曾經名噪一時的開放原始碼容器技術lmctfy,並迅速風靡世界。但是,作為一個已經對全球IT公司產生重要影響的技術,Docker背後的容器標準的制定註定不可能被任何一個公司私有控制,於是就有了後來引發危機的CoreOS與Docker分手事件,其導火線是CoreOS撇開Docker,推出與Docker相對抗的開放原始碼容器專案—Rocket,並動員一些知名IT公司成立委員會來試圖主導容器技術的標準化,該分手事件愈演愈烈,最後導致CoreOS、Google一起宣佈「叛逃」Docker陣營,共同發起以CoreOS+Rocket+Kubernetes為基礎的新專案Tectonic。這讓當時的Docker陣營和Docker粉絲們無比擔心Docker的命運,不管最後鹿死誰手,容器技術分裂局勢的加劇對所有牽涉其中的人來說都沒有好處,於是Linux基金會出面調和雙方各退讓一步,最後結果是Linux基金會於2015年6月宣佈成立開放容器技術專案(Open Container Project),Google、CoreOS及Docker都加入OCP專案。但透過檢視OCP專案的成員名單,你會發現Docker在這個名單中只能算一個小角色了。OCP的成立最後結束了這場讓無數人揪心的「戰爭」,Docker公司被迫放棄自己的獨家控制權。作為回報,Docker的容器格式被OCP採納為新標準的基礎,並且由Docker負責起草OCP草案標準的初稿文件,當然這個「標準起草者」的角色也不是那麼容易擔當的,Docker要傳送自己的容器執行引擎的原始程式作為OCP專案的啟動資源。
事到如今,我們再來回顧當初CoreOS與Google的叛逃事件,從表面上看,Google似乎是被誘拐「出櫃」的,但局裡人都明白,Google才是這一系列事件背後的主謀,不僅為當年失敗的lmctfy報一箭之仇,還重新掌控容器技術的未來。容器標準之戰大捷之後,Google進一步擴大聯盟並加強本身影響力。2015年7月,Google正式宣佈加入OpenStack陣營,其目標是確保 Linux 容器及連結的容器管理技術Kubernetes能夠被OpenStack生態圈所容納,並且成為OpenStack平台上與KVM虛擬機器一樣的一等公民。Google加入OpenStack表示對資料中心控制平面的爭奪已經結束,以容器為代表的應用形態與以虛擬化為代表的系統形態將完美融合於OpenStack之上,並與軟體定義網路和軟體定義儲存一起統治下一代資料中心。
Google憑藉著幾十年大規模容器使用的豐富經驗,步步為營,先是祭出Kubernetes這個神器,然後又掌控了容器技術的制定標準,最後又入駐OpenStack陣營全力將Kubernetes扶上位,Google這個IT界的領導者和創新者再次王者歸來。我們都明白,在IT世界裡只有那些被大公司掌控和推廣的,同時被業界許多巨頭都認可和支援的新技術才能生存和壯大下來。Kubernetes就是當今IT界裡符合要求且為數不多的熱門技術之一,它的影響力可能長達十年,所以,每個IT人都有理由重視這門新技術。
誰能比別人領先一步掌握新技術,誰就在競爭中贏得先機。惠普中國電信解決方案領域的資深專家團一起分工協作、研究,廢寢忘食地合力撰寫,完成這本近850頁的Kubernetes權威指南。經過幾年的高速發展,Kubernetes先後發佈v1.0~v1.6這6個大版本,每個版本都帶來大量的新特性,能夠處理的應用場景也越來越豐富。本書遵循從入門到精通的學習路線,分為六大章節,涵蓋了入門、實作指南、架構原理、開發指南、進階案例、運行維護指南和原始程式分析等,內容詳實、圖文並茂,幾乎囊括Kubernetes到v1.6版本的各方面,無論是對於軟體工程師、測試工程師、運行維護工程師、軟體架構師、技術經理,還是對於資深IT人士,本書都極具參考價值。
吳治輝
惠普公司系統架構師
前言
我不知道你是如何獲得這本書的,可能是在百度頭條、網路廣告、朋友圈中聽說本書後購買的,也可能是某一天逛書店時,這本書剛好神奇地出現在你面前的書架上,讓你想起一千多年前那個意外獲得《太公兵法》的傳奇少年,你覺得這是冥冥之中上天的恩賜,於是果斷帶走。不管怎樣,我相信多年以後,這本書仍然值得你回憶。
Kubernetes這個名字起源於古希臘,是舵手的意思,所以它的Logo既像一張漁網,又像一個羅盤。Google採用這個名字的一層深意就是:既然Docker把自己定位為馱著集Boxing在大海上自在遨遊的鯨魚,那麼Google就要以Kubern...
目錄
前 言
第1章 Kubernetes入門
1.1 Kubernetes是什麼
1.2 為什麼要用Kubernetes
1.3 從一個簡單的實例開始
1.4 Kubernetes基本概念和術語
第2章 Kubernetes實作指南
2.1 Kubernetes安裝與設定
2.2 kubectl命令列工具用法詳解
2.3 深入掌握Pod
2.4 深入掌握Service
第3章 Kubernetes核心原理
3.1 Kubernetes API Server 原理分析
3.2 Controller Manager 原理分析
3.3 Scheduler原理分析
3.4 kubelet執行機制分析
3.5 kube-proxy 執行機制分析
3.6 深入分析叢集安全機制
3.7 網路原理
3.8 共用儲存原理
第4章 Kubernetes開發指南
4.1 REST簡述
4.2 Kubernetes API詳解
4.2.1 Kubernetes API概述
4.3 使用Java程式存取Kubernetes API
第5章 Kubernetes運行維護指南
5.1 Kubernetes叢集管理指南
5.2 Trouble Shooting指導
5.3 Kubernetes開發中的新功能
第6章Kubernetes原始程式導讀
6.1 Kubernetes原始程式結構和編譯步驟
6.2 kube-apiserver處理程序原始程式分析
6.3 kube-controller-manager處理程序原始程式分析
6.4 kube-scheduler處理程序原始程式分析
6.5 kubelet處理程序原始程式分析
6.6 kube-proxy處理程序原始程式分析
6.7 kubectl處理程序原始程式分析
前 言
第1章 Kubernetes入門
1.1 Kubernetes是什麼
1.2 為什麼要用Kubernetes
1.3 從一個簡單的實例開始
1.4 Kubernetes基本概念和術語
第2章 Kubernetes實作指南
2.1 Kubernetes安裝與設定
2.2 kubectl命令列工具用法詳解
2.3 深入掌握Pod
2.4 深入掌握Service
第3章 Kubernetes核心原理
3.1 Kubernetes API Server 原理分析
3.2 Controller Manager 原理分析
3.3 Scheduler原理分析
3.4 kubelet執行機制分析
3.5 kube-proxy 執行機制分析
3.6 深入分析叢集安全機制
3.7 網路原理
3.8 共用儲...