博客 / 詳情

返回

《Kubernetes Operator 開發進階》- 作者絮絮叨

今天聊啥

昨晚在京東上試着搜索關鍵字“Kubernetes Operator 開發進階”,看到我的書終於上架了,百感交集。

(沒有老淚縱橫。你以為是我沒有眼眶濕潤?不,我説的是我沒有老!)

這本書花費了我大約半年的心血。半年,沒有周末,沒有假期。去年的除夕和大年初一都沒有休息,每天三小時,趕稿子。

今天,嚴肅認真地介紹下這本書吧!

嚴肅!嚴肅。嚴肅,算了,嚴肅不起來。還是隨便嘮嘮吧。

咱就嘮這麼幾個角度:

  • 本書讀者
  • 推薦序
  • 推薦語
  • 本書簡介
  • 本書前言
  • 封面由來
  • 目錄概覽
  • 歷史故事
  • 送書活動

沒錯,是要送書的,如果這是你唯一關心的“點”,那就直接翻到結尾吧!

本書讀者

本書適合這麼幾類讀者:

  1. 顯示器太低,又不能伸縮,需要一本書墊一墊的;
  2. 喜歡吃泡麪,但是沒有鍋,需要一本書蓋一蓋的;
  3. ……

總結:本書用來墊顯示器和蓋泡麪那是一絕!

(不配圖了,我不吃泡麪,我的顯示器也可以伸縮,哇咔咔)


《江城》(豆瓣9.1分)的作者彼得·海斯勒在書中寫到這樣一段話:

至於《江城》,我也覺得糟糕透頂。這本書似乎一文不值 ——不過小孩子的寫作水平而已。我完全無所適從,也想不起我在書裏表達了什麼樣的觀點。後來我才知道,很多作家在完成了高強度的寫作之後,都有過類似的崩潰體驗,就好似十月懷胎的媽媽們一朝分娩,接着遭受產後抑鬱的折磨。

此刻我其實也是“內心奔潰”的,我覺得我這本《Kubernetes Operator 開發進階》一文不值。

愛因斯坦在不同的角度有過類似的表述:

用一個大圓圈代表我所學的知識,但是圓圈之外有那麼多空白,對我來説意味着無知,而且圓圈越大,它的圓周就越大,它與外界空白的接觸面也就越大。

所以在寫這本書的過程中,我其實也在經歷着這樣的心路歷程:

“我感覺我懂一些東西了,可以寫一本書。” -> “我才懂一點皮毛,誰給我的勇氣寫這本書?”

所以在這裏我不想去説這本書可以幫助哪些人學到多少知識達到什麼地步之類的話。

哎😌,還是蓋泡麪吧。

推薦序

能夠邀請到鄧洪超任晶磊兩位大咖給本書作序,太幸運了!

看看他們是怎麼説的吧~

推薦序1 - 鄧洪超

鄧洪超:Operator 機制創始作者之一,CNCF 應用交付領域聯席主席

經過作者多年的實踐積累和長期的精心準備,這本書終於和大家見面了。我有幸作為本書的首批讀者,同時也是最早參與研發Operator技術的工程師,內心是十分激動的:我不僅見證了這項技術被應用到越來越多的現實場景中,同時也看到這部分知識通過書籍等形式記錄下來,造福更多的開發者。

説起Operator的歷史,一開始它是為了解決如何在Kubernetes上部署有狀態應用而發明的。Kubernetes早期設計上只能夠部署無狀態應用,而對於有狀態應用像etcd、MySQL、Kafka等並沒有優雅的部署方案。後來我們通過 Operator這一套機制,讓管理有狀態應用變得跟無狀態應用一樣簡單。不僅如此,Operator的核心價值在於能夠擴展 Kubernetes API,這也讓越來越多的工作負載得以運行在Kubernetes上。在阿里落地Kubernetes的過程中,就通過 Operator機制將大規模服務部署成功,並誕生了OpenKruise項目。

本書我認為非常值得大家一讀,主要有以下幾點推薦理由:

首先,本書內容通俗易懂,有助於初學者快速學習相關知識,並且從開發者角度出發,每一個概念加入了相應的代碼實例來輔助理解。

其次,本書提供了大量的實例操作,不僅可以直接提高讀者開發技能,還能夠幫助解決在實踐生產中經常遇到的各種關鍵問題。書中這些內容具有很高的借鑑和推廣意義。

另外,本書講解有些內容時直接深入解析代碼實現,讓讀者徹底理解其中原理。這對於有一定基礎(如 client-go)的專業人士學習Kubernetes的各種細節和實踐操作十分有利。

最後,本書系統性地講述了Operator整個機制的原理和生態,而不是單一地解讀某個工具或者服務。我們可以看到,以Kubernetes為基礎的整套雲原生技術被越來越多的企業所採用。這裏面的每一項技術(如Operator、Helm、Kustomize 等)都不是孤立無關的。相反,串聯好一整套雲原生技術,站在新技術變革的肩膀上,才能發揮出不可預估的價值!

推薦序2 - 任晶磊

任晶磊:思碼逸創始人兼CEO,清華大學計算機系博士

我們有幸經歷了幾代虛擬化技術的演進和整合,見證了雲原生技術的星火燎原。記得還在校園的時候,我跑去中關村的一家小公司實習,天天啃Xen的源代碼。那一年,陳海波教授的團隊發表了國內第一篇SOSP論文,做嵌套的虛擬化技術CloudVisor;同年,UC Berkeley的AMPLab在NSDI上發表了Mesos論文,後來衍生出Mesosphere和其上的容器編排系統Marathon。時隔不久,Google開源了Kubernetes,並在EuroSys上公開了其內部容器管理系統Borg和Omega的設計,它們可謂Kubernetes的前身。

在近十年激烈的市場競爭中,Kubernetes脱穎而出,事實上佔據了比Mesos+Marathon更加優勢的地位。Kubernetes最終獲得了更廣泛的社區和用户,這與它簡潔的設計、強大的可擴展性、優秀的開發者體驗密不可分。而這些Kubernetes的成功要素有一個重要的基石,就是它的Operator模式。Operator擴展了Kubernetes可應用和服務的場景,同時為開發者參與和擴展這些新場景提供了有效途徑。

胡濤將他在GitHub和博客上連載的Kubernetes源碼分析文章擴充升級為此書,系統介紹了Operator開發的知識。從設計到源碼,從實例到項目,此書是國內這方面少有的原理與實踐相結合的佳作。相信它能幫助國內開發者一瞥Kubernetes的精髓,學習和掌握Operator技術,既提升對雲原生和容器系統的理解,又滿足實際系統開發和運維的需要。胡濤的工作既立足Kubernetes在開發者社區中快速擴展的關鍵點,同時也為Kubernetes社區和生態添磚加瓦。

在思碼逸,胡濤正在和我們一起打造DevOps工具鏈管理器DevStream,並已成功捐贈給CNCF,繼續推動雲原生技術的發展。與胡濤共事,我深知他言語幽默,常常思如涌泉,期待讀者能夠享受他在此書中飛揚的文字。

推薦語

沒錯,除了推薦序之外,還有張磊宋淨超王澤鋒周鵬飛鄭東旭五位重磅大咖寫了推薦語,榮幸之至!

推薦語1 - 張磊

張磊:CNCF TOC 成員

Operator機制是雲原生生態的一項關鍵創新,也是擴展、運維和二次編程Kubernetes項目的必備技能。本書對Operator機制進行了深入的源碼級剖析和講解,是一本不可多得的技術讀物。

推薦語2 - 宋淨超

宋淨超:Tetrate 佈道師,雲原生社區創始人

Kubernetes Operator就好比雲原生應用的發動機引擎,這本書將為你揭開引擎蓋,直擊Operator細節,帶你玩轉雲原生應用!

推薦語3 - 王澤鋒

王澤鋒:華為云云原生開源負責人,Kubernetes資深維護者,CNCF大使,KubeEdge、Volcano、Karmada項目創始人

隨着雲原生技術的普及,其關鍵技術Kubernetes已經無處不在。而Operator概念的提出,Kubebuilder、 controller-runtime等項目的興起,開啓了全民定製Kubernetes的時代。本書從Operator模式、Kubernetes API機制、client-go工作原理等維度系統介紹瞭如何高質量地開發一個Operator應用,值得每個雲原生的開發者閲讀和學習。

