雲原生作業系統Kubernetes | 被動收入的投資秘訣 - 2024年10月
雲原生作業系統Kubernetes
阿裡雲數位新基建系列包括5本書,題材涉及Kubernetes、混合雲架構、雲資料庫、CDN原理與流媒體技術、雲伺服器運維(Windows),囊括了領先的雲技術知識與阿裡雲技術團隊獨到的實踐經驗,是國內IT技術圖書又一套重磅作品!
本書是阿裡雲容器服務產品線上實踐的技術沉澱,主要包括理論篇和實踐篇兩部分內容。理論篇注重理論介紹,核心是Kubernetes on Cloud,即著重介紹Kubernetes和阿裡雲產品的結合。實踐篇是疑難問題的診斷案例,希望通過案例來和讀者分享Kubernetes深度問題診斷經驗。
我們相信,Kubernetes on Cloud是未來十年雲原生應用的底座,在這個底座之上勢必會產生無數創新和實踐,所以我們希望這本書可以對此技術的發展產生些許推動作用。
阿裡雲全球技術服務部團隊在支援企業架構雲原生化方面,積累了豐富的實戰經驗,服務了數萬個國內外企業客戶。本書作者均來自該團隊。
羅建龍,阿裡雲互聯網行業解決方案架構師,阿裡雲售後雲原生技術領頭人。專注于傳統作業系統、顯卡作業系統、雲原生作業系統等領域。
劉中巍,阿裡雲容器高級技術專家。在加入阿裡巴巴之前,曾在微軟亞洲研究院做虛擬實境方向研究。現主要負責阿裡雲容器服務產品的彈性伸縮與監控、大資料的研發,從事容器的持續交付、持續集成方案的設計與實現。在雲計算、分散式系統、圖像識別與虛擬實境方向有多年的開發實踐經驗。
張城,阿裡雲日誌服務技術專家。負責阿裡巴巴集團、螞蟻金服、阿裡雲等的日誌採集基礎設施,服務數萬名內外部客戶。同時負責雲原生相關的日誌解決方案,包括系統元件、負載均衡、審計、安全、Service Mesh、事件、應用等日誌方案。目前主要關注可觀察性、AIOps、大規模分析引擎等方向。
黃珂,阿裡巴巴高級研發工程師,主要負責Kubernetes容器存儲和網路相關的基礎研發工作,參與了阿裡集團內部有狀態應用的帶存儲和網路的遷移,以及大規模實施線上業務存儲計算分離專案。對Kubernetes中存儲相關元件的設計,以及規模化場景的性能優化具有很深的理解和豐富的實踐經驗。
蘇夏,阿裡雲智慧AES專家服務高級技術工程師,現主要負責阿裡雲大客戶售後技術支援以及重點專案的專家服務工作,在雲原生kubernetes、服務網格、彈性計算、負載均衡等領域有多年的技術支援經驗。
高相林,阿裡雲原生應用平臺高級開發工程師,主要負責阿裡雲容器服務產品的集群和元件生命週期管理系統研發,以及版本生命週期管理。Kubernetes開源社區成員。
盛訓傑,阿裡雲高級技術支援工程師。在阿裡雲全球技術服務部,負責阿裡雲彈性計算產品及容器服務產品的技術支援工作,在企業上雲及應用容器化轉型方面有著豐富的實施落地經驗。
上篇 理論篇(技術進階)
第1章 鳥瞰雲上Kubernetes
1.1 內容概要 002
1.2 雲資源層
1.2.1 專有版
1.2.2 託管版
1.2.3 Serverless版
1.3 單機系統層
1.4 集群系統層
1.4.1 專有版
1.4.2 託管版
1.4.3 Serverless版
1.5 功能擴展層
1.5.1 監控
1.5.2 日誌
1.5.3 DNS
1.6 總結
第2章 認識集群的大腦
2.1 從控制器視角看集群
2.2 控制器的產生與演進
2.2.1 設計一台冰箱
2.2.2 統一操作入口
2.2.3 引入控制器
2.2.4 統一管理控制器
2.2.5 Shared Informer
2.2.6 List Watcher
2.3 控制器示例
2.3.1 服務控制器
2.3.2 路由控制器
2.4 總結
第3章 網路與通信原理
3.1 背景
3.2 阿裡雲Kubernetes集群網路大圖
3.3 集群網路搭建
3.3.1 初始階段
3.3.2 集群階段
3.3.3 節點階段
3.3.4 Pod階段
3.4 通信原理
3.5 總結
第4章 節點伸縮的實現
4.1 節點增加原理
4.1.1 手動添加已有節點
4.1.2 自動添加已有節點
4.1.3 集群擴容
4.1.4 自動伸縮
4.2 節點減少原理
4.3 節點池原理
4.4 總結
第5章 認證與調度系統
5.1 “關在籠子裡”的程式
5.1.1 代碼
5.1.2 “籠子”
5.1.3 地址
5.2 得其門而入
5.2.1 入口
5.2.2 雙向數位憑證驗證
5.2.3 KubeConfig文件
5.2.4 訪問
5.3 擇優而居
5.3.1 兩種節點,一種任務
5.3.2 擇優而居
5.3.3 Pod配置
5.3.4 日誌級別
5.3.5 創建Pod
5.3.6 預選
5.3.7 優選
5.3.8 得分
5.4 總結
第6章 簡潔的服務模型
6.1 服務的本質是什麼
6.2 自帶通信員
6.3 讓服務照進現實
6.4 基於Netfilter的實現
6.4.1 篩檢程式框架
6.4.2 節點網路大圖
6.4.3 升級篩檢程式框架
6.4.4 用自訂鏈實現服務的反向代理
6.5 總結
第7章 監控與彈性能力
7.1 阿裡雲容器服務Kubernetes的監控總覽
7.1.1 雲服務集成
7.1.2 開源集成方案
7.2 阿裡雲容器服務Kubernetes的彈性總覽
7.2.1 調度層彈性元件
7.2.2 資源層彈性元件
7.3 總結
第8章 鏡像下載自動化
8.1 鏡像下載這件小事
8.2 理解OAuth 2.0協議
8.3 Docker扮演的角色
8.3.1 整體結構
8.3.2 理解docker login
8.3.3 拉取鏡像是怎麼回事
8.4 Kubernetes實現的私有鏡像自動拉取
8.4.1 基本功能
8.4.2 進階方式
8.5 阿裡雲實現的ACR credential helper
8.6 總結
第9章 日誌服務的集成
9.1 日誌服務介紹
9.2 採集方案介紹
9.2.1 方案簡介
9.2.2 運行流程
9.2.3 配置方式
9.3 核心技術介紹
9.3.1 背景
9.3.2 實現方式
9.3.3 alibaba-log-controller內部實現
9.4 總結
第10章 集群與存儲系統
10.1 從應用的狀態談起
10.1.1 無狀態的應用
10.1.2 有狀態的應用
10.2 基本單元:Pod Volume
10.3 核心設計:PVC與PV體系
10.4 與特定存儲系統解耦
10.4.1 Volume Plugin
10.4.2 in-tree(內置) Volume Plugin
10.4.3 out-of-tree(外置) Volume Plugin
10.5 Kubernetes CSI管控組件容器化部署
10.6 基於Kubernetes的存儲
10.7 總結
第11章 流量路由Ingress
11.1 基本原理
11.1.1 解決的問題
11.1.2 基礎用法
11.1.3 配置安全路由
11.1.4 全域配置和局部配置
11.1.5 實現原理
11.2 場景化需求
11.2.1 多入口訪問Ingress
11.2.2 部署多套Ingress Controller
11.3 獲取用戶端真實IP地址
11.3.1 理解用戶端真實IP地址的傳遞過程
11.3.2 ExternalTrafficPolicy的影響
11.3.3 如何獲取用戶端真實IP地址
11.4 白名單功能
11.5 總結
第12章 升級設計與實現
12.1 升級預檢
12.1.1 核心元件檢查項
12.1.2 前置檢查增項
12.2 原地升級與替代升級
12.2.1 原地升級
12.2.2 替代升級
12.3 升級三部曲
12.3.1 升級Master節點
12.3.2 升級Worker節點
12.3.3 核心組件升級
12.4 總結
下篇 實踐篇(診斷之美)
第13章 節點就緒狀態異常(一)
13.1 問題介紹
13.1.1 就緒狀態異常
13.1.2 背景知識
13.1.3 關於PLEG機制
13.2 Docker 棧
13.2.1 docker daemon調用棧分析
13.2.2 Containerd調用棧分析
13.3 什麼是D-Bus
13.3.1 runC請求D-Bus
13.3.2 原因並不在D-Bus
13.4 Systemd是硬骨頭
13.4.1 “沒用”的core dump
13.4.2 零散的資訊
13.4.3 代碼分析
13.4.4 Live Debugging
13.4.5 怎麼判斷集群節點NotReady是這個問題導致的
13.5 問題的解決
13.6 總結
第14章 節點就緒狀態異常(二)
14.1 問題介紹
14.2 節點狀態機
14.3 就緒三分鐘
14.4 止步不前的PLEG
14.5 無回應的Terwayd
14.6 原因
14.7 修復
14.8 總結
第15章 命名空間回收機制失效
15.1 問題背景介紹
15.2 集群管控入口
15.3 命名空間控制器的行為
15.3.1 刪除收納盒裡的資源
15.3.2 API、Group、Version
15.3.3 控制器不能刪除命名空間裡的資源
15.4 回到集群管控入口
15.5 節點與Pod的通信
15.6 集群節點訪問雲資源
15.7 問題回顧
15.8 總結
第16章 網路安全性群組加固對與錯
16.1 安全性群組扮演的角色
16.2 安全性群組與集群網路
16.3 怎麼管理安全性群組規則
16.3.1 限制集群訪問外網
16.3.2 IDC與集群互訪
16.3.3 使用新的安全性群組管理節點
16.4 典型問題與解決方案
16.4.1 使用多個安全性群組管理集群節點
16.4.2 限制集群訪問公網或運營商級NAT保留位址
16.4.3 容器組跨節點通信異常
16.5 總結
第17章 網格應用存活狀態異常
17.1 線上一半的微服務
17.2 認識服務網格
17.3 代理與代理的生命週期管理
17.4 就緒檢查的實現
17.5 控制面和資料面
17.6 簡單的原因
17.7 阿裡雲服務網格(ASM)介紹
17.8 總結
第18章 網格自簽名根證書過期
18.1 連續重啟的Citadel
18.2 一般意義上的證書驗證
18.3 自簽章憑證驗證失敗
18.4 大神定理
18.5 Citadel證書體系
18.6 經驗
18.7 總結
附錄A 本書插圖索引
附錄B 本書部分縮略語 P210