《Linux云計算Kubernetes實戰》從實用的角度出發,詳細介紹了Kubernetes的相關理論與應用,包括Kubernetes組件概念、Kubernetes云計算平臺配置實戰、Kubernetes企業網絡Flannel實戰、Kubernetes核心組件services實戰、Kubernetes Pod容器升級實戰、Kubernetes NFS持久化存儲實戰、Kubernetes CephFS持久化存儲實戰、Kubernetes Ceph RBD持久化存儲實戰、Prometheus監控Kubernetes實戰、Kubernetes etcd服務實戰、Kubernetes HAProxy高可用集群和Kubernetes配置故障實戰。 《Linux云計算Kubernetes實戰》免費提供與書中內容相關的視頻課程講解,以指導讀者深入地進行學習,詳見前言中的說明。 《Linux云計算Kubernetes實戰》既可作為高等學校計算機相關專業的教材,也可作為系統管理員、網絡管理員、Linux運維工程師及網站開發、測試、設計等人員的參考用書。
本叢書融入作者十多年Linux運維經驗,盡是干貨。通過對Linux技術領域重要知識點的剖析及簡單明了的實例介紹,幫助讀者在較短的時間內掌握Linux云計算相關運維技能,成為專業的Linux高級技術人才。書中結構清晰,內容全面,由淺入深,講解很詳細,是難得的將理論 概念 實戰結合于一體的書籍,十分適合作為手邊的實戰參考書,相信能給讀者帶來新的想法和收獲。
Linux 是當今三大操作系統(Windows、macOS、Linux)之一,其創始人是林納斯·托瓦茲①。
林納斯·托瓦茲 21 歲時用 4 個月的時間首次創建了 Linux 內核,于 1991 年 10 月 5 日正式對
外發布。Linux 系統繼承了 UNIX 系統以網絡為核心的思想,是一個性能穩定的多用戶網絡操
作系統。
20 世紀 90 年代至今,互聯網飛速發展,IT 引領時代潮流,而 Linux 系統是一切 IT 的基石,
其應用場景涉及方方面面,小到個人電腦、智能手環、智能手表、智能手機等設備,大到服務
器、云計算、大數據、人工智能、數字貨幣、區塊鏈等領域。
為什么寫《Linux 云計算Kubernetes 實戰》這本書?這要從我的經歷說起。我出生在貴
州省一個貧困的小山村,從小經歷了砍柴、放牛、挑水、做飯,日出而作、日落而歸的樸素生
活,看到父母一輩子都生活在小山村里,沒有見過大城市,所以從小立志要走出大山,要讓父
母過上幸福的生活。正是這樣的信念讓我不斷地努力。大學畢業至今,我在北漂的 IT 運維
路上已走過了十多年:從初創小公司到國有企業、機關單位,再到圖吧、研修網、京東商城等
IT 企業,分別擔任過 Linux 運維工程師、Linux 運維架構師、運維經理,直到現在創辦的京峰教
育培訓機構。
一路走來,很感謝生命中遇到的每一個人,是大家的幫助,讓我不斷地進步和成長,也讓
我明白了一個人活著不應該只為自己和自己的家人,還要考慮到整個社會,哪怕只能為社會貢
獻一點點價值,人生就是精彩的。
為了幫助更多的人通過技術改變自己的命運,我決定和團隊同事一起編寫這本書。雖然市
面上關于 Linux 的書籍有很多,但是很難找到一本關于 Kubernetes 組件概念、Kubernetes 平臺配
置實戰、Kubernetes 企業網絡 Flannel 實戰、Kubernetes 核心組件 services 實戰、Kubernetes Pod
容器升級實戰、Kubernetes NFS 持久化存儲實戰、Kubernetes CephFS 持久化存儲實戰、
① 創始人全稱是 Linus Benedict Torvalds(林納斯·本納第克特·托瓦茲)。
II Linux 云計算Kubernetes 實戰
Kubernetes Ceph RBD 持久化存儲實戰、Prometheus 監控 Kubernetes 實戰、Kubernetes etcd 服務
實戰、Kubernetes HAProxy高可用集群和 Kubernetes 配置故障實戰等的詳細、全面的主流技術
書籍,這就是編寫本書的初衷。
配套資源
程序代碼、面試題目、學習路徑、工具手冊、簡歷模板等資料,請掃描下方二維碼下載
或者到清華大學出版社官方網站本書頁面下載。
配套資源
作者精心錄制了與 Linux 開發相關的視頻課程(3000 分鐘,144 集),便于讀者自學。掃
描封底文泉課堂刮刮卡中的二維碼進行綁定后即可觀看(注:視頻內容僅供學習參
考,與書中內容并非一一對應)。
雖然已花費大量的時間和精力核對書中的代碼和內容,但難免存在紕漏,懇請讀者批評
指正。
吳光科
2023 年 4 月
前 言
致謝
ACKNOWLEDGEMENT
感謝 Linux 之父 Linus Benedict Torvalds,他不僅創造了 Linux 系統,還影響了整個開源世界,
也影響了我的一生。
感謝我親愛的父母,含辛茹苦地撫養我們兄弟三人,是他們對我無微不至的照顧,讓我有
更多的精力和動力去工作,去幫助更多的人。
感謝吳俊、李芬倫、陳權志、胡智超、焦偉、曾地長、孫峰、黃超、趙敬星、曾令軍、張
杰、丁劉倩、劉剄波、班風侖及其他摯友多年來對我的信任和鼓勵。
感謝騰訊課堂所有的課程經理及平臺老師,感謝 51CTO 副總裁一休及全體工作人員對我及
京峰教育培訓機構的大力支持。
感謝京峰教育培訓機構的每位學員對我的支持和鼓勵,希望他們都學有所成,最終成為社
會的中流砥柱。感謝京峰教育首席運營官蔡正雄,感謝京峰教育培訓機構的辛老師、朱老師、
張老師、關老師、兮兮老師、小江老師、可馨老師等全體老師和助教、班長、副班長,是他們
的大力支持,讓京峰教育能夠幫助更多的學員。
最后要感謝我的愛人黃小紅,是她一直在背后默默地支持我、鼓勵我,讓我有更多的精力
和時間去完成這本書。
吳光科
2023 年 4 月
第 1 章 Kubernetes 組件概念 . 1
1.1 云計算概念 .1
1.2 云計算技術的分類 1
1.3 Kubernetes 入門及概念介紹.2
1.4 Kubernetes 平臺組件概念 3
1.5 Kubernetes 工作原理剖析 4
1.6 Pod 概念剖析 7
1.7 label 概念剖析.8
1.8 Replication Controller 概念剖析 8
1.9 service 概念剖析9
1.10 node 概念剖析 .10
1.11 Kubernetes volume 概念剖析.10
1.12 Deployment 概念剖析.11
1.13 DaemonSet 概念剖析11
1.14 StatefulSet 概念剖析.11
1.15 ConfigMap 概念剖析 12
1.16 Secrets 概念剖析13
1.17 CronJob 概念剖析 14
1.18 Kubernetes 證書剖析和制作實戰 .15
第 2 章 Kubernetes 云計算平臺配置實戰 . 25
2.1 Kubernetes 節點 hosts 及防火墻設置25
2.2 Linux 內核參數設置和優化 .26
2.3 Docker 虛擬化案例實戰.26
2.4 Kubernetes 添加部署源27
2.5 Kubernetes Kubeadm 案例實戰.28
2.6 Kubernetes master 節點實戰 .30
2.7 Kubernetes 集群節點和刪除.31
2.8 Kubernetes 節點網絡配置 31
2.9 Kubernetes 開啟 IPVS 模式 39
2.10 Kubernetes 集群故障排錯 40
VI Linux 云計算Kubernetes 實戰
2.11 Kubernetes 集群節點移除 40
2.12 etcd 分布式案例操作 .40
第 3 章 Kubernetes 企業網絡 Flannel 實戰. 42
3.1 Flannel 工作原理.42
3.2 Flannel 架構介紹.43
3.3 Kubernetes Dashboard UI 實戰 44
3.4 Kubernetes YAML 文件詳解.47
3.5 kubectl 常見指令操作49
3.6 Kubernetes 本地私有倉庫實戰.50
第 4 章 Kubernetes 核心組件 service 實戰. 52
4.1 Kubernetes service 概念52
4.2 Kubernetes service 實現方式.53
4.3 service 實戰:ClusterIP 案例演練 54
4.4 service 實戰:NodePort 案例演練.55
4.5 service 實戰:LoadBalancer 案例演練 56
4.6 service 實戰:Ingress 案例演練58
4.7 Kubernetes Traefik 案例實戰 63
第 5 章 Kubernetes 容器升級實戰 73
5.1 Kubernetes 容器升級概念 73
5.2 Kubernetes 容器升級實現方式.73
5.3 Kubernetes 容器升級測試 75
5.4 Kubernetes 容器升級驗證 76
5.5 Kubernetes 容器升級回滾 77
5.6 Kubernetes 滾動升級和回滾原理 .78
第 6 章 Kubernetes NFS 持久化存儲實戰 . 82
6.1 Kubernetes 服務運行狀態 82
6.2 Kubernetes 存儲系統 .83
6.3 Kubernetes 存儲綁定的概念.84
6.4 PV 的訪問模式84
6.5 Kubernetes NFS 靜態存儲模式86
6.6 PVC 存儲卷創建 .87
6.7 Nginx 整合 PV 存儲卷 .88
6.8 Kubernetes NFS 動態存儲模式90
6.9 NFS 插件配置實戰 91
第 7 章 Kubernetes CephFS 持久化存儲實戰 . 96
7.1 Kubernetes CephFS 靜態存儲模式.96
目錄 VII
7.2 PV 存儲卷創建96
7.3 PVC 存儲卷創建 .97
7.4 Nginx 整合 CephFS PV 存儲卷 .98
7.5 Kubernetes CephFS 動態存儲模式. 100
7.6 CephFS 動態插件配置實戰 101
第 8 章 Kubernetes Ceph RBD 持久化存儲實戰 . 105
8.1 Kubernetes Ceph RBD 靜態存儲模式. 105
8.2 PV 存儲卷創建 105
8.3 PVC 存儲卷創建 . 107
8.4 Nginx 整合 Ceph PV 存儲卷 . 107
8.5 Kubernetes Ceph RBD 動態存儲模式. 109
8.6 Ceph RBD 插件配置實戰 . 110
第 9 章 Prometheus 監控 Kubernetes 實戰 117
9.1 Prometheus 監控優點 . 117
9.2 Prometheus 監控特點 . 118
9.3 Prometheus 組件實戰 . 118
9.4 Prometheus 體系結構 . 119
9.5 Prometheus 工作流程 . 120
9.6 Prometheus 和 Kubernetes 背景. 120
9.7 Kubernetes 集群部署 node-exporter 121
9.8 Kubernetes 集群部署 Prometheus 122
9.9 Kubernetes 集群部署 Grafana . 129
9.10 Kubernetes 配置和整合 Prometheus 131
9.11 Kubernetes Prometheus 報警設置 . 135
9.12 Kubernetes Alertmanager 實戰. 136
9.13 Alertmanager 實戰部署. 140
第 10 章 Kubernetes etcd 服務實戰 146
10.1 etcd 和 ZK 服務概念 146
10.2 etcd的使用場景 147
10.3 etcd讀寫性能 147
10.4 etcd工作原理 147
10.5 etcd選主. 148
10.6 etcd日志復制 148
10.7 etcd安全性 149
10.8 etcd使用案例 150
10.9 etcd接口使用 150
VIII Linux 云計算Kubernetes 實戰
第 11 章 Kubernetes HAProxy 高可用集群 . 151
11.1 Kubernetes 高可用集群概念. 151
11.2 Kubernetes 高可用工作原理. 151
11.3 HAProxy 安裝配置. 152
11.4 配置 Keepalived 服務. 156
11.5 Keepalived master 配置實戰 157
11.6 Keepalived Backup 配置實戰 158
11.7 創建 HAProxy 檢查腳本. 160
11.8 HAProxy Keepalived 驗證 160
11.9 初始化 master 集群 161
11.10 Kubernetes Dashboard UI 實戰 163
第 12 章 Kubernetes 配置故障實戰 166
12.1 etcd 配置中心故障錯誤一 166
12.2 etcd 配置中心故障錯誤二 167
12.3 Pod infrastructure 故障錯誤三. 167
12.4 Docker 虛擬化故障錯誤四 . 168
12.5 Docker 虛擬化故障錯誤五 . 168
12.6 Dashboard API 故障錯誤六 168
12.7 Dashboard 網絡訪問故障錯誤七 169