推薦語4 - 周鵬飛

周鵬飛:微軟 Azure 產品經理,CNCF大使

Kubernetes是雲原生時代的分佈式操作系統,Kubernetes Operator能夠幫助雲原生開發者在此操作系統之上靈活開發和擴展新的API與應用。本書來自於胡濤多年的雲原生開源項目參與經驗和工業界實踐經驗的總結,為讀者深入淺出地介紹了Operator相關的概念理論、源碼解析和工具實操等。本書結合了大量的流程圖與示例代碼,幫助開發者快速理解和上手 Kubernetes Operator開發,是目前市面上較為稀缺的Kubernetes開發工具類實戰寶典。

推薦語5 - 鄭東旭

鄭東旭:百度CNCF BFE開源項目作者之一,《Kubernetes源碼剖析》作者

2014年Kubernetes開源,2015年CNCF成立,雲原生浪潮就此襲來。雲原生技術持續發展多年,在應用逐步上雲的今天,Operator一直是Kubernetes生態系統的重要組成部分,它旨在簡化複雜有狀態應用的管理,降低其雲上的部署和維護成本。我相信這本《Kubernetes Operator 開發進階》值得每一位與雲計算技術相關領域的工程師閲讀。

本書簡介

下面這段文字是我寫在《Kubernetes Operator 開發進階》這本書扉頁裏的一段“簡介”(是不是有點“書”的味道了?沒有博客那麼自由~):

Kubernetes 是一個由Google開源的容器化應用編排系統,為容器化應用提供了強大的資源管理調度、服務發現、應用擴縮容、應用滾動更新與失敗回滾等一系列功能。Kubernetes早在幾年前就已經一統容器編排領域,成為了容器編排的事實標準,徹底顛覆了軟件的開發、運維模式。隨着以Kubernetes為中心所構建的雲原生應用的不斷流行,人們逐漸發現通過Kubernetes原生資源與控制器來管理複雜有狀態應用變得越來越困難。後來Kubernetes開始支持自定義資源,接着又出現了Operator模式,最後Operator模式開始逐漸流行,成為了複雜有狀態應用上雲的事實標準。

本書詳細講解了Operator開發過程中所涉及的各個知識點,從簡單的Operator示例應用入手,幫助讀者快速上手Operator的開發流程,接着深入分析了client-go、Deployment控制器等的源碼,並且通過一個進階應用的開發過程進一步詳細介紹了Operator開發的各方面知識,相信本書能夠幫助讀者輕鬆掌握Operator的開發技巧,深入理解Operator的底層原理等知識,進而在日常工作中能夠更好地通過Operator實現各種複雜的應用治理邏輯的開發。

無論是雲原生領域的開發工程師、測試工程師、運維工程師、軟件架構師和技術經理,還是想要深入研究Kubenetes,掌握Kubernetes Operator開發技能的大、中院校相關專業學生,本書都會極具參考價值。

全書一共分為10個章, 3個部分。

第一部分:入門篇(第1-2章)

從Kubernetes的部署方式、發展歷史、核心概念和基本操作等入手,首先幫助對Kubernetes不是非常熟悉的讀者對Kubernetes是什麼、怎麼用等基礎知識有一個整體的理解。然後通過一個入門級的Operator應用一步一步詳細講解了Operator開發的整個過程,幫助沒有Operator開發經驗的讀者快速上手Operator開發,進而心中對Operator是什麼、能幹什麼等有一個宏觀的認識。

第二部分:進階篇(第3-8章)

進階篇是本書的核心部分。本篇從Kubernetes API的理解、使用等入手,接着詳細了介紹Operator開發所依賴的底層核心工具庫client-go的使用,進而花了較大篇幅詳細分析了client-go中和Operator開發相關的模塊源碼,比如Workqueue、DeltaFIFO、Indexer、ListerWatcher、Reflector和Informer等等。然後又通過一個進階項目詳細介紹了Operator開發中所涉及到的各種進階知識,最後詳細分析了一個經典的控制器模式的應用,也就是Kubernetes原生的Deployment控制器的源碼。

第三部分:工具篇(第9-10章)

本篇內容先詳細介紹了雲原生應用最常使用的多環境配置管理工具Kustomize和應用打包、管理工具Helm的核心概念、部署安裝等基礎知識,接着通過詳細的操作示例演示瞭如何使用這兩個工具。

