百人牛牛棋牌
Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(第4版)
  • 推薦2
  • 收藏4
  • 瀏覽683

Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(第4版)

龔正 , 吳治輝 , 崔秀龍 , 閆健勇 (作者)  張國霞 (責任編輯)

  • 叢  書:博文視點云原生精品叢書
  • 書  號:978-7-121-36235-4
  • 出版日期:2019-06-01
  • 頁  數:824
  • 開  本:
  • 出版狀態:上市銷售
  • 維護人:張國霞

相關圖書

電商運營(第2版)

阿里巴巴商學院 (作者)

“電商精英系列教程”自從2011年問世以來,隨著電子商務大潮在國內的興起,成為全國范圍內頗具影響力的電子商務系列教程,是幾代電商人和院校學員學習的“綠色記憶”。...

 

社交電商運營全攻略

有贊學院講師團 (作者)

隨著新零售的大潮在國內興起,有贊學院決定將自身的經驗分享給大家,本書是由有贊學院集合其優秀講師撰寫而成。從趨勢環境到落地實操,從要點解剖到案例分析,不僅會讓讀者...

 

淘寶天貓店數據化運營與實操

高嗣龍 (作者)

本書作者高嗣龍(花名:卡卡)是一位在運營崗位實操多年的電商從業者,是全網五金冠店鋪朵朵云的運營經理,同時也是阿里巴巴淘寶大學官方的認證講師。作者的從業背景保證了...

 

Python量化交易

張楊飛 (作者)

本書本著能讓新手快速上手量化交易的原則,循序漸進地講解了量化交易入門所需要的知識,以及大量的開發技巧與交易技巧,具有很強的實用性。vn.py是機構級別的量化交易...

¥99.00

超級標簽:重塑用戶心智的傳播之道

閆躍龍 (作者)

品牌形象對于企業來說越來越重要,但是樹立良好的品牌形象,在當前這樣復雜的輿論環境下并不容易。本書將做品牌形象地比喻成做超級標簽,樹品牌就是貼標簽,扭轉不利的品牌...

 

智慧供應鏈:智能化時代的供應鏈管理與變革

文丹楓 周鵬輝 (作者)

本書對智能化時代背景下,企業轉型智慧供應鏈的現實意義、轉型邏輯、切入點、戰略規劃、 路徑方案等進行了全方位的深入分析,為企業推進供應鏈轉型升級、搭建智慧供應鏈...

 
Kubernetes是由谷歌開源的Docker容器集群管理系統,為容器化的應用提供了資源調度、部署運行、服務發現、擴容及縮容等一整套功能。本書從架構師、開發人員和運維人員的角度,闡述了Kubernetes的基本概念、實踐指南、核心原理、開發指導、運維指南、新特性演進等內容,圖文并茂、內容豐富、由淺入深、講解全面;并圍繞在生產環境中可能出現的問題,給出了大量的典型案例,比如安全配置方案、網絡方案、共享存儲方案、高可用方案及Trouble Shooting技巧等,有很強的實戰指導意義。本書內容隨著Kubernetes的版本更新不斷完善,目前涵蓋了Kubernetes從1.0到1.14版本的主要特性,努力為Kubernetes用戶提供全方位的Kubernetes技術指南。本書源碼已上傳至GitHub的kubeguide/K8sDefinitiveGuide-V4-Sourcecode目錄,可自行下載本書源碼進行練習。
無論是對于軟件工程師、測試工程師、運維工程師、軟件架構師、技術經理,還是對于資深IT人士,本書都極具參考價值。
Kubernetes權威指南全新升級,基于K8s 1.14,目錄升級,提供源碼下載,碼農翻身利器,共赴浪潮之巔,容器領域Number.1圖書
龔正
HPE高級顧問,擁有近20年IT從業經歷,在云計算、大數據、大型企業級應用等領域擁有豐富的咨詢規劃、架構設計和實施經驗,負責過多個大型云平臺的規劃和建設,是電信、金融、互聯網等領域的資深專家,也是《Kubernetes權威指南:企業級容器云實戰》等書作者。

