底層都完全了解 - Kubernetes API Server 原始程式分析

張海龍 著

  • 出版商: 深智
  • 出版日期: 2025-05-19
  • 定價: $1,080
  • 售價: 7.9$853
  • 語言: 繁體中文
  • 頁數: 544
  • ISBN: 6267569764
  • ISBN-13: 9786267569764
  • 相關分類: Kubernetes
  • 尚未上市,歡迎預購

相關主題

商品描述

Kubernetes 控制面與節點組件的功能與結構

Kubernetes API 的組、版本及資源定義

宣告式 API 與控制器模式的運作機制

Kubernetes 社區治理與貢獻開發流程

API Server 的結構、原理與原始碼解析

Kubernetes API 的屬性、方法與定義規範

Generic Server 與主 Server 的建構與運行邏輯

CRD 的定義、屬性驗證及版本轉換

聚合 Server 的設計、實現及功能擴展

聚合 Server 的部署、測試與問題排查方法

API Server Builder 的開發步驟與應用實例

使用 Kubebuilder 開發與測試 Kubernetes Operator

 

【內容簡介】

本書分為三大部分,從基礎概念到原始碼解析,再到實戰開發,逐步帶領讀者深入了解Kubernetes的運作原理與開發實踐。第一部分聚焦基礎知識,介紹Kubernetes的控制面與節點組件、API資源與版本管理,以及API Server的核心運作機制,包括請求過濾鏈、認證控制和控制器模式等關鍵內容,並涵蓋Kubernetes社區治理與開發流程,幫助讀者掌握如何參與開源專案。第二部分深入解析Kubernetes原始碼,涵蓋API Server的架構、命令列應用的實現,並詳細講解Generic Server與主Server的建構邏輯,包括Server啟動、配置、請求處理鏈的實現及認證控制,還探索了CRD定義、Webhook應用和API擴展的實現方法,揭示Kubernetes高度可擴展性的核心技術。第三部分則著重於實戰應用,展示如何開發聚合ServerOperator,並運用API Server BuilderKubebuilder等工具完成從專案初始化到部署測試的完整流程,結合實際案例說明設計與實現Kubernetes自定義功能的高效方法

作者簡介

張海龍

復旦大學軟體工程碩士、數學學士。從事企業管理軟體發展16年,專注於軟體生命週期管理領域。參與、管理大型雲原生軟體發展專案多年,具有豐富的大型單體軟體微服務化經驗。現任外企軟體發展團隊經理,擁有十多年團隊管理經驗。

目錄大綱

基礎篇

1 Kubernetes API Server 概要

1.1 Kubernetes 組件

1.1.1 控制面上的組件

1.1.2 節點上的組件

1.2 Kubernetes API 基本概念

1.2.1 API API 物件

1.2.2 API 種類

1.2.3 API 組和版本

1.2.4 API 資源

1.3 API Server

1.3.1 一個Web Server

1.3.2 服務於API

1.3.3 請求過濾鏈與認證控制

1.4 宣告式API 和控制器模式

1.4.1 宣告式API

1.4.2 控制器和控制器模式

1.5 本章小結

 

2 Kubernetes 專案

2.1 Kubernetes 社區治理

2.1.1 特別興趣組

2.1.2 SIG 內的子專案小組

2.1.3 工作群組

2.2 開發人員如何貢獻程式

2.2.1 開發流程

2.2.2 程式提交與合併流程

2.3 原始程式碼下載與編譯

2.3.1 下載

2.3.2 本地編譯與運行

2.4 本章小結

 

原始程式篇

3 API Server

3.1 Kubernetes 的專案結構

3.1.1 頂層目錄

3.1.2 staging 目錄

3.1.3 pkg 目錄

3.2 Cobra

3.2.1 命令的格式規範

3.2.2 Cobra 寫命令列應用

3.3 整體結構

3.3.1 Server

3.3.2 再談聚合器

3.4 API Server 的建立與啟動

3.4.1 建立Cobra 命令

3.4.2 命令的核心邏輯

3.4.3 CreateServerChain() 函數

3.4.4 總結與展望

3.5 本章小結

 

4 Kubernetes API

4.1 Kubernetes API 原始程式碼

4.1.1 內部版本和外部版本

4.1.2 API 的屬性

4.1.3 API 的方法與函數

4.1.4 API 定義與實現的約定

4.2 內建 API

4.3 核心 API

4.4 程式生成

4.4.1 程式生成工作原理

4.4.2 程式生成範例

4.4.3 觸發程式生成

4.5 本章小結

 

5 Generic Server

5.1 Go 語言實現Web Server

5.2 go-restful

5.2.1 go-restful 簡介

5.2.2 go-restful 中的核心概念

5.2.3 使用go-restful

5.3 OpenAPI

5.3.1 什麼是OpenAPI

5.3.2 Kubernetes 使用OpenAPI 規格說明

