精通 Kubernetes (Mastering Kubernetes)

Gigi Sayfan

  • 出版商: 人民郵電
  • 出版日期: 2020-07-01
  • 售價: $534
  • 貴賓價: 9.5$507
  • 語言: 簡體中文
  • 頁數: 300
  • 裝訂: 平裝
  • ISBN: 7115536112
  • ISBN-13: 9787115536112
  • 相關分類: Kubernetes
  • 此書翻譯自: Mastering Kubernetes

立即出貨

  • 精通 Kubernetes (Mastering Kubernetes)-preview-1
  • 精通 Kubernetes (Mastering Kubernetes)-preview-2
精通 Kubernetes (Mastering Kubernetes)-preview-1

買這商品的人也買了...

商品描述

本書通過理論與實踐相結合,全方位地介紹Kubernetes這一容器編排的理想工具。
本書共14章,涉及的主題包括理解Kubernetes架構,創建Kubernetes集群,
監控、日誌記錄和故障排除,高可用性和可靠性,配置Kubernetes安全、限制和賬戶,
使用關鍵Kubernetes資源,管理Kubernetes存儲,使用Kubernetes運行有狀態應用程序,
滾動更新、可伸縮性和配額,*級Kubernetes網絡,在雲平台和集群聯邦中運行Kubernetes,
自定義Kubernetes API和插件,操作Kubernetes軟件包管理器以及Kubernetes的未來。
本書綜合考慮不同環境和用例,使讀者了解如何創建大型系統並將其部署在Kubernetes上。
在各章節主題中,讀者提供了豐富的實踐案例分析,娓娓道來,引人入勝。
本書可以作為Kubernetes的實踐參考手冊,聚焦於設計和管理Kubernetes集群,
為開發人員、運維工程師詳細介紹了Kubernetes所提供的功能和服務。  

作者簡介

Gigi Sayfan

是VRVIU的&席系統架構師,他致力於開發軟件專業20多年,
涉及的領域包括即時消息傳送、變形、芯片製造過程控制、
用於遊戲控制台的嵌入式多媒體應用、大腦啟發式機器學習,
定制瀏覽器開發,3D分佈式Web服務遊戲平台以及*近的物聯網/傳感器。
他擅長C、C++、C#、Python、Java等,以用於Windows(3.11到7)。
他的技術專長包括數據庫、分佈式系統、非正統用戶界面。  

目錄大綱

目錄:  
第1章理解Kubernetes架構1  
1.1理解容器編排1  
1.1.1物理機、虛擬機和容器1  
1.1.2雲端容器2  
1.1.3服務器運行模式2  
1.2 Kubernetes的相關概念3  
1.2.1集群4  
1.2 .2節點4  
1.2.3主節點4  
1.2.4 Pod 4  
1.2.5標籤5  
1.2.6註解5  
1.2.7標籤選擇器5  
1.2.8副本控制器和副本集6  
1.2.9服務6  
1.2.10存儲卷6  
1.2.11有狀態服務集7  
1.2.12密鑰對象7  
1.2.13名稱7  
1.2.14命名空間8  
1.3深入了解Kubernetes架構8  
1.4 Kubernetes API 10  
1.4.1 Kubernetes API 10  
1.4.2自動伸縮API 10  
1.5 Kubernetes組件11  
1.5.1主組件11  
1.5.2節點組件12  
1.6 Kubernetes運行時13  
1.6.1運行時接口13  
1.6.2 Docker 14  
1.6.3 Rkt 15  
1.6.4 Hyper Container 16  
1.7持續集成與部署17  
1.7.1 CI/CD流水線17  
1.7.2為Kubernetes設計CI/CD流水線18  
1.8總結19 
 
