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

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

Kubernetes API Server源码分析与扩展开发 (微课视频版)

出版日期:
2025/05/18
9
1,080972
查詢門市庫存
►Kubernetes 控制面與節點組件的功能與結構
►Kubernetes API 的組、版本及資源定義
►宣告式 API 與控制器模式的運作機制

內容簡介

https://youtu.be/eog_5uvuaeI

►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高度可擴展性的核心技術。第三部分則著重於實戰應用,展示如何開發聚合Server和Operator,並運用API Server Builder與Kubebuilder等工具完成從專案初始化到部署測試的完整流程,結合實際案例說明設計與實現Kubernetes自定義功能的高效方法。

展開看更多

產品目錄

基礎篇
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 本章小結

作者介紹

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

規格

誠品貨碼 / 2682901714002
ISBN13 / 9786267569764
ISBN10 /
EAN貨碼 / 9786267569764
頁數 / 544
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 17X23X2.67CM
級別 / N:無

退貨說明

退貨須知:

  1. 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
  2. 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。

依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:

  1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
  2. 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
  3. 報紙、期刊或雜誌。
  4. 經消費者拆封之影音商品或電腦軟體。
  5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
  6. 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
  7. 國際航空客運服務。

若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:

  1. 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
  2. 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
  3. 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
  4. 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  5. 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  6. 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送