從零構建編排器(Go語言)

[美] 蒂姆·博林(Tim Boring) 著 殷海英 譯

  • 從零構建編排器(Go語言)-preview-1
  • 從零構建編排器(Go語言)-preview-2
  • 從零構建編排器(Go語言)-preview-3
從零構建編排器(Go語言)-preview-1

商品描述

"Kubernetes和Nomad這樣的編排框架,使得管理容器化應用變得異常簡單。從零開始構建一個編排器,能幫助你深入理解如何部署和擴展容器、集群、Pod以及現代分布式系統中的其他組件。 《從零構建編排器(Go語言)》將一步一步指導你從頭開始創建自己的編排器。 《從零構建編排器(Go語言)》為你提供了一個全方位的視角,深入探討編排框架和分布式容器化應用的底層運作機制。翻開這本書,你將踏上一段有趣的旅程,利用Docker API和Go SDK構建一個簡單而實用的編排器。在這個過程中,你將深入理解Kubernetes,並學習一種模式,幫助你在需要時創建自己的個性化編排解決方案。 核心亮點 ? 在工作節點上調度容器 ? 使用Docker API啟動和停止容器 ? 通過簡易的API管理工作節點集群 ? 使用Google Borg系統的算法進行操作"

作者簡介

蒂姆·博林是一位擁有20多年行業經驗的軟件工程師。在其職業生涯的大部分時間裏,他一直是編排系統的實際使用者,所接觸的系統包括Borg、Kubernetes和Nomad。

目錄大綱

目    錄

第1章  編排器概述    2

1.1    為什麼從零開始實現一個編排器    2

1.2    苦樂參半的往日時光    3

1.3    什麼是容器,它與虛擬機有何不同    4

1.4    什麼是編排器    6

1.5    編排系統的組件    6

1.5.1    任務    7

1.5.2    作業    7

1.5.3    調度器    8

1.5.4    管理器    8

1.5.5    工作節點    8

1.5.6    集群    9

1.5.7    命令行接口    9

1.6    認識Cube    11

1.7    本書將使用哪些工具    12

1.8    關於硬件    13

1.9    本書未涉及的內容    15

1.9.1    分布式計算    15

1.9.2    服務發現    15

1.9.3    高可用性    15

1.9.4    負載均衡    16

1.9.5    安全性    17

本章小結    17

第2章  從思維模型到基礎代碼  18

2.1    任務框架    20

2.2    工作節點框架    22

2.3    管理器框架    24

2.4    調度器框架    25

2.5    其他框架    26

2.6    讓框架運轉起來    27

本章小結    30

第3章  為任務框架補充細節  31

3.1    Docker:通過命令行啟動、停止和檢查容器    32

3.2    Docker:通過API啟動、停止和檢查容器    34

3.3    任務配置    36

3.4    啟動和停止任務    37

本章小結    44

第4章  Cube的工作節點們,團結起來  47

4.1    Cube的工作節點    47

4.2    任務與Docker    50

4.3    隊列的作用    50

4.4    數據庫的作用    51

4.5    計數任務    51

4.6    實現工作節點的方法    51

4.6.1    實現StopTask方法    52

4.6.2    實現StartTask方法    53

4.6.3    關於任務狀態的插曲    54

4.6.4    實現RunTask方法    57

4.7    整合所有內容    58

本章小結    60

第5章  工作節點的API   61

5.1    工作節點API概述    62

5.2    數據格式、請求與響應    63

5.3   API結構體    65

5.4    處理請求    66

5.5    提供API    69

5.6    整合所有內容    70

本章小結    75

第6章  指標  76

6.1    應該收集哪些指標數據    77

6.2    從/proc文件系統獲取的指標數據    78

6.3    使用goprocinfo收集指標數據    80

6.4    在API上暴露指標數據    84

6.5    整合所有內容    86

本章小結    88

第7章  管理器的引入  90

7.1    Cube管理器    91

7.2    Manager結構體    92

7.3    實現管理器的方法    93

7.3.1    實現SelectWorker方法    93

7.3.2    實現SendWork方法    95

7.3.3    實現UpdateTasks方法    96

7.3.4    向管理器添加任務    98

7.3.5    創建管理器    98

7.4    故障與彈性能力的討論    99

7.5    整合所有內容    99

本章小結    104

第8章  管理器的 API    105

8.1    管理器API概述    105

8.2    路由    106

8.3    數據格式、請求和響應    107

8.4   API結構體    108

8.5    處理請求    109

8.6    提供API服務    111

8.7    提升便利性的幾項重構   112

8.8    整合所有內容   113

本章小結   118

第9章  可能出現的問題    119

9.1    新場景概述   119

9.2    故障場景    120

9.2.1    應用啟動失敗   120

9.2.2    應用程序錯誤   121

9.2.3    資源問題導致的任務啟動失敗   121

9.2.4    Docker守護進程崩潰和重啟導致的任務失敗   121

9.2.5    機器崩潰和重啟導致的任務失敗   122

9.2.6    工作節點故障   122

9.2.7    管理器故障   122

9.3    恢復選項    122

9.3.1    從應用故障中恢復   123

9.3.2    從環境故障中恢復   123

9.3.3    從任務級故障中恢復   123

9.3.4    從工作節點故障中恢復   124

9.3.5    從管理器故障中恢復   125

9.4    實現健康檢查    126

9.4.1    檢查工作節點上的任務   126

9.4.2    在工作節點上實現任務更新   128

9.4.3    健康檢查與重啟   129

9.5    整合所有內容    133

本章小結    138

第10章  實現一個更復雜的調度器    140

10.1    調度問題    140

10.2    調度時應考慮的事項    141

10.3    調度器接口    141

10.4    將輪詢調度器適配到調度器接口    143

10.5    使用新的調度器接口    145

10.5.1    向Manager結構體添加新字段   145

10.5.2    修改New幫助函數   146

10.5.3    修改管理器的多個方法   147

10.6    你註意到這個bug了嗎    149

10.7    整合所有內容    150

10.8    E-PVM調度器    153

10.8.1    相關理論   153

10.8.2    實踐中的應用   154

10.9    完成 Node 實現    158

10.10    使用E-PVM調度器    161

本章小結    162

第11章  實現任務的持久化存儲    163

11.1    存儲問題    163

11.2    Store接口    164

11.3    實現任務的內存存儲    166

11.4    實現任務事件的內存存儲    168

11.5    重構管理器以使用新的內存存儲    169

11.6    重構工作節點    174

11.7    整合所有內容    178

11.8    引入BoltDB    179

11.9    實現持久化任務存儲    180

11.10    實現持久化任務事件存儲    184

11.11    將內存存儲替換為持久化存儲    187

本章小結    188

第12章  構建命令行接口    190

12.1    CLI的核心組件    191

12.2    引入Cobra框架    192

12.3    設置Cobra應用程序    192

12.4    理解新的main.go    193

12.5    理解root.go    193

12.6    實現worker命令    195

12.7    實現manager命令    200

12.8    實現run命令    203

12.9    實現stop命令    208

12.10    實現status命令    210

12.11    實現node命令    212

本章小結    215

第13章  展望未來   216

13.1    參與Kubernetes及相關工具的開發    216

13.2    管理器-工作節點模式與工作流系統    217

13.3    管理器-工作節點模式與集成系統    217

13.4    結束語    218

附錄  環境設置   219