Kubernetes進階實戰(zhàn)》一Kubernetes系統(tǒng)基礎(chǔ)">《 Kubernetes進階實戰(zhàn)》一Kubernetes系統(tǒng)基礎(chǔ)
643
2025-04-01
云計算與虛擬化技術(shù)叢書
Kubernetes進階實戰(zhàn)
馬永亮 著
Preface 前言
為什么要寫這本書
作為置身于IT技術(shù)領(lǐng)域多年的實踐者和教育者,我們一直盼望著行業(yè)迎來這樣一個時刻:異構(gòu)的IT基礎(chǔ)設(shè)施環(huán)境所造成的開發(fā)和部署系統(tǒng)應(yīng)用紛繁復(fù)雜的局面終于迎來了終結(jié)者,開發(fā)人員無須再考慮復(fù)雜多樣的運行環(huán)境下軟件程序的移植問題,運維人員不用再手動解決運行環(huán)境中組件間的依賴關(guān)系等,從而讓各自的核心職責都回歸到開發(fā)和保證系統(tǒng)穩(wěn)定運行本身。終于,以Docker為首的容器技術(shù)為此帶來了基礎(chǔ)保障,并在容器編排技術(shù)的支撐下塵埃落定,甚至連IT管理者心心念念多年的DevOps文化運動也借此找到了易于落地的實現(xiàn)方案。于是,系統(tǒng)運行割據(jù)多年的局面終于將走向天下一統(tǒng)。
盡管距Kubernetes 1.0的發(fā)布不過三四年的光景,但其如今的影響力在IT技術(shù)領(lǐng)域完全算得上空前絕后,目前,一眾大小公司都在使用或正籌劃使用這一IT技術(shù)發(fā)展史上可能最為成功的開源項目。Linux軟件基金會的常務(wù)董事Jim Zemlin在Google Cloud Next 17大會上曾表示,Kubernetes是“云時代的Linux”。的確,Kubernetes應(yīng)該是開源世界有史以來迭代最快的項目,而且在幾乎所有需要采用容器技術(shù)的場景里成為占統(tǒng)治地位的解決方案,其發(fā)展速度恐怕也僅有Linux內(nèi)核項目可堪匹敵。2018年3月,Kubernetes成為CNCF旗下“畢業(yè)”的第一個項目,并榮獲2018年 OSCON最具影響力獎項。
目前,Kubernetes保持著每年發(fā)布四個重要版本的節(jié)奏,版本的每次更新都會引入數(shù)個新特性。這種快速迭代的機制在為用戶不斷帶來驚喜的同時,也給他們在學習和使用上造成了一些困擾:相關(guān)領(lǐng)域的可參考書籍仍不豐富,互聯(lián)網(wǎng)上可以得到的眾多文檔并非源于同一個版本,以及厘清脈絡(luò)拼湊成完整的知識框架所需的時間成本較大。因此,我在課程以及直接或間接參與生產(chǎn)或測試環(huán)境的交付之余便萌生了撰寫一本Kubernetes入門、進階與實戰(zhàn)的書籍的想法,將自己學習和使用的經(jīng)驗總結(jié)、沉淀并分享給更多有此需求的技術(shù)同行,幫助大家快速找到入門路徑,降低時間成本,并迅速投入測試和生產(chǎn)之用。
的確,在寫作過程中,Kubernetes這種快速迭代的機制,以及每每引入的新特性,在小驚喜之余帶給筆者更多的卻是真真切切的夢魘般的恐懼感:在一年多的寫作時間里,許多章節(jié)幾易其稿,卻也依然無法確保能夠涵蓋即將成為核心功能的特性,于是沮喪感幾度如影隨形,直到自我安慰著“基礎(chǔ)的核心特性基本不會發(fā)生大的變動,只要能幫助讀者弄清楚Kubernetes系統(tǒng)的基礎(chǔ)架構(gòu)及核心工作邏輯就算工夫沒有白費”之后方才釋然。于是便有了這本力圖盡量多地包羅Kubernetes系統(tǒng)目前主流特性及實踐路徑的入門和進階之書、工具之書。
本書特色
本書致力于幫助容器編排技術(shù)的初級和中級用戶循序漸進地理解與使用Kubernetes系統(tǒng),因此本書的編寫充分考慮到初學者進入新知識領(lǐng)域時的茫然,采用由淺入深、提綱挈領(lǐng)、再由點到面的方式講解每一個知識細節(jié)。對于每個知識點,不僅介紹了其概念和用法,還分析了為什么要有這個概念,實現(xiàn)的方式是什么,背后的邏輯為何,等等,使讀者不僅能知其然,還能知其所以然。
本書不僅要帶領(lǐng)讀者入門,更是一本可以隨時動手加以驗證的實踐手冊,而且對于部分重要的內(nèi)容還會專門一步步地給出具體的實操案例,幫助讀者在實踐中升華對概念的理解。本書幾乎涵蓋了應(yīng)用Kubernetes系統(tǒng)的所有主流知識點,它甚至可以作為計劃考取CKA認證的讀者的配套參考圖書。
讀者對象
◆云計算工程師
◆運維工程師
◆系統(tǒng)開發(fā)工程師
◆程序架構(gòu)師
◆計劃考取CKA認證的人員
◆其他對容器編排感興趣的人員
如何閱讀本書
閱讀使用本書之前,讀者需要具備Docker容器技術(shù)的基礎(chǔ)使用能力。本書邏輯上共分為五大部分,15章。
第一部分(第1~2章),介紹Kubernetes系統(tǒng)的基礎(chǔ)概念及其基本應(yīng)用。
第1章? 介紹容器編排系統(tǒng)出現(xiàn)的背景,以及Kubernetes系統(tǒng)的功能、特性、核心概念、系統(tǒng)組件及應(yīng)用模型。
第2章? 講解Kubernetes的核心對象,以及直接使用命令管理資源對象的快速入門技巧。
第二部分(第3~6章),介紹核心資源類型及其應(yīng)用。
第3章? 介紹資源管理模型、陳述式與聲明式資源管理接口,并通過命令對比說明兩種操作方式的不同之處。
第4章? 介紹Pod資源的常用配置、生命周期、存儲狀態(tài)和就緒狀態(tài)檢測,以及計算資源的需求及限制等。
第5章? 介紹Pod控制器資源類型,重點講解了控制無狀態(tài)應(yīng)用的ReplicaSet、Deployment、DaemonSet控制器,并介紹了Job和CronJob控制器。
第6章? 介紹Service和Ingress資源類型,涵蓋Service類型、功用及其實現(xiàn),以及Ingress控制器、Ingress資源的種類及其實現(xiàn),并通過案例詳細說明了Ingress資源的具體使用方式。
第三部分(第7~9章),介紹存儲卷及StatefulSet控制器。
第7章? 主要介紹存儲卷類型及常見存儲卷的使用方式、PV和PVC出現(xiàn)的原因及應(yīng)用,以及存儲類資源的應(yīng)用和存儲卷的動態(tài)供給。
第8章? 介紹使用一等資源類型Conf?igMap和Secret為容器應(yīng)用提供配置及敏感信息的方式。
第9章? 主要介紹有狀態(tài)應(yīng)用的Pod控制器資源StatefulSet,包括基礎(chǔ)應(yīng)用、動態(tài)擴縮容及更新機制等。
第四部分(第10~11章),介紹安全相關(guān)的話題,主要涉及認證、授權(quán)、準入控制、網(wǎng)絡(luò)模型與網(wǎng)絡(luò)策略。
第10章? 重點講解認證方式、Service Account和TLS認證、授權(quán)插件類型及RBAC,并于章節(jié)的最后介紹LimitRanger、ResourceQuota和PodSecurityPolicy三種類型的準入控制器及相關(guān)的資源類型。
第11章? 主要介紹網(wǎng)絡(luò)插件基礎(chǔ)及f?lannel的三種后端實現(xiàn)與應(yīng)用、借助Canal插件實現(xiàn)網(wǎng)絡(luò)策略的方式,以及Calico網(wǎng)絡(luò)插件的基礎(chǔ)使用。
第五部分(第12~15章),介紹Kubernetes系統(tǒng)的高級話題。
第12章? 介紹Pod資源的調(diào)度策略及高級調(diào)度方式的應(yīng)用,包括節(jié)點親和、Pod資源親和以及基于污點和容忍度的調(diào)度。
第13章? 介紹系統(tǒng)資源的擴展方式,包括自定義資源類型、自定義資源對象、自定義API及控制器、Master節(jié)點的高可用、基于Kubernetes的PaaS系統(tǒng)等話題。
第14章? 介紹資源指標、自定義指標、監(jiān)控系統(tǒng)及HPA控制器的應(yīng)用。
第15章? 介紹簡化應(yīng)用管理的工具Helm,并基于Helm介紹如何為Kubernetes系統(tǒng)提供統(tǒng)一的日志收集與管理工具棧EFK。
有一定Kubernetes使用經(jīng)驗的讀者可以挑選感興趣的章節(jié)閱讀。而對于初學者,建議從基礎(chǔ)部分逐章閱讀,但構(gòu)建在Kubernetes系統(tǒng)之上的應(yīng)用多數(shù)都要求讀者能熟練使用相關(guān)領(lǐng)域的知識和技能,如果對某些內(nèi)容的理解比較困難,那么可能是由于相關(guān)知識欠缺,建議讀者通過其他資料補充學習相關(guān)知識后再閱讀本書。編撰本書的主要意圖是為初學者提供一個循序漸進的實操手冊,不過,任何讀者也都可以將它作為一本案頭的工具書隨時進行查閱。
排版約定
本書中所有的命令都附帶了或長格式或短格式的命令提示符,以便讀者區(qū)分文中正常使用的“#”和“$”,命令提示格式為“~]#”或“~]$”,較長的命令使用了“\”為續(xù)行符,且命令及其輸出使用了有別于正文的字體。
更多內(nèi)容和附帶代碼
本書相關(guān)的配置清單等都放置于https://github.com/ikubernetes/的相關(guān)倉庫中,在實踐中需要時可直接克隆至本地實驗環(huán)境中使用。
勘誤和支持
盡管進行授課及技術(shù)寫作已十數(shù)年,但動筆著書尚屬首次,考慮到排版印刷后的表述無可更改,整個寫作過程戰(zhàn)戰(zhàn)兢兢、如履薄冰。進行每一個關(guān)鍵話題的表述之前都查閱了大量資料,并且反復(fù)斟酌,既期望能夠?qū)⒅R點清晰、準確地加以描述,也試圖避免因自己的理解偏差而誤導(dǎo)讀者。盡管如此,由于筆者水平有限,加之編寫時間倉促,書中難免存在不妥之處,懇請讀者批評指正。如果讀者有更多的寶貴意見,請通過郵箱mage@magedu.com聯(lián)系我,期待能夠得到你們的真摯反饋,在技術(shù)之路上互勉共進。另外,本書的勘誤將會發(fā)布在筆者的博客(http://www.ilinux.io)或本書專用的GitHub主頁(https://github.com/ikubernetes)上,歡迎讀者朋友們關(guān)注并留言討論。
參考資料
致謝
感謝Kubernetes社區(qū)創(chuàng)造性的勞動成果和辛苦付出,我們因此有了學習和使用如此優(yōu)秀的開源系統(tǒng)的可能性,這也是本書得以編撰的基石。
感謝我的同事們在我寫作期間給予的支持和理解,他們的努力讓我擁有了得以放心寫作的時間和精力。感謝提供了相關(guān)行業(yè)信息并促使我下定決心開始編寫此書的張常安和張士杰先生,本書的寫作過程中也得到了他們支援的寶貴素材。
感謝參加了我的課程(馬哥教育)的學員朋友們,大家的學習熱情及工作中源源不斷反饋而來的信息與需求在不同程度上幫助我一直保持著對技術(shù)的追求和熱忱,教學相長在此得到了充分的體現(xiàn)。
感謝機械工業(yè)出版社華章公司高婧雅女士對本書寫作的悉心指導(dǎo),以及對我本人的包容和理解。
最后要特別感謝我的家人,為寫作這本書,我犧牲了很多陪伴他們的時間,也正因為他們在生活中的關(guān)懷和鼓勵才使我能夠踏踏實實地完成本書內(nèi)容的編寫。
目 錄Contents
前言
第1章?Kubernetes系統(tǒng)基礎(chǔ)? 1
1.1?容器技術(shù)概述? 1
1.1.1?容器技術(shù)的功用? 2
1.1.2?容器簡史? 3
1.1.3?Docker的功能限制? 4
1.2?Kubernetes概述? 4
1.2.1?Kubernetes簡史? 4
1.2.2?Kubernetes特性? 5
1.2.3?Kubernetes概念和術(shù)語? 6
1.3?Kubernetes集群組件? 10
1.3.1?Master組件? 10
1.3.2?Node組件? 12
1.3.3?核心附件? 13
1.4?Kubernetes網(wǎng)絡(luò)模型基礎(chǔ)? 13
1.4.1?網(wǎng)絡(luò)模型概述? 13
1.4.2?集群上的網(wǎng)絡(luò)通信? 15
1.5?本章小結(jié)? 16
第2章?Kubernetes快速入門? 17
2.1?Kubernetes的核心對象? 17
2.1.1?Pod資源對象? 18
2.1.2?Controller? 19
2.1.3?Service? 20
2.1.4?部署應(yīng)用程序的主體過程? 21
2.2?部署Kubernetes集群? 22
2.2.1?kubeadm部署工具? 22
2.2.2?集群運行模式? 24
2.2.3?準備用于實踐操作的集群環(huán)境? 25
2.2.4?獲取集群環(huán)境相關(guān)的信息? 26
2.3?kubectl使用基礎(chǔ)與示例? 26
2.4?命令式容器應(yīng)用編排? 29
2.4.1?部署應(yīng)用(Pod)? 30
2.4.2?探查Pod及應(yīng)用詳情? 33
2.4.3?部署Service對象? 36
2.4.4?擴容和縮容? 38
2.4.5?修改及刪除對象? 40
2.5?本章小結(jié)? 41
第3章?資源管理基礎(chǔ)? 42
3.1?資源對象及API群組? 42
3.1.1?Kubernetes的資源對象? 43
3.1.2?資源及其在API中的組織形式? 46
3.1.3?訪問Kubernetes REST API? 48
3.2?對象類資源格式? 49
3.2.1?資源配置清單? 50
3.2.2?metadata嵌套字段? 51
3.2.3?spec和status字段? 52
3.2.4?資源配置清單格式文檔? 53
3.2.5?資源對象管理方式? 54
3.3?kubectl命令與資源管理? 56
3.3.1?資源管理操作概述? 56
3.3.2?kubectl的基本用法? 57
3.4?管理名稱空間資源? 59
3.4.1?查看名稱空間及其資源對象? 60
3.4.2?管理Namespace資源? 61
3.5?Pod資源的基礎(chǔ)管理操作? 61
3.5.1?陳述式對象配置管理方式? 62
3.5.2?聲明式對象配置管理方式? 64
3.6?本章小結(jié)? 65
第4章?管理Pod資源對象? 66
4.1?容器與Pod資源對象? 66
4.2?管理Pod對象的容器? 68
4.2.1?鏡像及其獲取策略? 69
4.2.2?暴露端口? 70
4.2.3?自定義運行的容器化應(yīng)用? 71
4.2.4?環(huán)境變量? 72
4.2.5?共享節(jié)點的網(wǎng)絡(luò)名稱空間? 73
4.2.6?設(shè)置Pod對象的安全上下文? 74
4.3?標簽與標簽選擇器? 75
4.3.1?標簽概述? 75
4.3.2?管理資源標簽? 77
4.3.3?標簽選擇器? 78
4.3.4?Pod節(jié)點選擇器nodeSelector? 79
4.4?資源注解? 80
4.4.1?查看資源注解? 81
4.4.2?管理資源注解? 82
4.5?Pod對象的生命周期? 82
4.5.1?Pod的相位? 82
4.5.2?Pod的創(chuàng)建過程? 83
4.5.3?Pod生命周期中的重要行為? 84
4.5.4?容器的重啟策略? 87
4.5.5?Pod的終止過程? 87
4.6?Pod存活性探測? 88
4.6.1?設(shè)置exec探針? 89
4.6.2?設(shè)置HTTP探針? 90
4.6.3?設(shè)置TCP探針? 92
4.6.4?存活性探測行為屬性? 93
4.7?Pod就緒性探測? 94
4.8?資源需求及資源限制? 96
4.8.1?資源需求? 96
4.8.2?資源限制? 98
4.8.3?容器的可見資源? 99
4.8.4?Pod的服務(wù)質(zhì)量類別? 100
4.9?本章小結(jié)? 101
第5章?Pod控制器? 103
5.1?關(guān)于Pod控制器? 103
5.1.1?Pod控制器概述? 104
5.1.2?控制器與Pod對象? 105
5.1.3?Pod模板資源? 106
5.2?ReplicaSet控制器? 106
5.2.1?ReplicaSet概述? 107
5.2.2?創(chuàng)建ReplicaSet? 108
5.2.3?ReplicaSet管控下的Pod對象? 109
5.2.4?更新ReplicaSet控制器? 111
5.2.5?刪除ReplicaSet控制器資源? 114
5.3?Deployment控制器? 114
5.3.1?創(chuàng)建Deployment? 115
5.3.2?更新策略? 116
5.3.3?升級Deployment? 119
5.3.4?金絲雀發(fā)布? 121
5.3.5?回滾Deployment控制器下的應(yīng)用發(fā)布? 123
5.3.6?擴容和縮容? 123
5.4?DaemonSet控制器? 124
5.4.1?創(chuàng)建DaemonSet資源對象? 124
5.4.2?更新DaemonSet對象? 126
5.5?Job控制器? 127
5.5.1?創(chuàng)建Job對象? 128
5.5.2?并行式Job? 129
5.5.3?Job擴容? 130
5.5.4?刪除Job? 130
5.6?CronJob控制器? 131
5.6.1?創(chuàng)建CronJob對象? 131
5.6.2?CronJob的控制機制? 132
5.7?ReplicationController? 133
5.8?Pod中斷預(yù)算? 133
5.9?本章小結(jié)? 134
第6章?Service和Ingress? 136
6.1?Service資源及其實現(xiàn)模型? 136
6.1.1?Service資源概述? 136
6.1.2?虛擬IP和服務(wù)代理? 138
6.2?Service資源的基礎(chǔ)應(yīng)用? 140
6.2.1?創(chuàng)建Service資源? 140
6.2.2?向Service對象請求服務(wù)? 141
6.2.3?Service會話粘性? 142
6.3?服務(wù)發(fā)現(xiàn)? 143
6.3.1?服務(wù)發(fā)現(xiàn)概述? 143
6.3.2?服務(wù)發(fā)現(xiàn)方式:環(huán)境變量? 145
6.3.3?ClusterDNS和服務(wù)發(fā)現(xiàn)? 146
6.3.4?服務(wù)發(fā)現(xiàn)方式:DNS? 146
6.4?服務(wù)暴露? 147
6.4.1?Service類型? 147
6.4.2?NodePort類型的Service資源? 149
6.4.3?LoadBalancer類型的Service資源? 150
6.4.4?ExternalName Service? 151
6.5?Headless類型的Service資源? 152
6.5.1?創(chuàng)建Headless Service資源? 153
6.5.2?Pod資源發(fā)現(xiàn)? 153
6.6?Ingress資源? 154
6.6.1?Ingress和Ingress Controller? 154
6.6.2?創(chuàng)建Ingress資源? 155
6.6.3?Ingress資源類型? 157
6.6.4?部署Ingress控制器(Nginx)? 159
6.7?案例:使用Ingress發(fā)布tomcat? 161
6.7.1?準備名稱空間? 161
6.7.2?部署tomcat實例? 162
6.7.3?創(chuàng)建Service資源? 163
6.7.4?創(chuàng)建Ingress資源? 164
6.7.5?配置TLS Ingress資源? 165
6.8?本章小結(jié)? 168
第7章?存儲卷與數(shù)據(jù)持久化? 169
7.1?存儲卷概述? 169
7.1.1?Kubernetes支持的存儲卷類型? 170
7.1.2?存儲卷的使用方式? 171
7.2?臨時存儲卷? 172
7.2.1?emptyDir存儲卷? 172
7.2.2?gitRepo存儲卷? 175
7.3?節(jié)點存儲卷hostPath? 176
7.4?網(wǎng)絡(luò)存儲卷? 178
7.4.1?NFS存儲卷? 178
7.4.2?RBD存儲卷? 180
7.4.3?GlusterFS存儲卷? 182
7.4.4?Cinder存儲卷? 183
7.5?持久存儲卷? 184
7.5.1?創(chuàng)建PV? 186
7.5.2?創(chuàng)建PVC? 188
7.5.3?在Pod中使用PVC? 190
7.5.4?存儲類? 191
7.5.5?PV和PVC的生命周期? 194
7.6?downwardAPI存儲卷? 196
7.6.1?環(huán)境變量式元數(shù)據(jù)注入? 197
7.6.2?存儲卷式元數(shù)據(jù)注入? 199
7.7?本章小結(jié)? 201
第8章?配置容器應(yīng)用:Conf?igMap和Secret? 202
8.1?容器化應(yīng)用配置方式? 202
8.2?通過命令行參數(shù)配置容器應(yīng)用? 204
8.3?利用環(huán)境變量配置容器應(yīng)用? 206
8.4?應(yīng)用程序配置管理及Conf?igMap資源? 208
8.4.1?創(chuàng)建Conf?igMap對象? 209
8.4.2?向Pod環(huán)境變量傳遞Conf?igMap對象鍵值數(shù)據(jù)? 212
8.4.3?Conf?igMap存儲卷? 215
8.4.4?容器應(yīng)用重載新配置? 219
8.4.5?使用Conf?igMap資源的注意事項? 220
8.5?Secret資源? 221
8.5.1?Secret概述? 221
8.5.2?創(chuàng)建Secret資源? 222
8.5.3?Secret存儲卷? 224
8.5.4?imagePullSecret資源對象? 225
8.6?本章小結(jié)? 226
第9章?StatefulSet控制器? 227
9.1?StatefulSet概述? 227
9.1.1?Stateful應(yīng)用和Stateless應(yīng)用? 227
9.1.2?StatefulSet控制器概述? 228
9.1.3?StatefulSet的特性? 230
9.2?StatefulSet基礎(chǔ)應(yīng)用? 231
9.2.1?創(chuàng)建StatefulSet對象? 232
9.2.2?Pod資源標識符及存儲卷? 234
9.3?StatefulSet資源擴縮容? 237
9.4?StatefulSet資源升級? 238
9.4.1?滾動更新? 238
9.4.2?暫存更新操作? 239
9.4.3?金絲雀部署? 240
9.4.4?分段更新? 241
9.4.5?其他話題? 241
9.5?案例:etcd集群? 242
9.5.1?創(chuàng)建Service資源? 242
9.5.2?etcd StatefulSet? 243
9.6?本章小結(jié)? 247
第10章??認證、授權(quán)與準入控制? 248
10.1??訪問控制概述? 248
10.1.1??用戶賬戶與用戶組? 249
10.1.2??認證、授權(quán)與準入控制基礎(chǔ)? 250
10.2??服務(wù)賬戶管理與應(yīng)用? 253
10.2.1??Service Account自動化? 253
10.2.2??創(chuàng)建服務(wù)賬戶? 255
10.2.3??調(diào)用imagePullSecret資源對象? 256
10.3??X.509數(shù)字證書認證? 256
10.3.1??Kubernetes中的SSL/TLS認證? 257
10.3.2??客戶端配置文件kubeconf?ig? 259
10.3.3??TLS bootstrapping機制? 262
10.4??基于角色的訪問控制:RBAC? 263
10.4.1??RBAC授權(quán)插件? 264
10.4.2??Role和RoleBinding? 266
10.4.3??ClusterRole和ClusterRoleBin-ding? 269
10.4.4??聚合型ClusterRole? 271
10.4.5??面向用戶的內(nèi)建ClusterRole? 273
10.4.6??其他的內(nèi)建ClusterRole和ClusterRoleBinding? 274
10.5??Kubernetes Dashboard? 275
10.5.1??部署HTTPS通信的Dashboard? 275
10.5.2??配置token認證? 277
10.5.3??配置kubeconf?ig認證? 277
10.6??準入控制器與應(yīng)用示例? 279
10.6.1??LimitRange資源與LimitRanger準入控制器? 279
10.6.2??ResourceQuota資源與準入控制器? 281
10.6.3??PodSecurityPolicy? 283
10.7??本章小結(jié)? 288
第11章??網(wǎng)絡(luò)模型與網(wǎng)絡(luò)策略? 289
11.1??Kubernetes網(wǎng)絡(luò)模型及CNI插件? 289
11.1.1??Docker容器的網(wǎng)絡(luò)模型? 289
11.1.2??Kubernetes網(wǎng)絡(luò)模型? 291
11.1.3??Pod網(wǎng)絡(luò)的實現(xiàn)方式? 293
11.1.4??CNI插件及其常見的實現(xiàn)? 295
11.2??f?lannel網(wǎng)絡(luò)插件? 297
11.2.1??f?lannel的配置參數(shù)? 297
11.2.2??VxLAN后端和direct routing? 298
11.2.3??host-gw后端? 301
11.3??網(wǎng)絡(luò)策略? 302
11.3.1??網(wǎng)絡(luò)策略概述? 302
11.3.2??部署Canal提供網(wǎng)絡(luò)策略功能? 303
11.3.3??配置網(wǎng)絡(luò)策略? 305
11.3.4??管控入站流量? 306
11.3.5??管控出站流量? 308
11.3.6??隔離名稱空間? 310
11.3.7??網(wǎng)絡(luò)策略應(yīng)用案例? 311
11.4??Calico網(wǎng)絡(luò)插件? 315
11.4.1??Calico工作特性? 316
11.4.2??Calico系統(tǒng)架構(gòu)? 318
11.4.3??Calico部署要點? 320
11.4.4??部署Calico提供網(wǎng)絡(luò)服務(wù)和網(wǎng)絡(luò)策略? 321
11.4.5??客戶端工具calicoctl? 324
11.5??本章小結(jié)? 325
第12章??Pod資源調(diào)度? 326
12.1??Kubernetes調(diào)度器概述? 326
12.1.1??常用的預(yù)選策略? 327
12.1.2??常用的優(yōu)選函數(shù)? 330
12.2??節(jié)點親和調(diào)度? 332
12.2.1??節(jié)點硬親和性? 332
12.2.2??節(jié)點軟親和性? 335
12.3??Pod資源親和調(diào)度? 337
12.3.1??位置拓撲? 338
12.3.2??Pod硬親和調(diào)度? 338
12.3.3??Pod軟親和調(diào)度? 341
12.3.4??Pod反親和調(diào)度? 342
12.4??污點和容忍度? 343
12.4.1??定義污點和容忍度? 344
12.4.2??管理節(jié)點的污點? 345
12.4.3??Pod對象的容忍度? 346
12.4.4??問題節(jié)點標識? 347
12.5??Pod優(yōu)選級和搶占式調(diào)度? 347
12.6??本章小結(jié)? 348
第13章??Kubernetes系統(tǒng)擴展? 349
13.1??自定義資源類型(CRD)? 349
13.1.1??創(chuàng)建CRD對象? 350
13.1.2??自定義資源格式驗證? 351
13.1.3??子資源? 353
13.1.4??使用資源類別? 355
13.1.5??多版本支持? 355
13.1.6??自定義控制器基礎(chǔ)? 356
13.2??自定義API Server? 359
13.2.1??自定義API Server概述? 359
13.2.2??APIService對象? 360
13.3??Kubernetes集群高可用? 361
13.3.1??etcd高可用? 362
13.3.2??Controller Manager和Scheduler高可用? 363
13.4??Kubernetes的部署模式? 364
13.4.1??關(guān)鍵組件? 365
13.4.2??常見的部署模式? 366
13.5??容器時代的DevOps概述? 369
13.5.1??容器:DevOps協(xié)作的基礎(chǔ)? 369
13.5.2??泛型端到端容器應(yīng)用程序生命周期工作流? 370
13.5.3??基于Kubernetes的DevOps? 371
13.6??本章小結(jié)? 372
第14章??資源指標及HPA控制器? 373
14.1??資源監(jiān)控及資源指標? 373
14.1.1??資源監(jiān)控及Heapster? 374
14.1.2??新一代監(jiān)控架構(gòu)? 376
14.2??資源指標及其應(yīng)用? 378
14.2.1??部署metrics-server? 378
14.2.2??kubectl top命令? 380
14.3??自定義指標與Prometheus? 381
14.3.1??Prometheus概述? 382
14.3.2??部署Prometheus監(jiān)控系統(tǒng)? 384
14.3.3??自定義指標適配器k8s-prometheus-adapter? 388
14.4??自動彈性縮放? 390
14.4.1??HPA概述? 390
14.4.2??HPA(v1)控制器? 391
14.4.3??HPA(v2)控制器? 393
14.5??本章小結(jié)? 397
第15章??Helm程序包管理器? 398
15.1??Helm基礎(chǔ)? 398
15.1.1??Helm的核心術(shù)語? 399
15.1.2??Helm架構(gòu)? 400
15.1.3??安裝Helm Client? 400
15.1.4??安裝Tiller server? 401
15.1.5??Helm快速入門? 402
15.2??Helm Charts? 405
15.2.1??Charts文件組織結(jié)構(gòu)? 405
15.2.2??Chart.yaml文件組織格式? 406
15.2.3??Charts中的依賴關(guān)系? 407
15.2.4??模板和值? 408
15.2.5??其他需要說明的話題? 409
15.2.6??自定義Charts? 410
15.3??Helm實踐:部署EFK日志管理系統(tǒng)? 415
15.3.1??ElasticSearch集群? 416
15.3.2??日志采集代理f?luentd? 421
15.3.3??可視化組件Kibana? 422
15.4??本章小結(jié)? 424
附錄A 部署Kubernetes集群? 425
附錄B 部署GlusterFS及Heketi? 437
馬永亮
2018年10月
網(wǎng)絡(luò) Kubernetes
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。