containerd原理剖析與實戰

趙吉壯、張明月

  • 出版商: 清華大學
  • 出版日期: 2024-03-01
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • ISBN: 7302655464
  • ISBN-13: 9787302655466
  • 立即出貨 (庫存 < 3)

  • containerd原理剖析與實戰-preview-1
  • containerd原理剖析與實戰-preview-2
  • containerd原理剖析與實戰-preview-3
containerd原理剖析與實戰-preview-1

商品描述

Kubernetes作為雲原生領域容器編排的事實標準毋庸置疑,Kubernetes作為編排調度的指揮官,而真正的執行者實際上是容器運行時。在雲原生生態中,容器運行時作為雲原生技術棧的基石,是至關重要的一環。本書旨在幫助讀者全面瞭解containerd的基本原理和概念。本書從雲原生與容器運行時講起,內容涵蓋雲原生和容器的發展史,容器技術的Linux原理,containerd的架構、原理、功能、部署、配置、插件擴展開發等,並詳細介紹containerd生產實踐中的配置以及落地實踐,使讀者對containerd的概念、原理、實踐有比較清晰的瞭解。 本書適合作為雲原生和容器技術的架構師、研發工程師和運維工程師的參考資料,也適合作為希望瞭解雲計算和容器技術的愛好者的自學用書和參考手冊。

目錄大綱

目  錄

 

第1章  雲原生與容器運行時 1

1.1 雲原生概述 1

1.1.1  雲原生的定義 1

1.1.2  雲原生應用的價值 3

1.1.3  雲原生應用與傳統應用對比 3

1.2  雲原生技術棧與容器運行時 4

1.2.1  雲原生技術棧 4

1.2.2  容器運行時 5

1.3  Docker與Kubernetes的發展史 7

1.3.1  Docker的發展歷史及與容器世界的關聯 7

1.3.2  Docker架構的發展 13

1.4  containerd概述 15

第2章  初識容器運行時 18

2.1  容器技術的發展史 19

2.2  容器Linux基礎 25

2.2.1  容器是如何運行的 25

2.2.2  namespace 27

2.2.3  Cgroups 46

2.2.4  chroot和pivot_root 52

2.3  容器運行時概述 54

2.3.1  什麽是容器運行時 54

2.3.2  OCI規範 55

2.3.3  低級容器運行時 70

2.3.4  高級容器運行時 71

第3章  使用containerd 73

3.1 containerd的安裝與部署 74

3.1.1  containerd的安裝 74

3.1.2  配置containerd.service 76

3.2 ctr的使用 78

3.2.1  ctr的安裝 78

3.2.2  namespace 80

3.2.3  鏡像操作 82

3.2.4  容器操作 85

3.3 nerdctl的使用 89

3.3.1  nerdctl的設計初衷 89

3.3.2  安裝和部署nerdctl 90

3.3.3  nerdctl的命令行使用 92

3.3.4  運行容器 95

3.3.5  構建鏡像 96

第4章  containerd與雲原生生態 99

4.1 Kubernetes與CRI 99

4.1.1  Kubernetes概述 99

4.1.2  CRI與containerd在Kubernetes生態中的演進 101

4.1.3  CRI概述 104

4.1.4  幾種CRI實現及其概述 110

4.2  containerd與CRI Plugin 115

4.2.1  containerd中的CRI Plugin 115

4.2.2  CRI Plugin中的重要配置 117

4.2.3  CRI Plugin中的配置項全解 130

4.3  crictl的使用 138

4.3.1  crictl概述 138

4.3.2  crictl的安裝和配置 139

4.3.3  crictl使用說明 142

第5章  containerd與容器網絡 153

5.1  容器網絡接口 153

5.1.1  CNI概述 153

5.1.2  CNI配置文件的格式 155

5.1.3  容器運行時對CNI插件的調用 157

5.1.4  CNI插件的執行流程 160

5.1.5  CNI插件的委托調用 166

5.1.6  CNI插件接口的輸出格式 167

5.1.7  手動配置容器網絡 169

5.2  CNI插件介紹 181

5.2.1  main類插件 182

5.2.2  ipam類插件 197

5.2.3  meta類插件 203

5.3  containerd中CNI的使用 209

5.3.1  containerd中CNI的安裝與部署 209

5.3.2  nerdctl使用CNI 210

5.3.3  CRI使用CNI 214

5.3.4  ctr使用CNI 215

第6章  containerd與容器存儲 216

6.1 containerd中的數據存儲 216

6.1.1  理解容器鏡像 216

6.1.2  containerd中的存儲目錄 219

6.1.3  containerd中的鏡像存儲 222

6.1.4  containerd中的content 223

6.1.5  containerd中的snapshot 230

6.2  containerd鏡像存儲插件

snapshotter 234

6.2.1  Docker中的鏡像存儲管理

graphdriver 235

6.2.2  graphdriver與snapshotter 237

6.2.3  snapshotter概述 238

6.2.4  containerd中如何使用snapshotter 243

6.3  containerd支持的snapshotter 246

6.3.1  native snapshotter 246

6.3.2  overlayfs snapshotter 250

6.3.3  devmapper snapshotter 258

第7章  containerd核心組件解析 272

7.1 containerd架構總覽 272

7.2  containerd API和Core 274

7.2.1  GRPC API 275

7.2.2  Services 289

7.2.3  Metadata 290

7.3  containerd Backend 293

7.3.1  containerd中的proxy plugins 294

7.3.2  containerd中的Runtime和shim 297

7.3.3  containerd shim規範 300

7.3.4  shim工作流程解析 306

7.4  containerd與NRI 309

7.4.1  NRI概述 310

7.4.2  NRI插件原理 311

7.4.3  containerd中啟用NRI插件 319

7.4.4  containerd NRI插件示例 320

7.4.5  NRI插件的應用 322

第8章  containerd生產與實踐 323

8.1  containerd監控實踐 323

8.1.1  安裝Prometheus 323

8.1.2 Prometheus上containerd的指標

採集配置 326

8.1.3  Grafana監控配置 330

8.1.4  配置containerd面板 330

8.2  基於containerd開發自己的

容器客戶端 332

8.2.1  初始化Client 333

8.2.2  拉取鏡像 334

8.2.3  創建OCI Spec 334

8.2.4  創建task 334

8.2.5  啟動task 335

8.2.6  停止task 335

8.2.7  運行示例 336

8.3  開發自己的NRI插件 337

8.3.1  插件定義與接口實現 337

8.3.2  插件實例化與啟動 339

8.3.3  插件的運行演示 339