本書前言

同樣,書中的前言也分享給大夥看下:

我不知道你是怎麼發現這本書的,不過我相信有很大的概率是你關注了我的個人公眾號“胡説雲原生”,然後認可我分享的技術文章,接着某一天從中得知我寫了這本《Kubernetes Operator 開發進階》,最後你決定支持一下這個默默寫了好幾年技術文章的“博主”,於是在網上下單買了這本書。假如你是我的粉絲,在這裏我想對你一直以來的認可與支持表示最真誠的感謝!

在2013年劃時代的項目Docker正式發佈,讓容器化技術進入大眾視野。接着在2014年Kubernetes開源,2015年CNCF成立,雲原生浪潮就此襲來,容器編排和管理系統開始蓬勃發展,進而開始了Kubernetes、Mesos、Swarm+Compose三分天下的局面。

我是在2016年下半年開始工作的(巧的是第一個Operator項目也是在2016年下半年誕生的),也就是CNCF成立後一年。畢業那年我去了H3C的雲計算部門,有幸早早接觸到了Kubernetes,然後在雲原生的世界裏摸爬滾打,走了無數彎路,從小白逐漸成長為一隻“老鳥”,開始承擔Kubernetes集羣的維護、異常定位、優化等工作。後來憑藉着在雲原生領域的技術積累,在第二份工作的時候開始有機會參與整個雲平台從0到1的建設。眨眼間從畢業到現在我已經工作了六年,這六年時間裏我的每一份工作都圍繞着“雲原生”生態技術棧,仔細想來,我在企業裏落地以Kubernetes為核心的雲原生生態技術棧,其實也是以Kubernetes為核心的雲原生生態技術棧給了我“飯碗”。在我可預見的很長的職業生涯中我都會圍繞着雲原生、DevOps等技術,想來也是和Kubernetes結緣頗深!

Kubernetes一詞來自於希臘語,意思是“舵手”。我們知道container這個單詞的意思其實是集裝箱,而Docker的logo是“馱”着集裝箱的一隻鯨魚,寓意着其“容器管理器”的定位。而Kubernetes以“舵”作為logo,可見其野心是要做容器管理的“領路人”。事實上,Kubernetes也確實已經確認了“領路人”的領導者地位,成為了雲原生時代的一個“雲操作系統”,成為了容器編排領域的事實標準。

伴隨着微服務理念的發展與流行,雲上應用逐漸變得複雜起來,在雲上部署一個應用所需要的配置越來越繁多複雜,這給雲原生應用的運維帶來了不小的挑戰。後來Helm和Kustomize的出現分別解決了雲原生應用的部署管理複雜性問題和多環境差異化配置管理問題等,一定程度上簡化了應用上雲的過程。但是複雜的分佈式、有狀態應用除了部署複雜之外,還有大量複雜的維護工作需要SRE工程師去操心,比如數據備份、故障恢復、有條件地擴縮容等等,這些技能往往是特定領域運維工程師擅長的,而不是一類應用所共有的屬性。伴隨着雲上應用的複雜化,Operator應用而生,接着SRE工程師便可以通過編寫Operator類型的運維軟件來運維自己的應用,也就是將自己的領域運維經驗代碼化,以代碼的形式管理應用,通過代碼代替手動的雲上運維操作,自動化地實現特定應用的運維管理。