第2章創建Kubernetes集群20  
2.1用Minikube快速創建單節點集群20  
2.1.1準備工作20  
2.1.2創建集群22  
2.1.3故障排除23  
2.1.4檢查集群24  
2.1.5部署服務25  
2.1.6用儀表板檢查集群26  
2.2用Kubeadm創建多節點集群26  
2.2.1準備工作26  
2.2.2組建Vagrant虛擬機集群26  
2.2.3安裝所需軟件27  
2.2.4創建集群29  
2.2.5建立Pod網絡30  
2.2.6添加工作節點31  
2.3在GCP、AWS和Azure雲端創建集群32  
2.3.1雲提供商接口32  
2.3.2 GCP 33  
2.3.3 AWS 33  
2.3.4 Azure 34  
2.4從頭開始創建裸金屬集群34  
2.4.1裸金屬用例34  
2.4.2什麼時候應該考慮創建裸金屬集群35  
2.5進程35  
2.6使用虛擬私有云基礎設施35  
2.7總結36  

第3章監控、日誌記錄和故障排除37  
3.1用Heapster監控Kubernetes 37  
3.2 InfluxDB後端39  
3.2.1存儲模式40  
3.2.2 Grafana可視化42  
3.3儀表板的性能分析43  
3.3.1頂視圖44  
3.3.2添加中央日誌49  
3.4檢測節點問題51  
3.4.1節點問題檢測器52  
3.4.2 DaemonSet 52  
3.4.3節點問題檢測DaemonSet 52  
3.5故障排除方案53  
3.6設計健壯的系統53  
3.6.1硬件故障54  
3.6.2配額、份額和限制54  
3.6.3 Bad Configuration 55  
3.6.4成本和性能56  
3.7總結57  

第4章高可用性和可靠性58  
4.1高可用性概念58  
4.1.1冗餘58  
4.1.2熱交換59  
4.1.3領導選舉59  
4.1.4智能負載均衡59  
4.1.5冪等59  
4.1.6自愈60  
4.2高可用性*佳實踐60  
4.2.1創建高可用性集群60  
4.2.2確保節點可靠61  
4.2.3保護集群狀態62  
4.2.4保護數據66  
4.2 .5運行冗餘API服務器67  
4.2.6用Kubernetes運行領導選舉67  
4.2.7使預演環境高度可用69  
4.2.8測試高可用性70  
4.3集群在線升級71  
4.3.1滾動升級71  
4.3.2藍綠升級73  
4.3.3管理數據契約變更73  
4.3.4數據遷移74  
4.3.5檢測過期API 74  
4.4大型集群的性能、成本和設計權衡75  
4.4.1可用性要求75  
4.4.2盡力而為75  
4.4.3維護窗口76  
4.4.4快速恢復76  
4.4.5零停機時間77  
4.4.6性能和數據的一致性78  
4.5總結78  

第5章配置Kubernetes安全、限制和賬戶80  
5.1理解Kubernetes安全挑戰80  
5.1.1節點挑戰81  
5.1.2網絡挑戰81  
5.1.3鏡像挑戰82  
5.1.4配置和部署挑戰83  
5.1.5 Pod和容器挑戰84  
5.1.6組織、文化和過程挑戰84  
5.2加固Kubernetes 85  
5.2.1理解Kubernetes的服務賬戶85  
5.2.2訪問API服務器87  
5.2.3保護Pod 90  
5.2.4管理網絡策略95  
5.2.5使用密鑰對象97  
5.3運行多用戶集群100  
5.3.1多用戶集群的案例100  
5.3.2安全多租戶使用命名空間101  
5.3.3避免命名空間陷阱102  
5.4總結102 
 
第6章使用關鍵Kubernetes資源103  
6.1設計Hue平台103  
6.1.1定義Hue的範圍103  
6.1.2規劃工作流107  
6.2利用Kubernetes構建Hue平台107  
6.2 .1有效使用kubectl 107  
6.2.2理解kubectl資源配置文件108  
6.2.3在Pod中部署長時間運行的微服務110  
6.3內外部服務分離114  
6.3.1部署內部服務114  
6.3.2創建Hue-reminders服務115  
6.3.3從外部公開服務116  
6.4使用命名空間限制訪問118  
6.5啟動Job 120  
6.5.1並行運行作業121  
6.5.2清理已完成的作業122  
6.5.3調度計劃作業122  
6.6 kubectl獲得Pod 123  
6.7混合非集群組件124  
6.7.1集群網絡外部組件124  
6.7.2集群網絡內部組件125  
6.7.3用Kubernetes管理Hue平台125  
6.7.4使用就緒探針管理依賴126  
6.8為有序啟動Pod採用初始容器127  
6.9用Kubernetes進化Hue平台129  
6.9.1 Hue在企業中的運用129  
6.9.2用Hue推進科學129  
6.9.3用Hue實施教育129  
6.10總結129 
 
