具体描述
Docker的流行激活了一直不温不火的 PaaS,随之而来的是各类 Micro-PaaS的出现,Kubernetes是其中最具代表性的一员,它是 Google多年大规模容器管理技术的开源版本。越来越多的企业被迫面对互联网规模所带来的各类难题,而 Kubernetes以其优秀的理念和设计正在逐步形成新的技术标准,对于任何领域的运营总监、架构师和软件工程师来说,都是一个绝佳的突破机会。《Kubernetes实战》以理论加实战的模式,结合大量案例由浅入深地讲解了 Kubernetes的各个方面,包括平台架构、基础核心功能、网络、安全和资源管理以及整个生态系统的组成,旨在帮助读者全面深入地掌握 Kubernetes+Docker的底层技术堆栈。
作者简介
吴龙辉 网宿科技云计算架构师,负责云平台的设计和研发工作。活跃于CloudFoundry、Docker、Kubernetes等开源社区,致力于云计算PaaS的研究,拥有丰富的云计算实践经验。
目录信息
第 1章 Kubernetes介绍 ......................................... 2
1.1为什么会有 Kubernetes ................................................. 2
1.1.1云计算大潮 . 2
1.1.2不温不火的 PaaS ............................................... 5
1.1.3 Docker的逆袭 .................................................... 5
1.2 Kubernetes 是什么 . 7
1.3 Kubernetes的发展历史 ................................................. 8
1.4 Kubernetes的核心概念 ................................................. 9
1.4.1 Pod ............... 9
1.4.2 Replication Controller ......................................... 9
1.4.3 Service ......... 9
1.4.4 Label ............ 9
1.4.5 Node ............. 9
第 2章 Kubernetes的架构和部署 ......................... 10
2.1 Kubernetes的架构和组件 ........................................... 10
2.2 部署 Kubernetes .... 13
2.2.1环境准备 ... 14
2.2.2 运行 Etcd ... 15
2.2.3 获取 Kubernetes发布包 .................................. 16
2.2.4 运行 Kubernetes Master组件 .......................... 16
2.2.5 运行 Kubernetes Node组件 ............................. 17
2.2.6 查询 Kubernetes的健康状态 .......................... 18
2.2.7 创建 Kubernetes覆盖网络 .............................. 19
2.3 安装 Kubernetes扩展插件 .......................................... 22
2.3.1 安装 Cluster DNS............................................. 23
2.3.2 安装 Cluster Monitoring ................................... 28
2.3.3 安装 Cluster Logging ....................................... 36
2.3.4 安装 Kube UI ................................................... 43
第 3章 Kubernetes快速入门 ................................ 46
3.1示例应用 Guestbook .................................................... 46
3.2准备工作 ............... 47
3.3 运行 Redis ............. 48
3.3.1 创建 Redis Master Pod ..................................... 48
3.3.2 创建 Redis Master Service ............................... 49
3.3.3 创建 Redis Slave Pod ....................................... 51
3.3.4 创建 Redis Slave Service ................................. 53
3.4 运行 Frontend ........ 54
3.4.1 创建 Frontend Pod ............................................ 54
3.4.2 创建 Frontend Service...................................... 57
3.5 设置 Guestbook外网访问 ........................................... 57
3.6 清理 Guestbook ..... 59
第 4章 Pod .... 60
4.1国际惯例的 Hello World .............................................. 60
4.2 Pod的基本操作 .... 62
4.2.1 创建 Pod .... 62
4.2.2 查询 Pod .... 62
4.2.3 删除 Pod .... 65
4.2.4 更新 Pod .... 65
4.3 Pod与容器 ............ 65
4.3.1 镜像 ........... 66
4.3.2启动命令 ... 69
4.3.3环境变量 ... 70
4.3.4 端口 ........... 72
4.3.5数据持久化和共享 .......................................... 73
4.4 Pod的网络 ............ 74
4.5 Pod的重启策略 .... 75
4.6 Pod的状态和生命周期 ............................................... 77
4.6.1容器状态 ... 77
4.6.2 Pod的生命周期阶段 ....................................... 78
4.6.3生命周期回调函数 .......................................... 79
4.7自定义检查 Pod .... 81
4.7.1 Pod的健康检查 ............................................... 83
4.7.2 Pod的准备状况检查 ....................................... 84
4.8 调度 Pod ................ 85
4.9问题定位指南 ....... 87
4.9.1事件查询 ... 88
4.9.2日志查询 ... 88
4.9.3 Pod的临终遗言 ............................................... 89
4.9.4远程连接容器 .................................................. 90
第 5章 Replication Controller................................ 92
5.1持续运行的 Pod .... 92
5.2 Pod模板 ................ 94
5.3 Replication Controller和 Pod的关联 .......................... 96
5.4弹性伸缩 ............... 99
5.5自动伸缩 ............. 101
5.6滚动升级 ............. 104
5.7 Deployment .......... 107
5.8一次性任务的 Pod ..................................................... 112
第 6章 Service .................................................... 114
6.1 Service代理 Pod . 114
6.2 Service的虚拟 IP 118
6.3服务代理 ............. 119
6.4服务发现 ............. 123
6.4.1环境变量 . 124
6.4.2 DNS ......... 125
6.5 发布 Service ........ 128
6.5.1 NodePort Service ............................................ 128
6.5.2 LoadBalancer Service..................................... 129
6.5.3 Ingress ...... 130
第 7章 数据卷 ..................................................... 134
7.1 Kubernetes数据卷 ..................................................... 134
7.2本地数据卷 ......... 135
7.2.1 EmptyDir . 135
7.2.2 HostPath ... 136
7.3网络数据卷 ......... 137
7.3.1 NFS .......... 137
7.3.2 iSCSI ........ 138
7.3.3 GlusterFS . 140
7.3.4 RBD(Ceph Block Device)......................... 141
7.3.5 Flocker ..... 142
7.3.6 AWS Elastic Block Store................................ 143
7.3.7 GCE Persistent Disk ....................................... 144
7.4 Persistent Volume和 Persistent Volume Claim.......... 145
7.4.1 创建 Persistent Volume ................................... 147
7.4.2 创建 Persistent Volume Claim ........................ 149
7.5信息数据卷 ......... 151
7.5.1 Secret ....... 151
7.5.2 Downward API ............................................... 153
7.5.3 Git Repo ... 155
第 8章 访问 Kubernetes API ............................... 157
8.1 API对象与元数据 ..................................................... 157
8.2如何访问 Kubernetes API.......................................... 159
8.3使用命令行工具 kubectl ............................................ 160
8.3.1 配置 Kubeconfig............................................. 161
8.3.2 Kubernetes操作 ............................................. 163
8.3.3 API对象操作 ................................................. 164
8.3.4 Pod操作 .. 168
8.3.5 Replication Controller操作 ............................ 169
8.3.6 Service操作 ................................................... 170
第 2部分 Kubernetes高级篇
第 9章 Kubernetes网络 ..................................... 172
9.1 Docker网络模型 . 172
9.2 Kubernetes网络模型 ................................................. 173
9.3容器间通信 ......... 174
9.4 Pod间通信 .......... 176
9.4.1 Flannel实现 Kubernetes覆盖网络 ............... 177
9.4.2 使用 Open vSwitch实现 Kubernetes覆盖网络 ................................................... 180
9.5 Service到 Pod通信 ................................................... 183
9.5.1 Userspace模式 ............................................... 184
9.5.2 Iptables模式 ................................................... 186
第 10章 Kubernetes安全 ................................... 189
10.1 Kubernetes安全原则 ............................................... 189
10.2 Kubernetes API的安全访问 .................................... 189
10.2.1 HTTPS . 190
10.2.2认证与授权 ................................................ 191
10.2.3 准入控制 Admission Controller................. 194
10.3 Service Account . 195
10.3.1 使用默认 Service Account ......................... 196
10.3.2创建自定义 Service Account ..................... 199
10.3.3 Service Account添加 Image Pull Secret .... 201
10.4容器安全 ........... 202
10.4.1 Linux Capability ......................................... 202
10.4.2 SELinux ...................................................... 204
10.5 多租户 ............... 204
第 11章 Kubernetes资源管理 ............................ 206
11.1 Kubernetes资源模型 ............................................... 206
11.2资源请求和限制 207
11.3 Limit Range ....... 210
11.4 Resource Quota.. 215
第 12章 管理和运维 Kubernetes ......................... 219
12.1 Daemon Pod ....... 219
12.1.1 Static Pod .................................................... 219
12.1.2 Daemon Set ................................................ 221
12.2 Kubernetes的高可用性 ........................................... 222
12.3平台监控 ........... 224
12.3.1 cAdvisor ..................................................... 224
12.3.2 Heapster ...................................................... 228
12.4平台日志 ........... 230
12.5垃圾清理 ........... 234
12.5.1 镜像清理 .................................................... 235
12.5.2 容器清理 .................................................... 235
12.6 Kubernetes的 Web界面 .......................................... 235
第 3部分 Kubernetes生态篇
第 13章 CoreOS ................................................. 240
13.1 CoreOS介绍 ..... 240
13.2 CoreOS工具链 . 241
13.2.1 Etcd ...... 241
13.2.2 Flannel . 241
13.2.3 Rocket .. 241
13.2.4 Systemd ...................................................... 241
13.2.5 Fleet ..... 241
13.3 CoreOS实践 ..... 242
13.3.1 安装 CoreOS .............................................. 242
13.3.2 使用 CoreOS运行 Kubernetes .................. 245
第 14章 Etcd 247
14.1 Etcd介绍 ........... 247
14.2 Etcd的结构 .............................................................. 248
14.2.1 Client-to-Server .......................................... 249
14.2.2 Peer-to-Peer ................................................ 250
14.3 Etcd实践 ........... 250
14.3.1 运行 Etcd .................................................... 250
14.3.2 Etcd集群化 ................................................ 251
14.3.3 Etcd Proxy模式 ......................................... 258
14.3.4 Etcd的安全模式 ........................................ 259
第 15章 Mesos ................................................... 262
15.1 Mesos介绍 ........ 262
15.2 Mesos的架构 .... 263
15.3 Marathon和 K8SM介绍 ......................................... 264
15.3.1 Marathon..................................................... 264
15.3.2 K8SM .. 265
15.4 Mesos实践 ........ 266
15.4.1 运行 Mesos ................................................. 266
15.4.2 运行 Marathon ............................................ 268
15.4.3 运行 K8SM ................................................ 270
· · · · · · (收起)
读后感
用户评价
这本书的深度和广度真的让人惊叹,从零基础的读者到希望精进技能的资深运维工程师,都能从中找到价值。我特别欣赏作者对于Kubernetes核心概念的阐述,那种抽丝剥茧的讲解方式,让那些看似晦涩难懂的组件,比如控制平面(Control Plane)和数据平面(Data Plane)之间的协作关系,变得清晰易懂。书中对网络模型(CNI)的深入剖析尤其到位,它没有停留在概念层面,而是结合实际的Pod间通信和Service负载均衡的原理,展示了网络策略是如何在集群中生效的。此外,关于存储持久化的章节,对StatefulSet和各种StorageClass的详细对比和实践案例,极大地拓宽了我在有状态应用部署上的视野。阅读过程中,我感觉自己不仅仅是在学习一套技术栈,更像是在进行一次结构化的工程思维训练,对于如何设计高可用、自愈合的云原生系统有了全新的认识。书中穿插的那些“陷阱”与“最佳实践”提示,更是经验之谈,避免了我在实际工作中可能踩的许多坑。
这本书的排版和结构设计也值得称赞,它不像传统教材那样枯燥乏味,阅读体验非常流畅。特别是作者在介绍高级主题时,总能巧妙地穿插一些历史背景或者设计决策的考量,这使得我对Kubernetes的某些“怪癖”或特定设计选择有了更深层次的理解,而不是死记硬背配置参数。例如,它对Operator模式的介绍,不仅给出了理论模型,还通过一个实际的数据库Operator案例,展示了如何用Kubernetes的能力来管理复杂有状态服务的生命周期,这种将抽象概念与具体应用场景结合的能力,是本书的又一大亮点。每次读完一个章节,我都会有一种豁然开朗的感觉,仿佛作者不仅仅是把知识传授给我,更是把一套解决问题的思维框架植入了我的脑海中,这种长期价值远超书本本身的售价。
我是一名刚接触容器编排不久的开发人员,原本对Kubernetes的复杂性感到畏惧,但这本书的叙述风格非常贴合我的学习曲线。它不像一些技术书籍那样,一上来就抛出一堆术语,而是采用循序渐进的方式,先从Docker容器基础概念开始,然后自然过渡到容器集群的必要性,最后才引入Kubernetes的各种资源对象。作者在解释调度器(Scheduler)的工作原理时,使用了非常生动的比喻,让我立刻明白了Pod是如何被分配到最合适的节点上的。更让我感到惊喜的是,书中对声明式配置的哲学思想的阐述,它强调了“期望状态”与“当前状态”的对比,这彻底改变了我过去那种面向过程的部署习惯。对于初学者而言,这种系统性的、兼顾理论与实践的编排方式,建立了一个非常稳固的知识基础,为后续深入学习云原生生态打下了坚实的基础。
这本书的实战性,绝对是市面上众多理论教材无法比拟的。它没有陷入无休止的理论堆砌,而是将大量的篇幅放在了如何将Kubernetes部署到生产环境,并进行日常运维和故障排查上。我个人受益匪浅的是关于集群安全加固的部分,作者不仅讲解了RBAC的权限最小化原则,还详细演示了如何结合Vault或Secrets Manager进行密钥管理,这对于我们这种对安全性要求极高的团队来说,是立竿见影的指导手册。每一个章节都仿佛是带着读者进行一次真实的“演练”,从YAML文件的编写规范到使用`kubectl`进行深度调试,再到如何集成Prometheus和Grafana进行监控告警的配置,流程清晰,步骤详尽。特别是对Helm Chart的自定义和维护那一节,作者展示了如何构建可复用、参数化的部署包,这极大地提高了我们团队的部署效率,让复杂的应用发布流程变得标准化和自动化起来。
从运维角度来看,这本书的价值在于它提供了一套成熟的集群生命周期管理方案。它没有停留在安装部署的层面,而是深入探讨了集群升级、灾难恢复(DR)以及资源配额的管理艺术。关于资源限制和QoS(服务质量)等级的详细划分和实践,直接帮助我们解决了之前集群中因资源争抢导致的优先级混乱问题。书中对于etcd集群的备份、恢复和性能调优的建议,细致到可以直接用于生产环境的SOP文档。我尤其喜欢它对GitOps理念的融入,它展示了如何利用ArgoCD或FluxCD将Kubernetes集群的管理完全纳入版本控制体系,极大地提升了配置的一致性和可审计性。这本书确实是那种可以放在手边,随时翻阅查阅关键配置和疑难解答的“工具书”,其内容的实用性和时效性都非常出色。
可以翻看,对基础概念混个脸熟,对实际使用帮助不大。
1. 现在Deployment管理ReplicaSet,书中讲的Deployment管理ReplicationController,估计是写的时候还没有ReplicaSet这个概念吧 2. Deployment,Ingress和Job等新概念没有讲,有些遗憾 3. 后几章讲CoreOS和Mesos的有些偏题了,凑篇幅的协议。
不能叫做实战吧,算是入门简介,对k8s的功能有个概览
浅显。不过深了我也看不懂。。学习了下配置文件怎么写。。
照着书中的例子实现一遍,对k8s的基本概念比如Pod,ReplicationController,Service,网络,资源也就有了大致了解。这本书不涉及过多的理论知识,以实战例子为主,但是使用的k8s版本过低(v1.1.1),导致很多特性和用法已经发生了改变。如果把docker比喻成集装箱的话,k8s就如其名一样,像一个舵手掌握着这艘大船以及对集装箱的生命周期管理,并提供了弹性伸缩,统一接口访问等诱人功能。