本書(shū)以實(shí)踐為主, 內(nèi)容涵蓋容器技術(shù)、Kubernetes核心資源以及基于Kubernetes的企業(yè)級(jí)實(shí)踐。從容器基礎(chǔ)知識(shí)開(kāi)始, 由淺入深, 向讀者介紹Kubernetes各個(gè)方面的知識(shí), 并提供許多實(shí)際項(xiàng)目和應(yīng)用場(chǎng)景, 以幫助讀者更好地理解和掌握這些概念。全書(shū)分為3部分, 第1部分講解容器技術(shù), 這是理解Kubernetes的必要基礎(chǔ), 主要介紹容器的定義、創(chuàng)建和管理容器、容器的網(wǎng)絡(luò)和存儲(chǔ)等方面的知識(shí)。第2部分深入講解Kubernetes的核心資源, 包括Pod、Deployment、Service、Ingress等, 將逐步介紹這些資源的定義、使用和管理方法, 并提供實(shí)際場(chǎng)景來(lái)說(shuō)明這些概念。第3部分是基于Kubernetes的企業(yè)實(shí)踐, 將通過(guò)實(shí)際的企業(yè)案例, 向讀者介紹如何使用Kubernetes解決實(shí)際問(wèn)題, 包括如何使用Kubernetes進(jìn)行應(yīng)用程序部署、監(jiān)控、自動(dòng)化擴(kuò)縮容和灰度發(fā)布等操作。
親愛(ài)的讀者,很高興向你介紹我的新書(shū)《Kubernetes從入門到DevOps企業(yè)應(yīng)用實(shí)戰(zhàn)》。在過(guò)去的幾年中,我一直從事容器和Kubernetes的相關(guān)工作,通過(guò)實(shí)踐和培訓(xùn),我意識(shí)到學(xué)習(xí)Kubernetes對(duì)于企業(yè)的發(fā)展至關(guān)重要。
從2013年Docker容器推出到2014年Kubernetes開(kāi)源項(xiàng)目推出至今,我接觸容器技術(shù)也有了差不多十年時(shí)間,在學(xué)習(xí)和實(shí)踐期間,深刻感受到Kubernetes這個(gè)工具如果完全靠自學(xué),還是有一定難度的,為了使讀者盡快掌握這個(gè)工具,我推出了Kubernetes系列視頻課程,受到了廣大學(xué)員的歡迎,并入選了工信部人才交流中心認(rèn)證課程,本書(shū)就是在系列課程的基礎(chǔ)上編撰完成的。
本書(shū)的特點(diǎn)是以實(shí)踐為主,內(nèi)容涵蓋容器技術(shù)、Kubernetes核心資源以及基于Kubernetes的企業(yè)實(shí)踐。我將使用循序漸進(jìn)、逐步深入的方式,從容器的基礎(chǔ)知識(shí)開(kāi)始,向讀者介紹Kubernetes各個(gè)方面的知識(shí),并輔之以操作范例和應(yīng)用場(chǎng)景,書(shū)中還給出了大量有實(shí)用價(jià)值的案例和項(xiàng)目,既可以幫助讀者深入理解Kubernetes的概念和原理,又能夠在實(shí)際工作中進(jìn)行 實(shí)踐。
第1~3章講解容器技術(shù),這是理解Kubernetes的必要基礎(chǔ),重點(diǎn)介紹容器的定義、創(chuàng)建和管理容器、容器網(wǎng)絡(luò)和存儲(chǔ)等方面的知識(shí)。
第4章講解如何使用Kubeadm和二進(jìn)制文件安裝高可用Kubernetes集群。
第5~12章講解Kubernetes的核心資源,包括Pod、Deployment、Service、Ingress等資源的定義、使用和管理方法,以及實(shí)際應(yīng)用場(chǎng)景。
第13~20章講解基于Kubernetes的企業(yè)實(shí)踐,主要通過(guò)實(shí)際項(xiàng)目或案例介紹如何使用Kubernetes解決實(shí)際問(wèn)題,包括使用Kubernetes進(jìn)行應(yīng)用程序的部署、容器云平臺(tái)的構(gòu)建、流量治理、監(jiān)控、自動(dòng)化擴(kuò)縮容和灰度發(fā)布等。
本書(shū)提供了豐富的資源文件,包括Kubernetes的官方文檔、Kubernetes的學(xué)習(xí)資源、Kubernetes的工具和插件等。這些資源可以幫助讀者更好地學(xué)習(xí)和理解Kubernetes,可掃描以下二維碼獲。
Kubernetes配書(shū)資源.part1 Kubernetes配書(shū)資源.part2 Kubernetes配書(shū)資源.part3 配書(shū)資源使用說(shuō)明
本書(shū)基于Kubernetes 1.27新版本編寫(本書(shū)的內(nèi)容也適合1.20之后的所有版本),從零基礎(chǔ)開(kāi)始,涵蓋理論知識(shí)、企業(yè)案例,以及自動(dòng)化運(yùn)維DevOps體系和一些大廠架構(gòu)設(shè)計(jì)思路,適合云原生領(lǐng)域的從業(yè)者、Kubernetest初學(xué)者、運(yùn)維和開(kāi)發(fā)人員使用,也可作為企業(yè)內(nèi)訓(xùn)、培訓(xùn)機(jī)構(gòu)和大中專院校的教學(xué)用書(shū)。
如果你對(duì)Kubernetes和本書(shū)有任何問(wèn)題或建議,請(qǐng)隨時(shí)聯(lián)系我,你還可以在Gitee上找到我做的項(xiàng)目(聯(lián)系方式參見(jiàn)下載文件)。
最后,感謝清華大學(xué)出版社的編輯王金柱老師的全力支持和指導(dǎo),以及我的妻子王靜女士和各位技術(shù)同行的支持和鼓勵(lì)。希望這本書(shū)能夠幫助各位讀者學(xué)習(xí)和使用Kubernetes,從而推動(dòng)企業(yè)的發(fā)展和進(jìn)步。
韓先超
2023年5月
第1章 Docker初探 1
1.1 Docker概述 1
1.1.1 Docker是什么 1
1.1.2 Docker的版本 2
1.1.3 學(xué)習(xí)Docker的方式 2
1.2 Docker的組成與特點(diǎn) 2
1.2.1 Docker的組成 2
1.2.2 Docker的特點(diǎn) 4
1.3 安裝和配置Docker 5
1.3.1 配置主機(jī)名 5
1.3.2 關(guān)閉Firewalld防火墻 6
1.3.3 關(guān)閉SELinux 6
1.3.4 配置時(shí)間同步 7
1.3.5 編寫計(jì)劃任務(wù) 7
1.3.6 重啟crond服務(wù)使計(jì)劃任務(wù)生效 8
1.3.7 安裝基礎(chǔ)軟件包 8
1.3.8 安裝Docker-CE 9
1.3.9 修改內(nèi)核參數(shù) 11
1.3.10 配置Docker鏡像加速器 13
1.4 Docker鏡像與容器 14
1.4.1 Docker鏡像 14
1.4.2 Docker容器 17
1.5 案例:通過(guò)Docker部署Nginx服務(wù) 24
1.5.1 基于CentOS鏡像運(yùn)行一個(gè)Docker容器 24
1.5.2 查看Docker容器是否正常運(yùn)行 24
1.5.3 在Docker中安裝Nginx容器 25
1.5.4 在Docker容器中通過(guò)yum安裝Nginx 26
1.6 本章小結(jié) 28
第2章 Dockerfile構(gòu)建企業(yè)級(jí)鏡像 29
2.1 Dockerfile語(yǔ)法詳解 29
2.2 Dockerfile構(gòu)建企業(yè)級(jí)鏡像 43
2.2.1 案例:Dockerfile構(gòu)建Nginx鏡像 43
2.2.2 案例:Dockerfile構(gòu)建Tomcat鏡像 48
2.3 本章小結(jié) 50
第3章 Docker私有鏡像倉(cāng)庫(kù)Harbor 51
3.1 Harbor的概念及證書(shū)簽發(fā) 51
3.2 安裝Harbor 53
3.3 Harbor圖形界面使用說(shuō)明 57
3.4 測(cè)試使用Harbor私有鏡像倉(cāng)庫(kù) 59
3.5 Harbor高可用 62
3.6 本章小結(jié) 63
第4章 Kubeadm快速搭建Kubernetes集群 64
4.1 初始化實(shí)驗(yàn)環(huán)境 65
4.1.1 配置靜態(tài)IP地址 67
4.1.2 配置機(jī)器主機(jī)名 68
4.1.3 配置主機(jī)hosts文件 68
4.1.4 配置控制節(jié)點(diǎn)到工作節(jié)點(diǎn)無(wú)密碼登錄 68
4.1.5 關(guān)閉交換分區(qū) 69
4.1.6 修改機(jī)器內(nèi)核參數(shù) 70
4.1.7 關(guān)閉Firewalld防火墻 72
4.1.8 關(guān)閉SELinux 72
4.1.9 配置安裝Docker和Containerd需要的阿里云的在線yum源 73
4.1.10 配置安裝Kubernetes組件需要的阿里云的在線yum源 74
4.1.11 配置時(shí)間同步 75
4.1.12 安裝Docker-CE和Containerd服務(wù) 76
4.2 安裝Kubernetes集群 80
4.2.1 安裝初始化Kubernetes集群需要的軟件包 80
4.2.2 Kubeadm初始化Kubernetes集群 81
4.2.3 配置Kubectl的配置文件config 83
4.3 擴(kuò)容Kubernetes集群 85
4.3.1 添加第一個(gè)工作節(jié)點(diǎn) 85
4.3.2 添加第二個(gè)工作節(jié)點(diǎn) 86
4.4 安裝Kubernetes網(wǎng)絡(luò)插件Calico 88
4.4.1 安裝Calico 88
4.4.2 Calico的配置 89
4.4.3 calico-kube-controllers解析 94
4.5 測(cè)試Kubernetes集群是否健康 95
4.5.1 測(cè)試在Kubernetes中創(chuàng)建的Pod是否可以正常訪問(wèn)網(wǎng)絡(luò) 95
4.5.2 測(cè)試CoreDNS是否正常 96
4.5.3 延長(zhǎng)證書(shū) 96
4.6 本章小結(jié) 99
第5章 Kubernetes核心資源Pod 100
5.1 Pod是什么 100
5.1.1 Pod基本介紹 100
5.1.2 Pod如何管理多個(gè)容器 101
5.1.3 Pod網(wǎng)絡(luò) 102
5.1.4 Pod存儲(chǔ) 102
5.2 Pod的工作方式 103
5.2.1 自主式Pod 103
5.2.2 控制器管理的Pod 107
5.3 如何創(chuàng)建一個(gè)Pod資源 111
5.3.1 通過(guò)YAML文件創(chuàng)建Pod資源 112
5.3.2 Pod資源清單編寫技巧 113
5.3.3 創(chuàng)建一個(gè)完整的Pod資源 141
5.3.4 和Pod相關(guān)的命令解讀 144
5.4 nodeName和nodeSelector 146
5.4.1 nodeName實(shí)例 147
5.4.2 nodeSelector實(shí)例 148
5.5 親和性、污點(diǎn)和容忍度 149
5.5.1 節(jié)點(diǎn)親和性 149
5.5.2 Pod親和性和反親和性 154
5.5.3 污點(diǎn)和容忍度 160
5.6 Pod生命周期和健康探測(cè) 165
5.6.1 初始化容器initcontainer 166
5.6.2 存活探測(cè) 167
5.6.3 就緒探測(cè) 170
5.6.4 容器鉤子 172
5.7 本章小結(jié) 174
第6章 ReplicaSet和Deployment控制器管理Pod 175
6.1 ReplicaSet如何管理Pod 176
6.1.1 ReplicaSet概述 176
6.1.2 ReplicaSet資源清單文件的編寫技巧 176
6.2 ReplicaSet管理Pod案例:部署Guestbook留言板 178
6.3 ReplicaSet管理Pod實(shí)例:擴(kuò)容、縮容、更新 180
6.4 Deployment如何管理Pod 183
6.4.1 Deployment概述 183
6.4.2 Deployment如何管理ReplicaSet和Pod 184
6.5 Deployment資源清單文件的編寫技巧 185
6.5.1 查看Deployment資源對(duì)象YAML文件的組成 186
6.5.2 查看Deployment下的spec字段 186
6.6 Deployment管理Pod案例解析 188
6.7 Deployment管理Pod:擴(kuò)容和縮容 190
6.7.1 電商網(wǎng)站訪問(wèn)量急增——擴(kuò)容Pod 190
6.7.2 電商網(wǎng)站淡季或業(yè)務(wù)低峰期——縮容Pod 191
6.8 基于Deployment實(shí)現(xiàn)Pod滾動(dòng)更新——WebApp應(yīng)用版本升級(jí) 192
6.9 本章小結(jié) 195
第7章 Service四層負(fù)載均衡 197
7.1 Service的概念與原理 197
7.1.1 Service基本介紹 197
7.1.2 Kubernetes集群中的3類IP地址 198
7.2 創(chuàng)建Service資源 200
7.2.1 創(chuàng)建Service資源的方法 200
7.2.2 案例:用YAML文件創(chuàng)建Service資源 200
7.2.3 查看定義Service資源需要的字段 202
7.2.4 Service的4種Type類型 203
7.2.5 Service的端口定義 206
7.2.6 創(chuàng)建Service:類型是ClusterIP 207
7.2.7 創(chuàng)建Service:類型是NodePort 209
7.2.8 創(chuàng)建Service:類型是ExternalName 212
7.3 本章小結(jié) 215