吳治輝
HPE資深架構師,擁有近20年軟件研發經驗,專注于電信軟件和云計算方面的軟件研發,擁有豐富的大型項目架構設計經驗,是業界少有的具備很強Coding能力的資深架構師,也是《ZeroC Ice權威指南》《架構解密:從分布式到微服務》《Kubernetes權威指南:企業級容器云實戰》《區塊鏈輕松上手》等書作者。

崔秀龍
Istio、Kubernetes項目成員;Istio.io主要貢獻者之一;《Kubernetes權威指南:企業級容器云實戰》《深入淺出Istio:Service Mesh快速入門與實踐》等書作者;自動化、馬拉松愛好者。

閆健勇
HPE高級項目經理、總架構師,擁有近20年電信行業系統建設經驗,主導了多項電信大型系統的架構設計和管理,對于云計算和大數據在電信行業中的應用擁有豐富的經驗,也是《Kubernetes權威指南:企業級容器云實戰》等書作者。

目錄

第1章 Kubernetes入門 1
1.1 Kubernetes是什么 2
1.2 為什么要用Kubernetes 5
1.3 從一個簡單的例子開始 6
1.3.1 環境準備 7
1.3.2 啟動MySQL服務 7
1.3.3 啟動Tomcat應用 10
1.3.4 通過瀏覽器訪問網頁 12
1.4 Kubernetes的基本概念和術語 13
1.4.1 Master 16
1.4.2 Node 16
1.4.3 Pod 19
1.4.4 Label 24
1.4.5 Replication Controller 28
1.4.6 Deployment 31
1.4.7 Horizontal Pod Autoscaler 34
1.4.8 StatefulSet 36
1.4.9 Service 37
1.4.10 Job 45
1.4.11 Volume 45
1.4.12 Persistent Volume 49
1.4.13 Namespace 51
1.4.14 Annotation 52
1.4.15 ConfigMap 53
1.4.16 小結 54
第2章 Kubernetes安裝配置指南 55
2.1 系統要求 56
2.2 使用kubeadm工具快速安裝Kubernetes集群 57
2.2.1 安裝kubeadm和相關工具 57
2.2.2 kubeadm config 58
2.2.3 下載Kubernetes的相關鏡像 59
2.2.4 運行kubeadm init命令安裝Master 59
2.2.5 安裝Node,加入集群 61
2.2.6 安裝網絡插件 62
2.2.7 驗證Kubernetes集群是否安裝完成 63
2.3 以二進制文件方式安裝Kubernetes集群 64
2.3.1 Master上的etcd、kube-apiserver、kube-controller-manager、kube-scheduler服務 66
2.3.2 Node上的kubelet、kube-proxy服務 71
2.4 Kubernetes集群的安全設置 73
2.4.1 基于CA簽名的雙向數字證書認證方式 73
2.4.2 基于HTTP Base或Token的簡單認證方式 78
2.5 Kubernetes集群的網絡配置 80
2.6 內網中的Kubernetes相關配置 80
2.6.1 Docker Private Registry(私有Docker鏡像庫) 80
2.6.2 kubelet配置 81
2.7 Kubernetes的版本升級 81
2.7.1 二進制升級 81
2.7.2 使用kubeadm進行集群升級 82
2.8 Kubernetes核心服務配置詳解 84
2.8.1 公共配置參數 84
2.8.2 kube-apiserver啟動參數 85
2.8.3 kube-controller-manager啟動參數 97
2.8.4 kube-scheduler啟動參數 107
2.8.5 kubelet啟動參數 113
2.8.6 kube-proxy啟動參數 128
2.9 CRI(容器運行時接口)詳解 132
2.9.1 CRI概述 132
2.9.2 CRI的主要組件 133
2.9.3 Pod和容器的生命周期管理 133
2.9.4 面向容器級別的設計思路 135
2.9.5 嘗試使用新的Docker-CRI來創建容器 136
2.9.6 CRI的進展 137
2.10 kubectl命令行工具用法詳解 137
2.10.1 kubectl用法概述 137
2.10.2 kubectl子命令詳解 139
2.10.3 kubectl參數列表 142
2.10.4 kubectl輸出格式 143
2.10.5 kubectl操作示例 145
第3章 深入掌握Pod 149
3.1 Pod定義詳解 150
3.2 Pod的基本用法 156
3.3 靜態Pod 161
3.4 Pod容器共享Volume 162
3.5 Pod的配置管理 165
3.5.1 ConfigMap概述 165
3.5.2 創建ConfigMap資源對象 165
3.5.3 在Pod中使用ConfigMap 173
3.5.4 使用ConfigMap的限制條件 179
3.6 在容器內獲取Pod信息(Downward API) 180
3.6.1 環境變量方式:將Pod信息注入為環境變量 180
3.6.2 環境變量方式:將容器資源信息注入為環境變量 182
3.6.3 Volume掛載方式 184
3.7 Pod生命周期和重啟策略 186
3.8 Pod健康檢查和服務可用性檢查 187
3.9 玩轉Pod調度 190
3.9.1 Deployment或RC:全自動調度 193
3.9.2 NodeSelector:定向調度 194
3.9.3 NodeAffinity:Node親和性調度 197
3.9.4 PodAffinity:Pod親和與互斥調度策略 198
3.9.5 Taints和Tolerations(污點和容忍) 202
3.9.6 Pod Priority Preemption:Pod優先級調度 206
3.9.7 DaemonSet:在每個Node上都調度一個Pod 209
3.9.8 Job:批處理調度 211
3.9.9 Cronjob:定時任務 215
3.9.10 自定義調度器 219
3.10 Init Container(初始化容器) 220
3.11 Pod的升級和回滾 224
3.11.1 Deployment的升級 225
3.11.2 Deployment的回滾 231
3.11.3 暫停和恢復Deployment的部署操作,以完成復雜的修改 234
3.11.4 使用kubectl rolling-update命令完成RC的滾動升級 236
3.11.5 其他管理對象的更新策略 239
3.12 Pod的擴縮容 240
3.12.1 手動擴縮容機制 240
3.12.2 自動擴縮容機制 241
3.13 使用StatefulSet搭建MongoDB集群 264
3.13.1 前提條件 264
3.13.2 創建StatefulSet 265
3.13.3 查看MongoDB集群的狀態 269
3.13.4 StatefulSet的常見應用場景 271
第4章 深入掌握Service 276
4.1 Service定義詳解 277
4.2 Service的基本用法 279
4.2.1 多端口Service 282
4.2.2 外部服務Service 283
4.3 Headless Service 284
4.3.1 自定義SeedProvider 285
4.3.2 通過Service動態查找Pod 286
4.3.3 Cassandra集群中新節點的自動添加 289
4.4 從集群外部訪問Pod或Service 291
4.4.1 將容器應用的端口號映射到物理機 291
4.4.2 將Service的端口號映射到物理機 292
4.5 DNS服務搭建和配置指南 294
4.5.1 在創建DNS服務之前修改每個Node上kubelet的啟動參數 296
4.5.2 創建CoreDNS應用 297
4.5.3 服務名的DNS解析 301
4.5.4 CoreDNS的配置說明 302
4.5.5 Pod級別的DNS配置說明 304
4.6 Ingress:HTTP 7層路由機制 306
4.6.1 創建Ingress Controller和默認的backend服務 307
4.6.2 定義Ingress策略 311
4.6.3 客戶端訪問http://mywebsite.com/demo 313
4.6.4 Ingress的策略配置技巧 316
4.6.5 Ingress的TLS安全設置 320
第5章 核心組件運行機制 326
5.1 Kubernetes API Server原理解析 327
5.1.1 Kubernetes API Server概述 327
5.1.2 API Server架構解析 330
5.1.3 獨特的Kubernetes Proxy API接口 334
5.1.4 集群功能模塊之間的通信 336
5.2 Controller Manager原理解析 337
5.2.1 Replication Controller 338
5.2.2 Node Controller 339
5.2.3 ResourceQuota Controller 341
5.2.4 Namespace Controller 343
5.2.5 Service Controller與Endpoints Controller 343
5.3 Scheduler原理解析 344
5.4 kubelet運行機制解析 348
5.4.1 節點管理 349
5.4.2 Pod管理 349
5.4.3 容器健康檢查 351
5.4.4 cAdvisor資源監控 352
5.5 kube-proxy運行機制解析 354
第6章 深入分析集群安全機制 358
6.1 API Server認證管理 359
6.2 API Server授權管理 361
6.2.1 ABAC授權模式詳解 362
6.2.2 Webhook授權模式詳解 365
6.2.3 RBAC授權模式詳解 368
6.3 Admission Control 384
6.4 Service Account 388
6.5 Secret私密憑據 393
6.6 Pod的安全策略配置 396
6.6.1 PodSecurityPolicy的工作機制 397
6.6.2 PodSecurityPolicy配置詳解 399
6.6.3 Pod的安全設置詳解 406
第7章 網絡原理 410
7.1 Kubernetes網絡模型 411
7.2 Docker網絡基礎 413
7.2.1 網絡命名空間 413
7.2.2 Veth設備對 416
7.2.3 網橋 419
7.2.4 iptables和Netfilter 421
7.2.5 路由 424
7.3 Docker的網絡實現 426
7.4 Kubernetes的網絡實現 435
7.4.1 容器到容器的通信 435
7.4.2 Pod之間的通信 436
7.5 Pod和Service網絡實戰 439
7.6 CNI網絡模型 454
7.6.1 CNM模型 454
7.6.2 CNI模型 455
7.6.3 在Kubernetes中使用網絡插件 467
7.7 Kubernetes網絡策略 467
7.7.1 網絡策略配置說明 468
7.7.2 在Namespace級別設置默認的網絡策略 470
7.7.3 NetworkPolicy的發展 472
7.8 開源的網絡組件 472
7.8.1 Flannel 472
7.8.2 Open vSwitch 477
7.8.3 直接路由 483
7.8.4 Calico容器網絡和網絡策略實戰 486
第8章 共享存儲原理 508
8.1 共享存儲機制概述 509
8.2 PV詳解 510
8.2.1 PV的關鍵配置參數 511
8.2.2 PV生命周期的各個階段 515
8.3 PVC詳解 516
8.4 PV和PVC的生命周期 518
8.4.1 資源供應 518
8.4.2 資源綁定 519
8.4.3 資源使用 519
8.4.4 資源釋放 519
8.4.5 資源回收 519
8.5 StorageClass詳解 521
8.5.1 StorageClass的關鍵配置參數 521
8.5.2 設置默認的StorageClass 524
8.6 動態存儲管理實戰:GlusterFS 524
8.6.1 準備工作 525
8.6.2 創建GlusterFS管理服務容器集群 525
8.6.3 創建Heketi服務 528
8.6.4 為Heketi設置GlusterFS集群 530
8.6.5 定義StorageClass 533
8.6.6 定義PVC 534
8.6.7 Pod使用PVC的存儲資源 536
8.7 CSI存儲機制詳解 537
8.7.1 CSI的設計背景 538
8.7.2 CSI存儲插件的關鍵組件和部署架構 539
8.7.3 CSI存儲插件的使用示例 540
8.7.4 CSI的發展 556
第9章 Kubernetes開發指南 560
9.1 REST簡述 561
9.2 Kubernetes API詳解 563
9.2.1 Kubernetes API概述 563
9.2.2 Kubernetes API版本的演進策略 570
9.2.3 API Groups(API組) 571
9.2.4 API REST的方法說明 573
9.2.5 API Server響應說明 575
9.3 使用Java程序訪問Kubernetes API 577
9.3.1 Jersey 577
9.3.2 Fabric8 590
9.3.3 使用說明 591
9.3.4 其他客戶端庫 615
9.4 Kubernetes API的擴展 616
9.4.1 使用CRD擴展API資源 617
9.4.2 使用API聚合機制擴展API資源 626
第10章 Kubernetes集群管理 635
10.1 Node的管理 636
10.1.1 Node的隔離與恢復 636
10.1.2 Node的擴容 637
10.2 更新資源對象的Label 638
10.3 Namespace:集群環境共享與隔離 639
10.3.1 創建Namespace 639
10.3.2 定義Context(運行環境) 640
10.3.3 設置工作組在特定Context環境下工作 641
10.4 Kubernetes資源管理 643
10.4.1 計算資源管理 645
10.4.2 資源配置范圍管理(LimitRange) 655
10.4.3 資源服務質量管理(Resource QoS) 662
10.4.4 資源配額管理(Resource Quotas) 670
10.4.5 ResourceQuota和LimitRange實踐 676
10.4.6 資源管理總結 685
10.5 資源緊缺時的Pod驅逐機制 686
10.5.1 驅逐策略 686
10.5.2 驅逐信號 686
10.5.3 驅逐閾值 688
10.5.4 驅逐監控頻率 689
10.5.5 節點的狀況 689
10.5.6 節點狀況的抖動 690
10.5.7 回收Node級別的資源 690
10.5.8 驅逐用戶的Pod 691
10.5.9 資源最少回收量 692
10.5.10 節點資源緊缺情況下的系統行為 692
10.5.11 可調度的資源和驅逐策略實踐 694
10.5.12 現階段的問題 694
10.6 Pod Disruption Budget(主動驅逐保護) 695
10.7 Kubernetes集群的高可用部署方案 697
10.7.1 手工方式的高可用部署方案 698
10.7.2 使用kubeadm的高可用部署方案 709
10.8 Kubernetes集群監控 717
10.8.1 通過Metrics Server監控Pod和Node的CPU和內存資源使用數據 717
10.8.2 Prometheus+Grafana集群性能監控平臺搭建 720
10.9 集群統一日志管理 732
10.9.1 系統部署架構 733
10.9.2 創建Elasticsearch RC和Service 733
10.9.3 在每個Node上啟動Fluentd 736
10.9.4 運行Kibana 738
10.10 Kubernetes的審計機制 742
10.11 使用Web UI(Dashboard)管理集群 746
10.12 Helm:Kubernetes應用包管理工具 750
10.12.1 Helm概述 750
10.12.2 Helm的主要概念 751
10.12.3 安裝Helm 751
10.12.4 Helm的常見用法 752
10.12.5 --set的格式和限制 756
10.12.6 更多的安裝方法 757
10.12.7 helm upgrade和helm rollback:應用的更新或回滾 757
10.12.8 helm install/upgrade/rollback命令的常用參數 758
10.12.9 helm delete:刪除一個Release 759
10.12.10 helm repo:倉庫的使用 759
10.12.11 自定義Chart 759
10.12.12 對Chart目錄結構和配置文件的說明 759
10.12.13 對Chart.yaml文件的說明 760
10.12.14 快速制作自定義的Chart 761
10.12.15 搭建私有Repository 761
第11章 Trouble Shooting指導 763
11.1 查看系統Event 764
11.2 查看容器日志 766
11.3 查看Kubernetes服務日志 767
11.4 常見問題 769
11.4.1 由于無法下載pause鏡像導致Pod一直處于Pending狀態 769
11.4.2 Pod創建成功,但RESTARTS數量持續增加 771
11.4.3 通過服務名無法訪問服務 772
11.5 尋求幫助 773
第12章 Kubernetes開發中的新功能 777
12.1 對Windows容器的支持 778
12.1.1 Windows Node部署 778
12.1.2 Windows容器支持的Kubernetes特性和發展趨勢 790
12.2 對GPU的支持 791
12.2.1 環境準備 792
12.2.2 在容器中使用GPU資源 795
12.2.3 發展趨勢 797
12.3 Pod的垂直擴縮容 797
12.3.1 前提條件 798
12.3.2 安裝Vertical Pod Autoscaler 798
12.3.3 為Pod設置垂直擴縮容 798
12.3.4 注意事項 800
12.4 Kubernetes的演進路線和開發模式 801

