本書精選Kubernetes的硬核知識,幫助讀者快速進階和積累Kubernetes實戰(zhàn)經(jīng)驗。本書共8章,主要包括認識Kubernetes,快速構建Kubernetes集群,Kubernetes核心對象使用,Kubernetes容器編排實踐,Kubernetes系統(tǒng)運維與故障處理,構建Kubernetes高可用集群,Kubernetes監(jiān)控與告警(Prometheus Grafana)和基于Kubernetes的CI/CD項目綜合實踐(GitLab Harbor Jenkins)。
本書前三章可以幫助讀者快速掌握Kubernetes核心知識和高頻操作;第4、第5章幫助讀者快速掌握Kubernetes的進階使用;第6~8章是Kubernetes及其外圍系統(tǒng)的綜合應用,幫助讀者快速積累實戰(zhàn)經(jīng)驗。
本書既可以作為云原生及相關行業(yè)從業(yè)者的技術參考書,也可以作為高等院校計算機、云計算和大數(shù)據(jù)相關專業(yè)的教材。
一本書講透k8s基礎,k8s集群的安裝、配置、管理、監(jiān)控,k8s集群的自動化部署、運維與容器編排,豐富的實踐案例幫助讀者快速積累k8s實戰(zhàn)經(jīng)驗。
配套資源豐富,包括關鍵示例程序源代碼、配置文件、數(shù)據(jù)文件,以及配套的《實踐手冊》免費電子書、系列高清課程視頻,方便讀者參考學習。
前言
Kubernetes是由Google開源的一個容器編排(Orchestration)系統(tǒng),它實現(xiàn)了集群中容器管理、部署、遷移和擴展的自動化。自2014年開源以來,Kubernetes經(jīng)過多個版本的迭代和完善,已經(jīng)廣泛用于生產(chǎn)環(huán)境。Google、Microsoft、Amazon、阿里和騰訊等知名企業(yè),都提供云上的Kubernetes服務,阿里自身的核心應用更是全部運行在Kubernetes之上。Linux基金會報告顯示,2021年,云原生技術首次超過Linux自身,成為最熱門的開源技術,而Kubernetes作為云原生技術的代表,則更是熱門中的熱門。
因此,對于IT從業(yè)人員而言,Kubernetes是一個重要的加分項和加薪項,Kubernetes學得越早,掌握得越好,就越會成為自身的一個優(yōu)勢。然而從學習的角度而言,Kubernetes涉及的概念新、概念多,而且需要很多的前置知識,例如Linux、網(wǎng)絡、虛擬化、Docker容器等;而且Kubernetes是面向整個集群的容器編排,在架構、運行機制和使用上更為復雜;再加上Kubernetes是一個底層基礎設施,幾乎所有的應用都需要進行遷移,這些都增加了Kubernetes的學習難度。
為此,筆者根據(jù)自身在Kubernetes上的研發(fā)和使用經(jīng)驗,編寫了《Kubernetes快速進階與實戰(zhàn)》這本書,本書共8章,主要包括認識Kubernetes、快速構建Kubernetes集群、Kubernetes核心對象使用、Kubernetes容器編排實踐、Kubernetes系統(tǒng)運維與故障處理、構建Kubernetes高可用集群、Kubernetes監(jiān)控與告警(Prometheus Grafana)和基于Kubernetes的CI/CD項目綜合實踐(GitLab Harbor Jenkins)。此外,本書還提供配套的《實踐手冊》免費電子書和虛擬機使用等免費高清視頻資源供讀者參考學習。
這不是一本大而全的字典書,本書只講解Kubernetes的硬核知識,旨在幫助讀者快速入門和進階Kubernetes,快速積累Kubernetes實戰(zhàn)經(jīng)驗,少走彎路、少踩坑。其中,前三章可以幫助讀者快速掌握Kubernetes核心知識、上手Kubernetes高頻操作;第4、第5章幫助讀者快速掌握Kubernetes的進階使用;第6~8章是Kubernetes及其外圍系統(tǒng)的綜合應用,幫助讀者快速積累實戰(zhàn)經(jīng)驗。如果把學習Kubernetes比作穿越叢林,那么本書將給學習者最精簡和有用的裝備,提供有效的訓練,快速積累實戰(zhàn)經(jīng)驗;指出一條可行的路徑,為學習者在有限的時間內(nèi)穿越叢林提供保障;進而可以利用這些裝備,自行去開發(fā)和探索新的路線。
本書既可以作為云原生及相關行業(yè)從業(yè)者的技術參考書,也可以作為高等院校計算機、云計算和大數(shù)據(jù)相關專業(yè)的教材。
感謝機械工業(yè)出版社的策劃編輯王斌(IT大公雞),在長達數(shù)月的時間內(nèi),我們就本書的整體結構和內(nèi)容細節(jié)進行了多次細致而又高效的交流,他從專業(yè)的角度給予了很多中肯的建議,在此特別表示感謝!
感謝一直以來,關心幫助我成長的家人、老師、領導、同學和朋友們!
時間緊、任務急,書中疏漏、錯誤之處在所難免,如果讀者在閱讀過程中有任何疑問,可以通過作者郵箱:spark_aishu@126.com聯(lián)系作者。
艾 叔
2022.08
文艾(艾叔),解放軍理工大學-奇虎360云計算聯(lián)合實驗室原技術負責人,系統(tǒng)分析師,51CTO學院嚴選講師;具有多年Linux下的開發(fā)、運維和教學經(jīng)驗,對Linux下的Docker、Kubernetes、Hadoop和Spark等系統(tǒng)有深入研究和豐富的實踐經(jīng)驗;帶領團隊完成了華為、中興和奇虎360等公司的多個校企合作Linux相關項目;指導零基礎本科生參加科技創(chuàng)新競賽和編程大賽,共獲得全國特等獎1次,一等獎2次,二等獎2次;通過艾叔編程公眾號和網(wǎng)易云課堂開設了一系列Linux相關的免費課程,已幫助8萬多名學習者入門編程并深受好評。
目錄
前言
第1章 認識Kubernetes1
1.1 Kubernetes概述1
1.1.1 Kubernetes的定義和背景1
1.1.2 Kubernetes與Docker3
1.1.3 Kubernetes與云原生4
1.2 Kubernetes 核心概念5
1.2.1 resourceKubernetes的組成
元素5
1.2.2 Kubernetes object定義
Kubernetes運行狀態(tài)10
1.2.3 Pod實現(xiàn)Kubernetes中容器的
邏輯組合11
1.2.4 RC/RS控制Pod副本個數(shù)12
1.2.5 Deployment在Kubernetes中
部署應用13
1.2.6 Service以統(tǒng)一的方式對外
提供服務13
1.2.7 其他核心概念14
1.3 Kubernetes 系統(tǒng)架構15
1.3.1 Control Plane15
1.3.2 Node17
1.3.3 Addons18
1.3.4 kubectl18
1.4 高效學習Kubernetes19
1.4.1 Kubernetes快速學習路線圖19
1.4.2 利用本書資源高效學習Kubernetes
(重點必讀)19
1.4.3 本書所使用的軟件和版本22
第2章 快速構建Kubernetes集群23
2.1 Kubernetes集群規(guī)劃23
2.2 準備Kubernetes集群節(jié)點23
2.2.1 定制VMware虛擬機(實踐1)23
2.2.2 小化安裝CentOS 8(實踐2)24
2.2.3 遠程登錄與文件傳輸(實踐3)24
2.2.4 ssh遠程無密碼登錄24
2.2.5 Docker安裝與使用25
2.3 kubeadm安裝與系統(tǒng)配置30
2.4 快速構建Control Plane35
2.5 為Kubernetes增加Node節(jié)點38
第3章 Kubernetes核心對象使用44
3.1 使用YAML創(chuàng)建Kubernetes
resource44
3.2 Pod典型使用47
3.3 RC/RS基本操作(實踐4)51
3.4 Deployment典型使用(實踐5)51
3.5 Service典型使用(實踐6)52
第4章 Kubernetes容器編排實踐53
4.1 Pod容器調(diào)度53
4.2 Pod多容器運行(實踐 7)55
4.3 Pod容器數(shù)據(jù)持久化存儲(PersistentVolume)56
4.3.1 安裝NFS56
4.3.2 創(chuàng)建pv和pvc58
4.3.3 創(chuàng)建Deployment使用持久化存儲60
4.4 Ingress實現(xiàn)統(tǒng)一訪問Pod容器
服務62
4.4.1 創(chuàng)建購物網(wǎng)站的Deployment62
4.4.2 創(chuàng)建購物網(wǎng)站的Service64
4.4.3 創(chuàng)建購書網(wǎng)站的Deployment65
4.4.4 創(chuàng)建購書網(wǎng)站的Service66
4.4.5 創(chuàng)建ingress controller66
4.4.6 創(chuàng)建Ingress68
4.4.7 按路徑統(tǒng)一訪問Pod容器的服務70
4.5 Pod容器自動伸縮(HPA)71
4.5.1 編寫HPA YAML文件71
4.5.2 創(chuàng)建監(jiān)控對象和HPA73
4.5.3 HPA伸縮算法74
4.5.4 HPA自動伸縮測試74
第5章 Kubernetes系統(tǒng)運維與故障
處理78
5.1 Pod容器的高可用實踐
(實踐8)78
5.2 Kubernetes節(jié)點性能數(shù)據(jù)采集78
5.3 使用k8dash快速監(jiān)控Kubernetes80
5.4 Kubernetes系統(tǒng)運維常用操作83
5.4.1 增加kubectl節(jié)點83
5.4.2 停止Kubernetes組件Pod中的
容器84
5.4.3 重置Kubernetes集群節(jié)點85
5.4.4 查看和設置Kubernetes組件的啟動
參數(shù)85
5.4.5 運行Pod容器命令88
5.4.6 查看Pod容器網(wǎng)卡名89
5.4.7 復制文件到Pod容器89
5.4.8 查看指定進程監(jiān)聽的端口90
5.5 查看Kubernetes日志90
5.5.1 系統(tǒng)日志90
5.5.2 Kubernetes組件日志91
5.5.3 Pod啟動信息和容器日志91
5.6 Kubernetes故障處理92
5.6.1 處理故障Pod92
5.6.2 容器故障調(diào)試94
第6章 構建Kubernetes高可用集群96
6.1 Kubernetes 高可用集群的架構與
規(guī)劃96
6.2 構建高可用負載均衡器(Keepalived LVS)98
6.2.1 構建LB節(jié)點99
6.2.2 構建RS節(jié)點102
6.2.3 構建Client節(jié)點105
6.2.4 測試LB HA106
6.3 構建基于Keepalived的Kubernetes
高可用集群110
6.3.1 配置Keepalived110
6.3.2 構建Control Plane111
6.3.3 構建Node節(jié)點114
6.3.4 Kubernetes 高可用性測試115
第7章 Kubernetes監(jiān)控與告警 (Prometheus Grafana)119
7.1 Kubernetes系統(tǒng)組件指標
(Metrics)119
7.2 Prometheus監(jiān)控Kubernetes125
7.2.1 Prometheus架構和核心概念125
7.2.2 Prometheus 快速部署(kube-prometheus)127
7.2.3 Prometheus 監(jiān)控機制與配置131
7.2.4 Prometheus 監(jiān)控 Kubernetes
核心組件140
7.2.5 Prometheus 監(jiān)控 Kubernetes
指定對象(Exporter)145
7.3 Grafana展示Kubernetes監(jiān)控
數(shù)據(jù)152
7.3.1 Grafana 快速訪問152
7.3.2 Grafana 展示 Prometheus 數(shù)據(jù)源
數(shù)據(jù)(Kubernetes)154
7.3.3 Grafana 展示其他數(shù)據(jù)源的數(shù)據(jù)160
7.3.4 Grafana 配置的持久化存儲164
7.4 Kubernetes 監(jiān)控告警171
7.4.1 Prometheus 告警機制171
7.4.2 查看Prometheus 告警171
7.4.3 Prometheus告警規(guī)則(Rule)175
7.4.4 配置Prometheus 告警發(fā)送郵件182
7.4.5 Grafana 告警配置與郵件通知188
第8章 基于Kubernetes的CI/CD
項目綜合實踐(GitLab
Harbor Jenkins)198
8.1 CI/CD核心概念與基礎198
8.2 太空入侵者游戲CI/CD方案
設計199
8.2.1 系統(tǒng)架構與集群規(guī)劃199
8.2.2 CI/CD開發(fā)流程200
8.3 構建太空入侵者游戲開發(fā)與測試
環(huán)境201
8.3.1 構建承載和測試節(jié)點devt
虛擬機201
8.3.2 構建開發(fā)節(jié)點spaceinv容器202
8.3.3 構建代碼管理倉庫GitLab205
8.3.4 構建容器鏡像倉庫Harbor217
8.3.5 構建持續(xù)集成工具J