第7章管理Kubernetes存儲131  
7.1持久存儲卷指導131  
7.1.1存儲卷131  
7.1.2創建持久存儲卷135  
7.1.3持續存儲卷聲明137  
7.1.4按使用存儲卷掛載聲明138  
7.1.5存儲類139  
7.1.6從端到端演示持久存儲卷140  
7.2公共存儲卷類型——GCE、AWS和Azure 144  
7.2.1 AWS彈性塊存儲(EBS) 144  
7.2.2 AWS彈性文件系統(EFS) 145  
7.2.3 GCE持久化磁盤145  
7.2.4 Azure數據盤146  
7.2.5 Azure文件存儲147  
7.3 Kubernetes中的GlusterFS和Ceph存儲卷148  
7.3.1使用GlusterFS 148  
7.3.2使用Ceph 151  
7.4 Flocker作為集群容器數據存儲捲管理器153  
7.5將企業存儲集成到Kubernetes 155  
7.6總結156  

第8章使用Kubernetes運行有狀態的應用程序157  
8.1 Kubernetes中的有狀態與無狀態應用157  
8.1.1理解分佈式數據密集型應用的本質157  
8.1.2為什麼在Kubernetes中管理狀態158  
8.1.3為什麼在Kubernetes以外管理狀態158  
8.2共享環境變量與DNS記錄158  
8.2.1通過DNS訪問外部數據存儲159  
8.2.2通過環境變量訪問外部數據存儲159  
8.2.3使用冗餘內存狀態161  
8.2.4使用DaemonSet進行冗餘持久存儲161  
8.2.5應用持久存儲卷聲明161  
8.2.6利用有狀態服務集162  
8.3在Kubernetes運行Cassandra集群163  
8.3.1 Cassandra快速入門164  
8.3.2 Cassandra Docker鏡像164  
8.3.3連接Kubernetes和Cassandra 169  
8.3.4創建Cassandra無源服務172  
8.3.5使用有狀態服務集創建Cassandra集群172  
8.3.6使用副本控制器分佈Cassandra 176  
8.3.7利用DaemonSet分佈Cassandra 179  
8.4總結180  

第9章滾動更新、可伸縮性和配額181  
9.1水平Pod自動伸縮181  
9.1.1聲明水平Pod自動伸縮器182  
9.1.2自定義度量183  
9.1.3使用Kubectl自動伸縮185  
9.2用自動伸縮進行滾動更新187  
9.3用限制和配額處理稀缺資源188  
9.3 .1啟用資源配額189  
9.3.2資源配額類型189  
9.3.3配額範圍191  
9.3.4請求與限制192  
9.3.5使用配額192  
9.4選擇與管理集群性能197  
9.4.1選擇節點類型197  
9.4.2選擇存儲解決方案197  
9.4.3交易成本與響應時間198  
9.4.4有效使用多節點配置198  
9.4.5利用彈性雲資源198  
9.4.6考慮Hyper.sh 200  
9.5挑戰Kubernetes性能極限200  
9.5.1提高Kubernetes的性能和可擴展性201  
9.5.2測量Kubernetes的性能和可伸縮性202  
9.5.3按規模測試Kubernetes 205  
9.6總結206  

