Kubernetes 設計模式 (Kubernetes Patterns)

Bilgin Ibryam,RolandHuß 譯 馬晶慧

買這商品的人也買了...

相關主題

商品描述

隨著微服務和容器的發展,開發人員設計、構建和運行軟件的方式已經發生了明顯的變化。
這些現代體系結構提供了新的分佈式原語,開發人員、技術負責人和架構師在實現這些原語時也需要採用一套不同的實踐。
本書重點介紹在Kubernetes上設計和實現雲原生應用程序時所需的通用且可重用的模式和原理。
本書中的每個模式都包含問題描述和特定於Kubernetes的解決方案。所有模式均提供具體的代碼示例以及演示。
本書主要面向熟悉Kubernetes基本概念的開發人員和架構師,
幫助他們學習如何使用久經考驗的設計模式解決常見的雲原生難題。
本書介紹了以下模式類型: 基礎模式涵蓋構建基於容器的雲原生應用程序的核心原則和實踐。
行為模式詳細介紹管理容器和平台交互的概念。
結構化模式教你如何通過在Pod中組織容器解決特定的用例。
配置模式講述如何處理Kubernetes中應用程序的配置。
高級模式涵蓋更複雜的主題,例如操作器和自動伸縮等。

作者簡介

Bilgin Ibryam

是紅帽的首席架構師,阿帕奇軟件基金會的成員,他曾向多個開源項目貢獻代碼。

 

Roland Huβ

博士是紅帽的軟件工程師,他曾擔任Fuse Online的技術總監,近期還加入了Knative編程的無服務團隊。
他擁有二十多年Java的開發經驗,最近又愛上了Golang。
然而,他從未忘記自己是一名系統管理員。
Roland一直在積極地向開源做貢獻,他是JMX-HTTP的首席開發人員,
JMX-HTTP連接了Jolokia與一些流行的Java構建工具,可用於在Kubernetes和OpenShift上創建和部署容器鏡像。
在編程之餘,他熱表於通過會議和寫作來傳播他的工作體會。

目錄大綱

目錄
序.1
前言.3
第1章引言13
1.1雲原生之路. 13
1.2分佈式原語. 15
1.2.1容器17
1.2.2 Pod. 18
1.2.3服務20
1.2.4標籤20
1.2.5註釋22
1.2.6命名空間. 22
1.3討論24
1.4參考資料25

第一部分基礎模式
第2章可預測的需求.29
2.1問題29
2.2解決方案30
2.2.1運行時依賴30
2.2.2資源配置文件33
2.2.3 Pod優先級34
2.2.4項目資源. 37
2.2.5容量規劃. 38
2.3討論39
2.4參考資料39

第3章聲明式部署.41
3.1問題41
3.2解決方案42
3.2.1滾動部署. 43
3.2.2固定部署. 46
3.2.3藍綠髮布. 46
3.2.4金絲雀發布48
3.3討論48
3.4參考資料50

第4章健康檢測51
4.1問題51
4.2解決方案52
4.2.1進程健康檢查52
4.2.2存活探針. 52
4.2.3就緒探針. 54
4.3討論55
4.4參考資料56

第5章生命週期管理. 59
5.1問題59
5.2解決方案60
5.2.1 SIGTERM信號60
5.2.2 SIGKILL信號. 61
5.2.3 postStart鉤子61
5.2.4 preStop鉤子. 62
5.2.5其他生命週期控制. 63
5.3討論64
5.4參考資料65

第6章自動放置67
6.1問題67
6.2解決方案68
6.2.1可利用的節點資源. 68
6.2.2容器資源需求69
6.2.3放置策略. 69
6.2.4調度的過程70
6.2.5節點親和性72
6.2.6 Pod親和性和反親和性73
6.2.7污點和容忍75
6.3討論79
6.4參考資料81

第二部分行為模式
第7章批處理作業.85
7.1問題85
7.2解決方案86
7.3討論89
7.4參考資料90

第8章定期作業91
8.1問題91
8.2解決方案92
8.3討論94
8.4參考資料94

第9章守護進程服務.95
9.1問題95
9.2解決方案96
9.3討論99
9.4參考資料99

第10章單例服務. 101
10.1問題101
10.2解決方案. 102
10.2.1應用程序外鎖定102
10.2.2應用程序內鎖定105
10.2.3 Pod中斷預算107
10.3討論108
10.4參考資料. 108

第11章有狀態服務. 111
11.1問題111
11.1.1存儲. 112
11.1.2網絡. 113
11.1.3標識. 113
11.1.4序數. 114
11.1.5其他需求114
11.2解決方案. 114
11.2.1存儲. 116
11.2.2網絡. 117
11.2.3標識. 119
11.2.4序數. 119
11.2.5其他特性120
11.3討論122
11.4參考資料. 123

第12章服務發現. 125
12.1問題125
12.2解決方案. 126
12.2.1內部服務發現. 127
12.2.2手動服務發現. 131
12.2.3集群外部的服務發現134
12.2.4應用層服務發現138
12.3討論141
12.4參考資料. 142

第13章自我意識. 145
13.1問題145
13.2解決方案. 146
13.3討論149
13.4參考資料. 149

第三部分結構化模式
第14章初始化容器153
14.1問題153
14.2解決方案. 154
14.3討論159
14.4參考資料. 159

第15章Sidecar 161
15.1問題161
15.2解決方案. 162
15.3討論164
15.4參考資料. 165

第16章適配器. 167
16.1問題167
16.2解決方案. 167
16.3討論170
16.4參考資料. 171

第17章外交官. 173
17.1問題173
17.2解決方案. 174
17.3討論176
17.4參考資料. 176

第四部分配置模式
第18章環境變量配置179
18.1問題179
18.2解決方案. 179
18.3討論183
18.4參考資料. 184

第19章配置資源. 185
19.1問題185
19.2解決方案. 185
19.3討論190
19.4參考資料. 191

第20章不可變配置193
20.1問題193
20.2解決方案. 193
20.2.1 Docker卷194
20.2.2 Kubernetes初始化容器195
20.2.3 OpenShift模板198
20.3討論199
20.4參考資料. 200

第21章配置模板. 203
21.1問題203
21.2解決方案. 204
21.3討論209
21.4參考資料. 210

第五部分高級模式
第22章控制器. 213
22.1問題213
22.2解決方案. 214
22.3討論226
22.4參考資料. 226

第23章操作器. 229
23.1問題229
23.2解決方案. 230
23.2.1自定義資源定義230
23.2.2控制器和操作器的分類. 233
23.2.3操作器的開發與部署236
23.2.4示例. 239
23.3討論243
23.4參考資料. 244

第24章彈性伸縮. 247
24.1問題247
24.2解決方案. 248
24.2.1手動水平伸縮. 248
24.2.2 Pod水平自動伸縮250
24.2.3 Pod垂直自動伸縮255
24.2 .4集群自動伸縮. 259
24.2.5伸縮級別262
24.3討論264
24.4參考資料. 265

第25章鏡像構建. 267
25.1問題267
25.2解決方案. 269
25.2.1 OpenShift Build . 269
25.2.2 Knative Build 277
25.3討論282
25.4參考資料. 283
後記285
作者介紹287
封面介紹287