毫無疑問,Kubernetes 的理念很酷,而Kubernetes裏最酷的就是通過Operator模式實現的高度可拓展性。但是目前市面上很少有書籍介紹如何開發Operator,介紹Operator的底層原理等。尤其是專門講解Operator的書籍,更是少之又少。我自己在學習Operator的過程中也是一度感覺入門很困難,走了很多的彎路。很多Operator的原理在網上幾乎找不到,要想深入學習,只能自己深入源碼去摸索,而Kubernetes的源碼閲讀起來其實門檻不低。那時候我在網上以開源的方式連載《k8s-1.13版本源碼分析》,這本電子書目前在我的GitHub(https://github.com/daniel-hutao)裏已經有接近1000的star了。後來我又在自己的個人博客網站(https://www.danielhu.cn)連載《Kubernetes client-go 源碼分析》,針對Operator開發所涉及到的client-go底層模塊詳細分析源碼。所以有一天華章圖書的卞誠君編輯找到我,問我是不是有意向出版相關圖書時,我便欣然答應了。

在和卞編輯約稿後的大半年時間裏,我幾乎沒有週末和假期,在本就很忙碌的本職工作之外花了大量精力來編寫本書。但是畢竟我個人的能力和精力有限,而Kubernetes又是一個龐大的“工程”,所以我再認真也難免會出一些紕漏和錯誤。如果讀者朋友發現了書中的任何錯誤,歡迎不吝雅正,將其通過評論的方式留到本書對應的博客https://www.danielhu.cn/advan...的評論區。大家有任何其他意見、建議也都可以通過我的博客網站或者GitHub等平台找到我的郵箱等聯繫方式,然後反饋給我,讓我們能夠互相學習,一起玩轉Operator、玩轉雲原生!

最後,感謝鄧洪超和任晶磊兩位前輩在百忙之中抽空為本書作序;感謝張磊、宋淨超、王澤鋒、周鵬飛和鄭東旭等專家為本書編寫推薦語;感謝樸文峯設計師精妙絕倫的封面創意!也感謝家人在這大半年時間裏的鼓勵與支持!

封面由來

先欣賞下封面(這個是拼版圖):

封面

怎麼樣?看着還行吧?還是有點味道吧?

再來個照片:

封面

還有還有:

封面

這是我司的樸文峯大設計師幫忙設計的原型,再經由出版社的美編潤色微調,最終有了這個效果!(我很滿意,很感激,還有些許的得意,哈哈哈哈哈……)

目錄概覽

目錄也得貼一個(有點長,不粘文字了,來個照片吧):

toc

toc

toc

歷史故事

不知道你有沒有看到過“胡説雲原生”的博客(或者公眾號)。

我也記不得是從哪年開始寫博客的了,可能是2017年前後,那時候我主要發博客園。當然,初期一直不温不火,也沒想過要火,單篇博文閲讀量穩定在幾百上下。我也單純是當做自己的一個“小筆記”,用輸出倒逼輸入。

2018年時我開始發一些源碼分析類的文章,閲讀量差不多翻了十倍,單篇在幾千上下,算是小小地被認可了。也是在那時候,機械工業出版社-華章圖書的編輯開始聯繫我,問我能不能寫一本和Kubernetes源碼分析相關的書,但是當時時機還沒到,我感覺自己還不夠資格寫一本書,就沒有答應。

在2021年的8月中旬,華章圖書再次找到我,這次我覺得可以寫寫了,就欣然答應了下來。接着就開始了討論選題、章節規劃、合同等等事務。

後面年底又被換工作之類的事情打斷,陸陸續續到了2022年中旬我才差不多完成了初稿,全部交到了出版社。

三審三校工作本來應該是兩三個月就能完成,所以預計本書會在2022年的9月上架,但是剛好趕上了國家政策調整,收嚴出版物審核工作,於是我的書又被加了一輪審校(同期其他書也是),於是很自然,延期了一兩個月。雖然多了一輪審校,但是11月或者12月初應該是要上架銷售的,不過搞笑的是防疫政策調整,接着就進入了“普陽”階段,出版社的工作人員同樣也陽的差不多了。作為出版社,陽了肯定還是得“充分休息”,於是我這本印刷好的書就在倉庫裏默默躺過了陽曆年,在2023年1月初才終於順利上架,開始銷售……

送書活動

沒錯,得送書!

但是不能送多,因為我是作者,不是出版社領導,我手裏也沒有庫存!(我送出去的書同樣是從京東或者噹噹買的,六七十塊一本,,,心疼啊😭……)

但還是得送一些,有太多“忠實粉絲”長達半年甚至一年的時間在關注着我這本“破書”,時不時問我還有多久出版,不送他們幾本我感覺良心不安!

另外幫忙寫推薦序和推薦語的7位大咖,總得每人送一本吧!

送都開始送了,不抽個獎?還是抽抽吧!

具體規則我還沒想好,總之,關注微信公眾號“胡説雲原生”,我會在下週發一篇文章,詳細介紹“抽獎、送書規則”,敬請期待!

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.