第10章*級Kubernetes網絡207  
10.1理解Kubernetes網絡模型207  
10.1.1容器內通信(容器-容器) 207  
10.1.2 Pod間通信(Pod-Pod) 208  
10.1.3 Pod-服務通信208  
10.1 .4外部訪問208  
10.1.5 Kubernetes網絡與Docker網絡209  
10.1.6查找與發現210  
10.1.7 Kubernetes網絡插件212  
10.2 Kubernetes網絡解決方案217  
10.2.1裸金屬集群橋接217  
10.2.2 Contiv 218  
10.2.3 Open vSwitch 218  
10.2.4 Nuage網絡VCS 219  
10.2.5 Canal 219  
10.2.6 Flannel 220  
10.2.7 Calico工程221  
10.2. 8 Romana 222  
10.2.9 Weave Net 222  
10.3有效使用網絡策略223  
10.4負載均衡選項224  
10.4.1外部負載均衡器225  
10.4.2服務負載均衡器228  
10.4.3入口228  
10.5編寫自己的CNI插件231  
10.6總結236  

第11章在雲平台和集群聯邦中運行Kubernetes 237  
11.1理解集群聯邦237  
11.1.1集群聯邦的重要用例238  
11.1.2聯邦控制平面240  
11.1.3聯邦資源241  
11.1.4高難度部分245  
11.2管理Kubernetes集群聯邦248  
11.3從底層建立集群聯邦248  
11.3.1初始設置249  
11.3.2使用官方hyperkube鏡像249  
11.3.3運行聯邦控制平面249  
11.3.4用聯邦註冊Kubernetes集群250  
11.3.5更新KubeDNS 251  
11.3.6關閉聯邦251  
11.3.7用Kubefed建立集群聯邦251  
11.4運行聯邦工作負載257  
11.4.1創建聯邦服務257  
11.4.2添加後端Pod 258  
11.4.3驗證公共DNS記錄258  
11.4.4發現聯邦服務259  
11.4.5後端Pod和整個集群的故障處理261  
11.4.6故障排除261  
11.5總結262  

第12章自定義Kubernetes API和插件264  
12.1使用Kubernetes API 264  
12.1.1理解OpenAPI 264  
12.1.2設置代理265  
12.1.3直接探索Kubernetes API 265  
12.1.4通過Kubernetes API創建Pod 268  
12.1.5通過Python客戶端訪問Kubernetes API 269  
12.2擴展Kubernetes API 275  
12.2.1理解第三方資源的結構276  
12.2.2開發第三方資源276  
12.2.3整合第三方資源277  
12.3編寫Kubernetes插件278  
12.4編寫授權插件284  
12.4.1編寫准入控制接口284  
12.4.2編寫自定義度量插件287  
12.4.3編寫卷插件288  
12.5總結291 
 
第13章操作Kubernetes軟件包管理器292  
13.1理解Helm 292  
13.1.1 Helm的動機292  
13.1.2 Helm架構293  
13.1.3 Helm組件293  
13.1.4 Helm與Helm-Classic 294  
13.2使用Helm 294  
13.2.1安裝Helm 294  
13.2.2尋找圖表295  
13.2.3安裝包297  
13.2.4使用安裝包庫302  
13.2.5使用Helm管理圖表303  
13.3創建自己的圖表304  
13.3.1 Chart.yaml文件304  
13.3.2圖表元數據文件306  
13.3.3管理圖表依賴306  
13.3.4使用模板和值309  
13.4總結312
  
第14章Kubernetes的未來313  
14.1未來發展道路313  
14.1.1 Kubernetes的發行版和里程碑313  
14.1.2 Kubernetes的特別興趣小組和工作組314  
14.2面臨的挑戰314  
14.2.1捆綁價值314  
14.2.2 Docker Swarm 315  
14.2.3 Mesos/Mesosphere 315  
14.2. 4雲平台315  
14.2.5 AWS 315  
14.2.6 Azure 316  
14.2.7阿里雲316  
14.3 Kubernetes勢頭316  
14.3.1社區316  
14.3.2 GitHub 316  
14.3.3會議316  
14.3.4思維共享317  
14.3.5生態系統317  
14.3.6公有云提供商317  
14.4教育和培訓318  
14.5動態插件318  
14.6總結319