本書勘誤

印次
  • 頁碼:-5  •  行數:175  •  印次: 1

    第175頁倒數第5行:cm-serverxml應改為cm-appconfigfiles

    陳曉猛 提交于 2019/5/22 10:32:45
    陳曉猛 確認于 2019/5/22 10:33:12

讀者評論

  • 你好,第三章,3.6.3掛載方式的例子,報錯。執行 kubectl describe pod dapi-test-pod-volume 報錯“Error: failed to start container “test-container”: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “process_linux.go:424: container init caused \”rootfs_linux.go:58: mounting \\”/var/lib/docker/containers/8d1b7087358b95363c6d118dce67aac33409c71c33b4e9f9542c2488c3b205a9/resolv.conf\\” to rootfs \\”/var/lib/docker/overlay2/d576f36f3172d33ee530d3157eb2e30a7b2f952d82b23cab9b2db0fa078d9511/merged\\” at \\”/var/lib/docker/overlay2/d576f36f3172d33ee530d3157eb2e30a7b2f952d82b23cab9b2db0fa078d9511/merged/etc/resolv.conf\\” caused \\”open /var/lib/docker/overlay2/d576f36f3172d33ee530d3157eb2e30a7b2f952d82b23cab9b2db0fa078d9511/merged/etc/resolv.conf: read-only file system\\”\””: unknown” ,k8s版本是1.15.0 linux版本 7.6

    degary發表于 2019/6/26 9:42:24
  • 你好,問下,我裝完docker 啟動容器后跑了幾小時后,節點k8s節點notready,docker ps命令卡主,docker報OOM,docker重啟也會卡住,為什么呢,遇到這種情況怎么恢復呢,怎么防止這種現象的發生呢

    mengqiuyu發表于 2019/6/24 20:19:41
  • 跟著第一章練習,最后都啟動成功了,訪問報錯
    Error:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

    duxingxia081發表于 2019/6/9 13:29:21
  • 后面還是報錯阿,根本裝不上去

    <pre>[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
    [kubelet-check] Initial timeout of 40s passed.

    Unfortunately, an error has occurred:
    timed out waiting for the condition

    This error is likely caused by:
    - The kubelet is not running
    - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

    If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
    - 'systemctl status kubelet'
    - 'journalctl -xeu kubelet'

    Additionally, a control plane component may h**e crashed or exited when started by the container runtime.
    To troubleshoot, list all containers using your preferred container runtimes CLI, e.g. docker.
    Here is one example how you may list all Kubernetes containers running in docker:
    - 'docker ps -a | grep kube | grep -v pause'
    Once you h**e found the failing container, you can inspect its logs with:
    - 'docker logs CONTAINERID'
    error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
    </pre>

    duxingxia081發表于 2019/6/7 16:28:17
  • 我系統是fedora 30,因此docker沒有正式版本,因此安裝的版本為DOCKER_VERSION: 0.0.0-20190416010122-8326351084
    在安裝master的時候就報
    error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR SystemVerification]: unsupported docker version: 0.0.0-20190416010122-8326351084
    [preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
    我應該怎么安裝?

    duxingxia081發表于 2019/6/7 14:07:27

圖書類別

推薦用戶

同系列書

百人牛牛棋牌