Kubernetes权威指南:从Docker到Kubernetes实践全接触(第4版)
  • 推荐3
  • 收藏8
  • 浏览2.7K

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第4版)

龚正 , 吴治辉 , 崔秀龙 , 闫健勇 (作者)  张国霞 (责任编辑)

  • 丛  书:博文视点云原生精品丛书
  • 书  号:978-7-121-36235-4
  • 出版日期:2019-06-01
  • 页  数:824
  • 开  本:
  • 出版状态:上市销售
  • 维护人:张国霞
电子书 ¥84.00
购买电子书
纸质版 ¥168.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
  • 页码:39  •  行数:5  •  印次: 1  •  修订印次: 5

    litongda 提交于 2019/11/2 0:28:13
    张国霞 确认于 2019/11/26 11:27:35
  • 页码:67  •  行数:10  •  印次: 1  •  修订印次: 1

    代码块中的命令有误,不应该是etcdctl endpoint health(没有这个命令),应该是上一行中的etcdctl cluster-health

    lcfzh 提交于 2019/9/7 11:42:19
    张国霞 确认于 2019/11/26 11:25:00
  • 页码:76  •  行数:22  •  印次: 1  •  修订印次: 4

    --service-account-key-file启动参数不对,会报出错误unknown flag: —service-account-key-file应该是--service-account-private-key-file

    lcfzh 提交于 2019/9/7 11:50:10
    张国霞 确认于 2019/11/26 11:25:47

读者评论

  • 编译安装,使用systemctl 无法启动kube-apiserver.service。按照书做的,什么原因。

    计算机练习生发表于 2020/10/28 17:23:49
    • 请查看日志,因为出错的可能性太多了。
      如果还是无法解决问题,请加入本书微信群或者QQ群,与作者或者读者讨论一下。

      张国霞发表于 2020/10/30 13:49:09
    • @张国霞 zgx228微信是这个吗?已经申请了,麻烦通过下呗

      计算机练习生发表于 2020/10/30 15:23:01
  • 请问,3.12.2 自动扩缩容机制章节的第5部分基于自定义指标的HPA实践, 自定义metrics-server部分的代码有下载地址吗

    xiaoma发表于 2020/7/2 17:24:09
  • 没有在线交流群?

    CptJason发表于 2020/5/23 23:35:34
    • 有,加微信zgx228

      张国霞发表于 2020/6/3 13:17:14
  • 175页:
    evnFrom方式引入ConfigMap,configMapRef后面少个“:”,下面的name字段应该向后在退两个空格。

    chenyang.it发表于 2020/2/6 22:25:01
  • 我用ingress暴露服务给外部访问,但访问速度异常缓慢,请问怎么回事呢

    laoy发表于 2019/7/26 16:17:33

电子书版本

  • Epub

图书类别

同系列书

  • Kubernetes权威指南:从Docker到Kubernetes实践全接触(第4版)

    龚正 吴治辉 崔秀龙 闫健勇 (作者)

    Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。本书从架构师、开发人员...

    ¥84.00
  • 深入浅出Istio:Service Mesh快速入门与实践

    崔秀龙 (作者)

    Google联合IBM、Lyft推出的Istio,一经问世就受到了人们的普遍关注,其热度迅速攀升,成为Service Mesh(服务网格)方案的代表项目。本书整...

     
  • 深入浅出Prometheus:原理、应用、源码与拓展详解

    陈晓宇 杨川胡 陈啸 (作者)

    本书主要围绕prometheus设计、架构、使用以及源码分析等多个角度全面阐述prometheus的内部原理和设计思想,本书第一部分主要围绕监控系统设计以及pr...

     
  • Harbor权威指南

    张海宁 邹佳 王岩 尹文开 任茂盛 等 (作者)

    在云原生生态中,容器镜像和其他云原生制品的管理与分发是至关重要的一环。本书对开源云原生制品仓库Harbor展开全面讲解,由Harbor开源项目维护者和贡献者倾力...

     

相关图书

期货短线——量价分析与多空技巧

白云龙 (作者)

本书讲解了上百个实例,侧重于介绍期货短线的交易技术,系统地讲解了做期货短线交易应具备的知识、常见的趋势类型,以及如何寻找进场时机、出场时机等。希望读者通过阅读本...

¥69.00

淘宝开店从新手到皇冠:开店+装修+推广+运营一本通(第3版)

六点木木 (作者)

“淘宝开店”畅销书全新升级,资深讲师倾囊相授!哪怕你是一名完全意义上的“小白”,在学习本书的过程中,也会在不经意间发现开网店的实战能力不断攀升。打开本书,你就开...

¥69.00

跟暮烟学直播:淘宝店铺直播从入门到精通

暮烟 (作者)

淘宝天猫店的店铺直播已经逐渐成为商家带货和品牌推广的主流渠道。它的运营方法有别于达人直播,需要根据店铺的定位和类目商品的特点来运作。本书作者暮烟老师,是一位资深...

¥79.00

BackTrader量化交易案例图解

何海群 何星语 (作者)

本书采用生动活泼的语言,从入门者的角度讲解BackTrader专业量化软件的使用方法和实盘操作技巧,同时结合国内股票市场、期货、外汇等实盘交易数据进行量化分析实...

¥79.00

ASP.NET Core项目开发实战入门

张剑桥 (作者)

本书共14章,深入浅出地介绍了ASP.NET Core基础及项目开发方面的知识。主要内容有.NET Core基础知识、ASP.NET Core开发工具的使用、A...

¥74.20

重来3:跳出疯狂的忙碌

陶英琪 (作者) 苏西 (译者)

这是畅销书《重来》的最新版。与大多数企业管理图书籍以制定商业计划、分析竞争形势、寻找投资人等为主旨不同,这本书呈现的是一种更智慧、更持久的经商成功之道。读完这本...

¥45.50