5.3.3 生成API OpenAPI 規格說明

5.3.4 Generic Server OpenAPI

5.4 Scheme 機制

5.4.1 登錄檔的內容

5.4.2 登錄檔的建構

5.5 Generic Server 的建構

5.5.1 準備Server 運行配置

5.5.2 建立Server 實例

5.5.3 建構請求處理鏈

5.5.4 增加啟動和關閉鉤子函數

5.6 Generic Server 的啟動

5.6.1 啟動準備

5.6.2 啟動

5.7 API 的注入與請求回應

5.7.1 注入處理流程

5.7.2 WebService 及其Route 生成過程

5.7.3 回應對Kubernetes API HTTP 請求

5.8 認證控制機制

5.8.1 什麼是認證控制

5.8.2 認證控制器

5.8.3 動態認證控制

5.9 一個HTTP 請求的處理過程

5.10 本章小結

 

6 Server

6.1 Server 的實現

6.1.1 填充登錄檔

6.1.2 準備Server 運行配置

6.1.3 建立主Server

6.2 Server 的幾個控制器

6.2.1 ReplicaSet 控制器

6.2.2 Deployment 控制器

6.2.3 StatefulSet 控制器

6.2.4 Service Account 控制器

6.3 Server 的認證控制

6.3.1 運行選項和命令列參數

6.3.2 從運行選項到運行配置

6.3.3 從運行配置到Generic Server

6.4 API Server 的登入驗證機制

6.4.1 API Server 登入驗證基礎

6.4.2 API Server 的登入驗證策略

6.4.3 API Server 中建構登入認證機制

6.5 本章小結

 

7 擴充Server

7.1 CustomResourceDefinition 介紹

7.1.1 CRD 的屬性

7.1.2 客製化API 屬性的定義與驗證

7.1.3 啟用Status Scale 子資源

7.1.4 版本轉換的Webhook

7.2 擴充Server 的實現

7.2.1 獨立模組

7.2.2 準備Server 運行配置

7.2.3 建立擴充Server

7.2.4 啟動擴充Server

7.3 擴充Server 中控制器的實現

7.3.1 發現控制器

7.3.2 名稱控制器

7.3.3 非結構化規格控制器

7.3.4 API 審核控制器

7.3.5 CRD 清理控制器

7.4 本章小結

 

8 聚合器和聚合Server

8.1 聚合器與聚合Server 介紹

8.1.1 背景與目的

8.1.2 再談API Server 結構

8.2 聚合器的實現

8.2.1 APIService 簡介

8.2.2 準備Server 運行配置

8.2.3 建立聚合器

8.2.4 啟動聚合器

8.2.5 聚合器代理轉發HTTP 請求

8.3 聚合器中控制器的實現

8.3.1 自動註冊控制器與CRD 註冊控制器

8.3.2 APIService 註冊控制器

8.3.3 APIService 狀態監測控制器

8.4 聚合Server

8.4.1 最靈活的擴充方式

8.4.2 聚合Server 的結構

8.4.3 委派登入認證

8.4.4 委派許可權認證

8.5 本章小結

 

實戰篇

9 開發聚合 Server

9.1 目標

9.2 聚合Server 的開發

9.2.1 建立專案

9.2.2 設計API

9.2.3 生成程式

9.2.4 填充登錄檔

9.2.5 資源存取

9.2.6 撰寫認證控制

9.2.7 增加Web Server

9.2.8 部署與測試

9.3 相關控制器的開發

9.3.1 設計

9.3.2 實現

9.3.3 如何啟動

9.3.4 測試

9.4 本章小結

 

10 API Server Builder Kubebuilder

10.1 controller-runtime

10.1.1 核心概念

10.1.2 工作機制

10.2 API Server Builder

10.2.1 概覽

10.2.2 Builder 用法

10.3 Kubebuilder

10.3.1 概覽

10.3.2 功能

10.3.3 開發步驟

10.4 本章小結

 

11 API Server Builder 開發聚合Server

11.1 目標

11.2 聚合Server 的開發

11.2.1 專案初始化

11.2.2 建立v1alpha1 API 並實現

11.2.3 增加v1 版本API 並實現

11.3 相關控制器的開發

11.4 部署與測試

11.4.1 準備工作

11.4.2 製作鏡像

11.4.3 向叢集提交

11.4.4 測試

11.5 本章小結

 

12 Kubebuilder 開發Operator

12.1 目標

12.2 定義CRD

12.2.1 專案初始化

12.2.2 增加客製化API

12.3 相關控制器的開發

12.3.1 實現控制器

12.3.2 本地測試控制器

12.4 認證控制Webhook 的開發

12.4.1 引入認證控制Webhook

12.4.2 實現控制邏輯

12.5 部署至叢集並測試

12.5.1 製作鏡像

12.5.2 部署cert-manager

12.5.3 部署並測試

12.6 本章小結