Kubernetes進階實戰
勘誤和支持
1 Kubernetes系統基礎
1.1 容器技術概述
1.1.1 容器技術的功用
1.1.2 容器簡史
1.1.3 Docker的功能限制
1.2 Kubernetes概述
1.2.1 Kubernetes簡史
1.2.2 Kubernetes特性
1.2.3 Kubernetes概念和術語
1.3 Kubernetes集群組件
1.3.1 Master組件
1.3.2 Node組件
1.3.3 核心附件
1.4 Kubernetes網絡模型基礎
1.4.1 網絡模型概述
1.4.2 集群上的網絡通信
1.5 本章小結
2 Kubernetes快速入門
2.1 Kubernetes的核心對象
2.1.1 Pod資源對象
2.1.2 Controller
2.1.3 Service
2.1.4 部署應用程序的主體過程
2.2 部署Kubernetes集群
2.2.1 kubeadm部署工具
2.2.2 集群運行模式
2.2.3 准備用於實踐操作的集群環境
2.2.4 獲取集群環境相關的信息
2.3 kubectl使用基礎與示例
2.4 命令式容器應用編排
2.4.1 部署應用(Pod)
2.4.2 探查Pod及應用詳情
2.4.3 部署Service對象
2.4.4 擴容和縮容
2.4.5 修改及刪除對象
2.5 本章小結
3 資源管理基礎
3.1 資源對象及API群組
3.1.1 Kubernetes的資源對象
3.1.2 資源及其在API中的組織形式
3.1.3 訪問Kubernetes REST API
3.2 對象類資源格式
3.2.1 資源配置清單
3.2.2 metadata嵌套字段
3.2.3 spec和status字段
3.2.4 資源配置清單格式文檔
3.2.5 資源對象管理方式
3.3 kubectl命令與資源管理
3.3.1 資源管理操作概述
3.3.2 kubectl的基本用法
3.4 管理名稱空間資源
3.4.1 查看名稱空間及其資源對象
3.4.2 管理Namespace資源
3.5 Pod資源的基礎管理操作
3.5.1 陳述式對象配置管理方式
3.5.2 聲明式對象配置管理方式
3.6 本章小結
4 管理Pod資源對象
4.1 容器與Pod資源對象
4.2 管理Pod對象的容器
4.2.1 鏡像及其獲取策略
4.2.2 暴露端口
4.2.3 自定義運行的容器化應用
4.2.4 環境變量
4.2.5 共享節點的網絡名稱空間
4.2.6 設置Pod對象的安全上下文
4.3 標簽與標簽選擇器
4.3.1 標簽概述
4.3.2 管理資源標簽
4.3.3 標簽選擇器
4.3.4 Pod節點選擇器nodeSelector
4.4 資源注解
4.4.1 查看資源注解
4.4.2 管理資源注解
4.5 Pod對象的生命周期
4.5.1 Pod的相位
4.5.2 Pod的創建過程
4.5.3 Pod生命周期中的重要行為
4.5.4 容器的重啟策略
4.5.5 Pod的終止過程
4.6 Pod存活性探測
4.6.1 設置exec探針
4.6.2 設置HTTP探針
4.6.3 設置TCP探針
4.6.4 存活性探測行為屬性
4.7 Pod就緒性探測
4.8 資源需求及資源限制
4.8.1 資源需求
4.8.2 資源限制
4.8.3 容器的可見資源
4.8.4 Pod的服務質量類別
4.9 本章小結
5 Pod控制器
5.1 關於Pod控制器
5.1.1 Pod控制器概述
5.1.2 控制器與Pod對象
5.1.3 Pod模板資源
5.2 ReplicaSet控制器
5.2.1 ReplicaSet概述
5.2.2 創建ReplicaSet
5.2.3 ReplicaSet管控下的Pod對象
5.2.4 更新ReplicaSet控制器
5.2.5 刪除ReplicaSet控制器資源
5.3 Deployment控制器
5.3.1 創建Deployment
5.3.2 更新策略
5.3.3 升級Deployment
5.3.4 金絲雀發布
5.3.5 回滾Deployment控制器下的應用發布
5.3.6 擴容和縮容
5.4 DaemonSet控制器
5.4.1 創建DaemonSet資源對象
5.4.2 更新DaemonSet對象
5.5 Job控制器
5.5.1 創建Job對象
5.5.2 並行式Job
5.5.3 Job擴容
5.5.4 刪除Job
5.6 CronJob控制器
5.6.1 創建CronJob對象
5.6.2 CronJob的控制機制
5.7 ReplicationController
5.8 Pod中斷預算
5.9 本章小結
6 Service和Ingress
6.1 Service資源及其實現模型
6.1.1 Service資源概述
6.1.2 虛擬IP和服務代理
6.2 Service資源的基礎應用
6.2.1 創建Service資源
6.2.2 向Service對象請求服務
6.2.3 Service會話粘性
6.3 服務發現
6.3.1 服務發現概述
6.3.2 服務發現方式:環境變量
6.3.3 ClusterDNS和服務發現
6.3.4 服務發現方式:DNS
6.4 服務暴露
6.4.1 Service類型
6.4.2 NodePort類型的Service資源
6.4.3 LoadBalancer類型的Service資源
6.4.4 ExternalName Service
6.5 Headless類型的Service資源
6.5.1 創建Headless Service資源
6.5.2 Pod資源發現
6.6 Ingress資源
6.6.1 Ingress和Ingress Controller
6.6.2 創建Ingress資源
6.6.3 Ingress資源類型
6.6.4 部署Ingress控制器(Nginx)
6.7 案例:使用Ingress發布tomcat
6.7.1 准備名稱空間
6.7.2 部署tomcat實例
6.7.3 創建Service資源
6.7.4 創建Ingress資源
6.7.5 配置TLS Ingress資源
6.8 本章小結
7 存儲卷與數據持久化
7.1 存儲卷概述
7.1.1 Kubernetes支持的存儲卷類型
7.1.2 存儲卷的使用方式
7.2 臨時存儲卷
7.2.1 emptyDir存儲卷
7.2.2 gitRepo存儲卷
7.3 節點存儲卷hostPath
7.4 網絡存儲卷
7.4.1 NFS存儲卷
7.4.2 RBD存儲卷
7.4.3 GlusterFS存儲卷
7.4.4 Cinder存儲卷
7.5 持久存儲卷
7.5.1 創建PV
7.5.2 創建PVC
7.5.3 在Pod中使用PVC
7.5.4 存儲類
7.5.5 PV和PVC的生命周期
7.6 downwardAPI存儲卷
7.6.1 環境變量式元數據注入
7.6.2 存儲卷式元數據注入
7.7 本章小結
8 配置容器應用:ConfigMap和Secret
8.1 容器化應用配置方式
8.2 通過命令行參數配置容器應用
8.3 利用環境變量配置容器應用
8.4 應用程序配置管理及ConfigMap資源
8.4.1 創建ConfigMap對象
8.4.2 向Pod環境變量傳遞ConfigMap對象鍵值數據
8.4.3 ConfigMap存儲卷
8.4.4 容器應用重載新配置
8.4.5 使用ConfigMap資源的注意事項
8.5 Secret資源
8.5.1 Secret概述
8.5.2 創建Secret資源
8.5.3 Secret存儲卷
8.5.4 imagePullSecret資源對象
8.6 本章小結
9 StatefulSet控制器
9.1 StatefulSet概述
9.1.1 Stateful應用和Stateless應用
9.1.2 StatefulSet控制器概述
9.1.3 StatefulSet的特性
9.2 StatefulSet基礎應用
9.2.1 創建StatefulSet對象
9.2.2 Pod資源標識符及存儲卷
9.3 StatefulSet資源擴縮容
9.4 StatefulSet資源升級
9.4.1 滾動更新
9.4.2 暫存更新操作
9.4.3 金絲雀部署
9.4.4 分段更新
9.4.5 其他話題
9.5 案例:etcd集群
9.5.1 創建Service資源
9.5.2 etcd StatefulSet
9.6 本章小結
10 認證、授權與准入控制
10.1 訪問控制概述
10.1.1 用戶賬戶與用戶組
10.1.2 認證、授權與准入控制基礎
10.2 服務賬戶管理與應用
10.2.1 Service Account自動化
10.2.2 創建服務賬戶
10.2.3 調用imagePullSecret資源對象
10.3 X.509數字證書認證
10.3.1 Kubernetes中的SSL/TLS認證
10.3.2 客戶端配置文件kubeconfig
10.3.3 TLS bootstrapping機制
10.4 基於角色的訪問控制:RBAC
10.4.1 RBAC授權插件
10.4.2 Role和RoleBinding
10.4.3 ClusterRole和ClusterRoleBinding
10.4.4 聚合型ClusterRole
10.4.5 面向用戶的內建ClusterRole
10.4.6 其他的內建ClusterRole和ClusterRoleBinding
10.5 Kubernetes Dashboard
10.5.1 部署HTTPS通信的Dashboard
10.5.2 配置token認證
10.5.3 配置kubeconfig認證
10.6 准入控制器與應用示例
10.6.1 LimitRange資源與LimitRanger准入控制器
10.6.2 ResourceQuota資源與准入控制器
10.6.3 PodSecurityPolicy
10.7 本章小結
11 網絡模型與網絡策略
11.1 Kubernetes網絡模型及CNI插件
11.1.1 Docker容器的網絡模型
11.1.2 Kubernetes網絡模型
11.1.3 Pod網絡的實現方式
11.1.4 CNI插件及其常見的實現
11.2 flannel網絡插件
11.2.1 flannel的配置參數
11.2.2 VxLAN后端和direct routing
11.2.3 host-gw后端
11.3 網絡策略
11.3.1 網絡策略概述
11.3.2 部署Canal提供網絡策略功能
11.3.3 配置網絡策略
11.3.4 管控入站流量
11.3.5 管控出站流量
11.3.6 隔離名稱空間
11.3.7 網絡策略應用案例
11.4 Calico網絡插件
11.4.1 Calico工作特性
11.4.2 Calico系統架構
11.4.3 Calico部署要點
11.4.4 部署Calico提供網絡服務和網絡策略
11.4.5 客戶端工具calicoctl
11.5 本章小結
12 Pod資源調度
12.1 Kubernetes調度器概述
12.1.1 常用的預選策略
12.1.2 常用的優選函數
12.2 節點親和調度
12.2.1 節點硬親和性
12.2.2 節點軟親和性
12.3 Pod資源親和調度
12.3.1 位置拓撲
12.3.2 Pod硬親和調度
12.3.3 Pod軟親和調度
12.3.4 Pod反親和調度
12.4 污點和容忍度
12.4.1 定義污點和容忍度
12.4.2 管理節點的污點
12.4.3 Pod對象的容忍度
12.4.4 問題節點標識
12.5 Pod優選級和搶占式調度
12.6 本章小結
13 Kubernetes系統擴展
13.1 自定義資源類型(CRD)
13.1.1 創建CRD對象
13.1.2 自定義資源格式驗證
13.1.3 子資源
13.1.4 使用資源類別
13.1.5 多版本支持
13.1.6 自定義控制器基礎
13.2 自定義API Server
13.2.1 自定義API Server概述
13.2.2 APIService對象
13.3 Kubernetes集群高可用
13.3.1 etcd高可用
13.3.2 Controller Manager和Scheduler高可用
13.4 Kubernetes的部署模式
13.4.1 關鍵組件
13.4.2 常見的部署模式
13.5 容器時代的DevOps概述
13.5.1 容器:DevOps協作的基礎
13.5.2 泛型端到端容器應用程序生命周期工作流
13.5.3 基於Kubernetes的DevOps
13.6 本章小結
14 資源指標及HPA控制器
14.1 資源監控及資源指標
14.1.1 資源監控及Heapster
14.1.2 新一代監控架構
14.2 資源指標及其應用
14.2.1 部署metrics-server
14.2.2 kubectl top命令
14.3 自定義指標與Prometheus
14.3.1 Prometheus概述
14.3.2 部署Prometheus監控系統
14.3.3 自定義指標適配器k8s-prometheus-adapter
14.4 自動彈性縮放
14.4.1 HPA概述
14.4.2 HPA(v1)控制器
14.4.3 HPA(v2)控制器
14.5 本章小結
15 Helm程序包管理器
15.1 Helm基礎
15.1.1 Helm的核心術語
15.1.2 Helm架構
15.1.3 安裝Helm Client
15.1.4 安裝Tiller server
15.1.5 Helm快速入門
15.2 Helm Charts
15.2.1 Charts文件組織結構
15.2.2 Chart.yaml文件組織格式
15.2.3 Charts中的依賴關系
15.2.4 模板和值
15.2.5 其他需要說明的話題
15.2.6 自定義Charts
15.3 Helm實踐:部署EFK日志管理系統
15.3.1 ElasticSearch集群
15.3.2 日志采集代理fluentd
15.3.3 可視化組件Kibana
15.4 本章小結
附錄A 部署Kubernetes集群
A.1 准備部署Kubernetes集群
A.2 部署Kubernetes集群
A.3 從集群中移除節點
A.4 重新生成用於節點加入集群的認證命令
附錄B 部署GlusterFS及Heketi
B.1 部署GlusterFS集群
B.2 部署Heketi
思維導圖
防止博客圖床圖片失效,防止圖片源站外鏈:
http://www.processon.com/chart_image/5e5b3a9be4b0c037b6081dfa.png)
思維導圖在線編輯鏈接: