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

Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版) pdf epub mobi txt 电子书 下载 2025

闫健勇,龚正,吴治辉,王伟,崔秀龙 ... 著
图书标签:
  • Kubernetes
  • 容器化
  • Docker
  • DevOps
  • 云原生
  • 微服务
  • 系统运维
  • 技术指南
  • 运维实践
  • 架构设计
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121323515
版次:1
商品编码:12230380
品牌:Broadview
包装:平装
开本:16开
出版时间:2017-09-01
用纸:胶版纸
页数:692

具体描述

产品特色


编辑推荐

  

  本书是容器圈Kubernetes重磅开山作《Kubernetes木又威指南》的纪念版,内容更新到Kubernetes v1.6+版本。
  本书作者全部来自惠普公司云计算实战一线,敏锐地捕获和探索着各种IT前瞻技术,有着全面而扎实的技术架构体系、对创新技术天生的热情、国际技术领先者的视野,还有着对企业级IT架构的深入把握。
  纪念并不是为了结束,而是为了新的写作思路的展开。我们用尽全力更新和修改本书的内容,把能想到的和K8s新的更新都详细地写进去了,致使本书厚达700页,同时,我们深感不能再接着更新下去了。还好,本书记录了K8s近的很重要的里程碑版本,之后的各种版本变化应该都是基于这个版本的小范围内的更新,本书应该还能陪伴大家很长一段时间。
  奉上寄语:“我轻轻地招手,迎接明天的云彩……”
  

内容简介

  

  Kubernetes 是由谷歌开源的Docker 容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。《Kubernetes 木又威指南:从Docker 到Kubernetes 实践全接触(纪念版)》从架构师、开发人员和运维人员的角度,阐述了Kubernetes 的基本概念、实践指南、核心原理、开发指导、运维指南及源码分析等内容,图文并茂、内容丰富、由浅入深、讲解全面;围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全配置、网络方案、共享存储方案、高可用性方案及Trouble Shooting 技巧等,有很强的实战指导意义。《Kubernetes木又威指南:从Docker到Kubernetes实践全接触(纪念版)》随着Kubernetes 版本更新不断完善,目前涵盖了Kubernetes 从v1.0 到v1.6 版本的全部特性,尽力为Kubernetes 用户提供全方位的指南。
  无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深 IT 人士来说,《Kubernetes木又威指南:从Docker到Kubernetes实践全接触(纪念版)》都极具参考价值。
  

作者简介

  龚正,HPE高级顾问
  拥有十多年的IT从业经验,具备丰富的云计算、大数据分析和大型企业级应用的架构设计和实施经验,是电信、金融、互联网等领域的资深专家。

  吴治辉,HPE资深架构师
  拥有超过15年的软件研发经验,专注于电信软件和云计算方面的软件研发,拥有丰富的大型项目架构设计经验,是业界少有的具备很强Coding能力的S级资深架构师,也是《ZeroC Ice木又威指南》《架构解密:从分布式到微服务》的作者。

  王伟,HPE资深系统架构师、大数据和云计算技术专家
  拥有多年IT行业从业经验,参与过多个大型应用的架构设计、系统开发和实施落地,精通大数据、云计算及大型系统架构和开发的相关技术,对互联网和电信行业的热点技术有着深刻的理解,是云计算和大数据方面的技术专家。

  崔秀龙,HPE资深架构师
  开源软件、自动化爱好者,拥有十多年从业经验,对软件生命周期的各个环节均有深刻的理解。

  闫健勇,HPE高级项目经理、总架构师
  拥有超过15年的电信行业系统建设经验,主导了多项电信大型系统的架构设计和管理,对于云计算和大数据在电信行业中的应用拥有丰富的经验。

  崔晓宁,HPE高级顾问
  拥有超过7年的测试咨询和质量管理经验,在云计算、大数据和分布式运算架构下的业务质量控制方面有非常丰富的项目实践和心得,并对推动组织架构优化有丰富的经验。帮助多个超过百人的大型项目建立软件产品管理规范和体系,并对其运营提供指导。

  刘晓红,HPE高级咨询顾问
  拥有超过10年的电信行业从业经验,亲历中国移动BSS/OSS领域核心系统的建设发展历程,具备丰富的咨询规划、需求分析、产品设计、项目管理、测试管理经验,专注于云计算、大数据等前沿技术的研究。






精彩书评

  

  我相信这是一本到目前为止对从事云计算领域技术实践的人来说非常有价值的书籍。本书作者来自云计算实战一线,敏锐地捕获和探索着各种IT前瞻技术,他们在惠普如日中天的时期加入惠普,是纯粹的技术癖,为世界级的企业构建着相当庞大的信息系统。他们有着全面而扎实的技术架构体系,有着对创新技术天生的热情,有着国际技术领先者的视野,还有着对企业级IT架构的深入把握。
  本书囊括了Kubernetes入门、运行机制、原理和高级案例等内容,由浅入深地介绍了当前发展速度极快且被认可度极高的Kubernetes容器云平台,并围绕着生产环境中可能出现的问题,给出了大量的典型案例,有很好的可借鉴性。
  不论你是程序员、架构师,还是咨询顾问、IT管理者,你都会通过本书接触到非常热门的Docker和Kubernetes技术的非常清晰、细腻的实践脉络,感受到云计算技术领域的清新气息。
  ——HPE CMS负责人 张红忠
  
  Kubernetes是2014年开源的容器应用管理调度系统,深受谷歌使用多年的Borg系统的影响,吸收了Borg中的理念,简化了操作。Kubernetes自问世以来,就引起了人们的广泛关注,已然成为私有云市场上冉冉升起的明星。本书作者拥有丰富的Kubernetes实战经验,并且及时抓住了市场的需求,对Kubernetes这个复杂的系统进行了精辟的分析和解剖,为渴望理解、迅速上手Kubernetes的程序员同学提供了全方位的指南,也为资深架构师拓宽思路提供了源泉。愿在此书的帮助下,Kubernetes的社区能更健康地成长。
  ——京东集团副总裁 翁志
  
  本书内容详实、深入浅出,向读者展示了Kubernetes的完整画像,堪称一部“从入门到精通”的经典教材。作为过去几年里推进Docker与Kubernetes大规模生产应用的技术实践者,我向每一名云计算或基础架构从业者推荐本书。
  ——京东商城总架构师 & 基础平台部负责人 刘海锋
  
  Kubernetes是容器生态圈中的重要一员,发展速度非常快,现在已经拥有800多名代码贡献者。谷歌在容器编排调度方面有着非常丰富的经验,所以Kubernetes的架构设计和理念都很不错。现在,国内已经有很多公司在应用Kubernetes,InfoQ也在这方面发表和策划了很多文章。这是国内专门讲解Kubernetes的重磅开山之作,从架构到源代码、从原理到案例,内容全面而详尽,非常不错。
  ——InfoQ主编 郭蕾
  

目录

第1章 Kubernetes入门 1
1.1 Kubernetes是什么 1
1.2 为什么要用Kubernetes 4
1.3 从一个简单的例子开始 5
1.3.1 环境准备 6
1.3.2 启动MySQL服务 6
1.3.3 启动Tomcat应用 9
1.3.4 通过浏览器访问网页 10
1.4 Kubernetes基本概念和术语 12
1.4.1 Master 12
1.4.2 Node 12
1.4.3 Pod 15
1.4.4 Label(标签) 18
1.4.5 Replication Controller 22
1.4.6 Deployment 26
1.4.7 Horizontal Pod Autoscaler 28
1.4.8 StatefulSet 29
1.4.9 Service(服务) 30
1.4.10 Volume(存储卷) 37
1.4.11 Persistent Volume 41
1.4.12 Namespace(命名空间) 42
1.4.13 Annotation(注解) 43
1.4.14 小结 44
第2章 Kubernetes实践指南 45
2.1 Kubernetes安装与配置 45
2.1.1 系统要求 45
2.1.2 使用kubeadm工具快速安装Kubernetes集群 46
2.1.3 以二进制文件方式安装Kubernetes集群 51
2.1.4 Kubernetes集群的安全设置 59
2.1.5 Kubernetes集群的网络配置 64
2.1.6 内网中的Kubernetes相关配置 64
2.1.7 Kubernetes的版本升级 65
2.1.8 Kubernetes核心服务配置详解 66
2.2 kubectl命令行工具用法详解 86
2.2.1 kubectl用法概述 86
2.2.2 kubectl子命令详解 88
2.2.3 kubectl参数列表 90
2.2.4 kubectl输出格式 90
2.2.5 kubectl操作示例 92
2.3 深入掌握Pod 93
2.3.1 Pod定义详解 93
2.3.2 Pod的基本用法 98
2.3.3 静态Pod 103
2.3.4 Pod容器共享Volume 104
2.3.5 Pod的配置管理 106
2.3.6 在容器内获取Pod信息(Downward API) 119
2.3.7 Pod生命周期和重启策略 124
2.3.8 Pod健康检查 125
2.3.9 玩转Pod调度 127
2.3.10 Init Container(初始化容器) 149
2.3.11 Pod的升级和回滚 152
2.3.12 Pod的扩容和缩容 166
2.3.13 使用StatefulSet搭建MongoDB集群 171
2.4 深入掌握Service 180
2.4.1 Service定义详解 181
2.4.2 Service基本用法 182
2.4.3 Headless Service 187
2.4.4 集群外部访问Pod或Service 192
2.4.5 DNS服务搭建指南 196
2.4.6 自定义DNS和上游DNS服务器 204
2.4.7 Ingress:HTTP 7层路由机制 208
第3章 Kubernetes核心原理 226
3.1 Kubernetes API Server 原理分析 226
3.1.1 Kubernetes API Server概述 226
3.1.2 独特的Kubernetes Proxy API接口 229
3.1.3 集群功能模块之间的通信 230
3.2 Controller Manager 原理分析 231
3.2.1 Replication Controller 232
3.2.2 Node Controller 234
3.2.3 ResourceQuota Controller 235
3.2.4 Namespace Controller 237
3.2.5 Service Controller与Endpoint Controller 237
3.3 Scheduler原理分析 238
3.4 kubelet运行机制分析 242
3.4.1 节点管理 242
3.4.2 Pod管理 243
3.4.3 容器健康检查 244
3.4.4 cAdvisor资源监控 245
3.5 kube-proxy 运行机制分析 247
3.6 深入分析集群安全机制 251
3.6.1 API Server认证管理(Authentication) 251
3.6.2 API Server授木又管理(Authorization) 253
3.6.3 Admission Control(准入控制) 272
3.6.4 Service Account 274
3.6.5 Secret私密凭据 279
3.7 网络原理 282
3.7.1 Kubernetes网络模型 282
3.7.2 Docker的网络基础 284
3.7.3 Docker的网络实现 296
3.7.4 Kubernetes的网络实现 304
3.7.5 Pod和Service网络实战 308
3.7.6 CNI网络模型 321
3.7.7 Kubernetes网络策略 331
3.7.8 开源的网络组件 333
3.8 共享存储原理 363
3.8.1 共享存储机制概述 363
3.8.2 PV详解 364
3.8.3 PVC详解 368
3.8.4 PV和PVC的生命周期 370
3.8.5 StorageClass详解 373
3.8.6 动态存储管理实战:GlusterFS 376
第4章 Kubernetes开发指南 388
4.1 REST简述 388
4.2 Kubernetes API详解 390
4.2.1 Kubernetes API概述 390
4.2.2 API版本 395
4.2.3 API Groups(API组) 395
4.2.4 API方法说明 397
4.2.5 API响应说明 398
4.3 使用Java程序访问Kubernetes API 400
4.3.1 Jersey 401
4.3.2 Fabric8 412
4.3.3 使用说明 413
第5章 Kubernetes运维指南 434
5.1 Kubernetes集群管理指南 434
5.1.1 Node的管理 434
5.1.2 更新资源对象的Label 436
5.1.3 Namespace:集群环境共享与隔离 437
5.1.4 Kubernetes资源管理 441
5.1.5 资源紧缺时的Pod驱逐机制 475
5.1.6 Pod Disruption Budget(主动驱逐保护) 483
5.1.7 Kubernetes集群的高可用部署方案 485
5.1.8 Kubernetes集群监控 496
5.1.9 集群统一日志管理 513
5.1.10 Kubernetes审计日志(Audit Log) 522
5.1.11 使用Web UI(Dashboard)管理集群 523
5.1.12 Helm:Kubernetes应用包管理工具 527
5.2 Trouble Shooting指导 538
5.2.1 查看系统Event事件 538
5.2.2 查看容器日志 540
5.2.3 查看Kubernetes服务日志 541
5.2.4 常见问题 542
5.2.5 寻求帮助 546
5.3 Kubernetes开发中的新功能 546
5.3.1 Pod Preset(运行时参数注入策略) 546
5.3.2 Cluster Federation(集群联邦) 553
5.3.3 容器运行时接口(Container Runtime Interface-CRI) 557
5.3.4 对GPU的支持 561
5.3.5 Kubernetes的演进路线(Roadmap)和开发模式 565
第6章 Kubernetes源码导读 568
6.1 Kubernetes源码结构和编译步骤 568
6.2 kube-apiserver进程源码分析 572
6.2.1 进程启动过程 572
6.2.2 关键代码分析 574
6.2.3 设计总结 589
6.3 kube-controller-manager进程源码分析 592
6.3.1 进程启动过程 592
6.3.2 关键代码分析 595
6.3.3 设计总结 603
6.4 kube-scheduler进程源码分析 605
6.4.1 进程启动过程 605
6.4.2 关键代码分析 610
6.4.3 设计总结 617
6.5 kubelet进程源码分析 619
6.5.1 进程启动过程 619
6.5.2 关键代码分析 624
6.5.3 设计总结 647
6.6 kube-proxy进程源码分析 648
6.6.1 进程启动过程 648
6.6.2 关键代码分析 650
6.6.3 设计总结 665
6.7 kubectl进程源码分析 666
6.7.1 kubectl create命令 667
6.7.2 rolling-update命令 671













精彩书摘

  5.3.2 Cluster Federation(集群联邦)
  集群联邦从Kubernetes v1.3版本开始引入,目标是对多个Kubernetes集群进行统一管理,将用户的应用部署到全球各地的不同数据中心或者云环境中,同时通过动态优化部署来节约运营成本。本节介绍Kubernetes中Federation(集群联邦)的主要特性和使用Federation管理多集群的原理。
  1. Federation的主要特性
  Federation主要通过以下特性来实现多集群的统一管理。
  ◎ 跨群集资源同步:Federation提供在多个集群之间保持资源同步的能力,比如通过Federation可以确保跨集群的Deployment在多个集群中始终同时存在并保持一致。
  ◎ 跨集群服务发现:Federation提供了自动配置DNS服务器和全局负载均衡器(可访问所有Kubernetes集群后端服务的负载均衡器)的能力,比如通过Federation可以确保使用一条全局虚拟IP(VIP)或DNS记录即可访问部署在多个Kubernetes集群中的后端服务。
  ◎ 高可用性:Kubernetes Federation可以在集群之间分发负载,并且支持自动配置DNS服务器和全局负载均衡器,大大降低了发生系统故障的几率,提高了系统的可用性。
  ◎ 避免厂商锁定:Federation使得应用进行跨不同类型的云平台联合部署变得很容易,而集群中应用程序的迁移也变得更加轻松,因此可以有效地避免出现厂商锁定的情况。
  2. Federation要解决的主要挑战
  在Federation的实际使用场景中,会面对一些非常重要的挑战。
  1)位置亲和性
  在使用多集群部署分布式应用时,前端应用与后端资源(可以Pod形式的应用、存储或者其他为前端应用提供服务的资源)的相对位置对于访问延迟、资源开销和系统稳定性具有决定性的影响。那么Federation中应该如何考虑这种位置亲和决策呢?在Federation的设计理念中,针对前后端的相对位置,将前后端关系分为三类:严格耦合、严格解耦和优先耦合。三者分别对应前后端必须绑定、可以完全分离及优先绑定这三种应用场景。通过位置亲和性,就可以将严格解耦的应用进行基于Pod的平均分配或者随机分配,对优先耦合的应用进行优先分配到同一集群并接受部分移动,而对于严格耦合的应用则严格分配到同一集群环境中。
  2)跨集群服务发现
  在Federation中Pod使用外部DNS客户端来实现与单集群类似的标准服务发现。DNS将服务解析为本地集群地址或者外部集群地址。除严格耦合的前后端场景外,前端都可以不用关心DNS解析的结果是位于同一集群内还是同一集群外。
  3)跨集群应用调度
  Federation的跨集群调度机制中,Federation控制平面在接收到所有集群的资源对象创建请求后,可以简单地将这个请求重定向给某个集群,也可以将请求“分解”为多个子请求发送给不同的集群。同时,Federation控制平面需要分析应用的属性(位置亲和性、隐私级别等),并以此作为依据执行更优化的跨集群调度。此外,完善的跨集群调度机制还需要支持准入控制机制、自动扩容和缩容机制、故障重调度机制及基于计算能力的调度优化等。
  4)跨集群应用迁移
  在Federation的使用过程中,可能会遇到部分集群容量将满、转换云供应商、变换核心集群位置等需要进行应用迁移的场景。在这种情况下,Federation的跨集群迁移工作是按照应用位置亲和性来分别进行的:对严格解耦的应用采取一次或多次分步迁移的方式进行,每次迁移的粒度也很自由;对优先耦合的应用,需要首先找到具有足够多的资源容量可以容纳待迁移应用的目标集群,并锁定该部分的资源容量,之后按照特定的顺序在特定的时间内完成迁移工作;而对于严格耦合的程序而言,除了需要符合与优先耦合类似的资源要求,在迁移过程中还需要考虑是否能满足数据一致性和应用一致性的要求,如果不能满足要求,则不建议直接进行迁移。
  5)故障隔离
  Federation保留了Kubernetes集群的应用隔离机制,一般情况下并不会显著地增加多个集群之间故障的关联性。Federation控制平面与每个Kubernetes集群的控制平面是严格独立的,Federation控制平面的故障应不影响每个Kubernetes自身的正常运行。
  ◎ 统一监控、统一预警和跨集群联合审计。
  ◎ 统一认证授木又、跨集群的配额管理。
  3. Federation的架构设计
  针对这些调整,Federation的整体架构设计采用了解耦和分层的思路:Federation控制平面位于所有Kubernetes集群之上,而每个Kubernetes集群都是可以独立运行的。除了部分基础配置信息,每个Kubernetes集群都不知道其他Kubernetes集群的存在,也不知道Federation控制平面的存在。在这种设计中,Federation控制平面就像每个Kubernetes集群的API客户端,因此与每个集群解除了耦合关系。与Federation解耦和分层的架构相对的是一体式架构设计:即为每个Kubernetes集群搭建一个控制平面,这个控制平面只负责管理这个Kubernetes集群,而多个控制平面之间通过通信的方式来实现对所有Kubernetes集群的联合管理。
  Federation分层解耦的设计具有如下优势。
  1)故障隔离性好
  如前面所述,Federation分层解耦的设计保证了Federation控制平面与集群的隔离,每个集群和Federation控制平面都可以独立运行,出现故障时可以进行单独隔离而互不影响。另外,每个集群和Federation控制平台的软件和配置都可以进行独立更新,这为系统的维护提供了极大的便利。
  2)失效几率更低
  整体而言,分层设计的系统比一体式设计的系统出现故障的概率要高(概率叠加),但由于各系统解除了耦合,所以系统完全失效的几率要低于一体式设计的系统。
  3)可扩展性高
  在Federation的分层解耦设计中,每个底层的Kubernetes集群内部都可以完全独立地进行扩展,而Federation中也可以很容易扩展加入新的集群而不影响现有集群。基于分层架构的优势,在未来的Kubernetes版本里,甚至可能会提供集群联邦的联邦功能(Federation of Federation)。
  4)代码模块化和分离
  Federation控制平面的代码与每个云供应商的Kubernetes控制平面的代码是分离的,它们之间通过共享库的方式来实现部分代码共享。这种设计允许Kubernetes和Federation的代码开发工作在很大程度上独立进行,同时促进了更好的代码模块化和独立的接口设计。
  5)更灵活的管理策略
  一体式设计的系统看似管理工作更简单,但是由于不同的云供应商和本地数据中心有不同的特点(硬件、定价、限制等),而Federation的分层解耦架构允许独立地管理每个Kubernetes集群,这虽然看似提高了管理的复杂性,但是对于整个系统而言,提供了更丰富的控制手段和管理策略。
  ◎ 更好的代码模块化和界面设计。
  ◎ 控制平面的成本更低。
  在一体式设计的系统中,每个Kubernetes集群均需要部署自己的控制平面,而在分层解耦的设计中,Federation的控制平面只需要独立部署一次。如果我们需要实现控制平面的高可用,那么也只需要再部署一个Federation控制平面。可见Federation的分层设计在控制平面的成本开销上的优势非常明显。
  4. Federation的优势
  Federation是Kubernetes多集群的解决方案,如果不需要使用多个Kubernetes集群,则Federation并没有太大用处。在下列情况下,可以考虑引入Federation。
  ◎ 低延迟:通过多地区部署服务,配合就近选择集群提供服务的方式,Federation可以最小化服务访问的延迟。
  ◎ 故障隔离:当系统发生故障时,由多个小型集群(这些集群通常分布在不同的区域)组成的Federation比单个大型集群更适合快速有效地隔离,而且对整体服务的影响会更小。
  ◎ 可扩展性:根据谷歌的经验,在超大规模的生产环境中,单个Kubernetes集群的扩展性受到集群规模的制约。当单个集群规模过大时,集群性能下降。而多集群Federation则可以提高集群规模的上限,提供更好的可扩展性。
  ◎ 混合云:Federation支持私有云和公有云的组合,可以使用Federation在不同的云供应商或多个本地数据中心上搭建多个Kubernetes集群,实现混合云部署。
  5. Federation的局限性
  除了上述优势,在使用Federation之前也应充分考虑一些潜在问题。
  ◎ 网络带宽和成本的增加:为确保所有的集群运行状态符合预期,Federation控制平面会持续监控所有集群。如果Federation中的集群运行在同一个云供应商的不同地区上(一般同一云供应商跨地区的网络通信是需要收费的)或者运行在不同的云供应商上,那么将会导致显著的网络开销和成本的提升。
  ◎ 削弱了多集群之间的隔离性:Federation控制平面一旦出现问题,就可能会影响到所有的集群。一种可能的方案是,通过尽可能减少Federation控制平面中的逻辑,将Federation控制平面的逻辑尽可能多地传递给各Kubernetes子集群的控制平面,来减缓这种情况。但这类问题很难完全避免。同样,目前Federation这种“中心控制”的设计思路和实现方式还可能导致安全性及多集群同时不可用方面的问题。
  ◎ 成熟度:相对而言,Federation出现较晚,还不是很成熟。目前Kubernetes中的资源对象只有一部分在Federation中是可用的,而且很多可用的资源对象目前还只是Alpha状态。此外,Federation的设计、实现和用法目前随着Kubernetes大版本的变更都发生了很多改变,因此给使用者带来了不少困难。
  5.3.3 容器运行时接口(Container Runtime Interface-CRI)
  归根结底,Kubernetes Node(kubelet)的主要功能就是启动和停止容器的组件,我们称之为容器运行时(Container Runtime),其中最知名的就是Docker了。为了让Kubernetes更具扩展性,从其v1.5版本开始加入了容器运行时插件API,我们称之为Container Runtime Interface,简称CRI。
  1. CRI概述
  每种容器运行时都有其特点,因此不少用户希望Kubernetes能够支持更多的运行时。Kubernetes从v1.5版本开始引入了CRI接口规范,通过插件接口模式,让Kubernetes无须重新编译就可以使用更多的容器运行时。CRI包含Protocol Buffers、gRPC API、运行库支持及开发中的标准规范和工具。Docker-CRI的实现在Kubernetes v1.6版本时更新为Beta版本,并在kubelet启动时默认启动。
  可替代的容器运行时支持是Kubernetes中的新概念。在Kubernetes v1.3发布时,rktnetes项目同时发布,让rkt容器引擎成为除Docker外的又一选择。然而,不管是Docker还是rkt,都用到了kubelet的内部接口,同kubelet源码纠缠不清。这种程度的集成需要对kubelet的内部机制有非常深入的了解,还会给社区带来管理压力,这就给新生代容器运行时造成了难于跨越的集成壁垒。CRI接口规范试图用定义清晰的抽象层清除这一壁垒,让开发者能够专注于容器运行时本身。在通向插件式容器支持及建设健康生态环境的路上,这是一小步,也是重要的一步。
  2. CRI的主要组件
  kubelet使用gRPC框架利用UNIX Socket与容器运行时(或CRI代理)进行通信。在这个过程中kubelet是客户端,CRI代理(shim)是服务端。
  Protocol Buffers API包含两个gRPC服务:ImageService和RuntimeService。
  ImageService提供了从仓库拉取镜像、查看和移除镜像的功能。
  RuntimeService负责Pod和容器的生命周期管理、与容器的交互(exec/attach/port-forward)。rkt和Docker这样的容器运行时可以使用一个Socket同时提供两个服务。在kubelet中可以用--container-runtime-endpoint和--image-service-endpoint参数设置这个Socket。
  ……

前言/序言

  我不知道你是如何获得这本书的,可能是在百度头条、网络广告、朋友圈中听说本书后购买的,也可能是某一天逛书店时,这本书恰好神奇地出现在你面前的书架上,让你想起一千多年前那个意外得到《太公兵法》的传奇少年,你觉得这是冥冥之中上天的恩赐,于是果断带走。不管怎样,我相信多年以后,这本书仍然值得你回忆。
  Kubernetes这个名字起源于古希腊,是舵手的意思,所以它的Logo既像一张渔网,又像一个罗盘。谷歌采用这个名字的一层深意就是:既然Docker把自己定位为驮着集装箱在大海上自在遨游的鲸鱼,那么谷歌就要以Kubernetes掌舵大航海时代的话语木又,“捕获”和“指引”这条鲸鱼按照“主人”设定的路线巡游,确保谷歌倾力打造的新一代容器世界的宏伟蓝图顺利实现。
  虽然Kubernetes自诞生至今才1年多,其第一个正式版本Kubernetes 1.0于2015年7月才发布,完全是个新生事物,但其影响力巨大,已经吸引了包括IBM、惠普、微软、红帽、Intel、VMware、CoreOS、Docker、Mesosphere、Mirantis等在内的众多业界巨头纷纷加入。红帽这个软件虚拟化领域的领导者之一,在容器技术方面已经完全“跟从”谷歌了,不仅把自家的第三代OpenShift产品的架构底层换成了Docker+Kubernetes,还直接在其新一代容器操作系统Atomic内原生集成了Kubernetes。
  Kubernetes是第一个将“一切以服务(Service)为中心,一切围绕服务运转”作为指导思想的创新型产品,它的功能和架构设计自始至终地遵循了这一指导思想,构建在Kubernetes上的系统不仅可以独立运行在物理机、虚拟机集群或者企业私有云上,也可以被托管在公有云中。Kubernetes方案的另一个亮点是自动化,在Kubernetes的解决方案中,一个服务可以自我扩展、自我诊断,并且容易升级,在收到服务扩容的请求后,Kubernetes会触发调度流程,最终在选定的目标节点上启动相应数量的服务实例副本,这些副本在启动成功后会自动加入负载均衡器中并生效,整个过程无须额外的人工操作。另外,Kubernetes会定时巡查每个服务的所有实例的可用性,确保服务实例的数量始终保持为预期的数量,当它发现某个实例不可用时,会自动重启该实例或者在其他节点重新调度、运行一个新实例,这样,一个复杂的过程无须人工干预即可全部自动化完成。试想一下,如果一个包括几十个节点且运行着几万个容器的复杂系统,其负载均衡、故障检测和故障修复等都需要人工介入进行处理,那将是多么的难以想象。
  通常我们会把Kubernetes看作Docker的上层架构,就好像Java与J2EE的关系一样:J2EE是以Java为基础的企业级软件架构,而Kubernetes则以Docker为基础打造了一个云计算时代的全新分布式系统架构。但Kubernetes与Docker之间还存在着更为复杂的关系,从表面上看,似乎Kubernetes离不开Docker,但实际上在Kubernetes的架构里,Docker只是其目前支持的两种底层容器技术之一,另一个容器技术则是Rocket,后者来源于CoreOS这个Docker昔日的“恋人”所推出的竞争产品。
  Kubernetes同时支持这两种互相竞争的容器技术,这是有深刻的历史原因的。快速发展的Docker打败了谷歌曾经名噪一时的开源容器技术lmctfy,并迅速风靡世界。但是,作为一个已经对全球IT公司产生重要影响的技术,Docker背后的容器标准的制定注定不可能被任何一个公司私有控制,于是就有了后来引发危机的CoreOS与Docker分手事件,其导火索是CoreOS撇开了Docker,推出了与Docker相对抗的开源容器项目—Rocket,并动员一些知名IT公司成立委员会来试图主导容器技术的标准化,该分手事件愈演愈烈,最终导致CoreOS“傍上”谷歌一起宣布“叛逃”Docker阵营,共同发起了基于CoreOS+Rocket+Kubernetes的新项目Tectonic。这让当时的Docker阵营和Docker粉丝们无比担心Docker的命运,不管最终鹿死谁手,容器技术分裂态势的加剧对所有牵涉其中的人来说都没有好处,于是Linux基金会出面调和矛盾,双方都退让一步,最终的结果是Linux基金会于2015年6月宣布成立开放容器技术项目(Open Container Project),谷歌、CoreOS及Docker都加入了OCP项目。但通过查看OCP项目的成员名单,你会发现Docker在这个名单中只能算一个小角色了。OCP的成立最终结束了这场让无数人揪心的“战争”,Docker公司被迫放弃了自己的独家控制木又。作为回报,Docker的容器格式被OCP采纳为新标准的基础,并且由Docker负责起草OCP草案规范的初稿文档,当然这个“标准起草者”的角色也不是那么容易担当的,Docker要提交自己的容器执行引擎的源码作为OCP项目的启动资源。
  事到如今,我们再来回顾当初CoreOS与谷歌的叛逃事件,从表面上看,谷歌貌似是被诱拐“出柜”的,但局里人都明白,谷歌才是这一系列事件背后的主谋,其不仅为当年失败的lmctfy报了一箭之仇,还重新掌控了容器技术的未来。容器标准之战大捷之后,谷歌进一步扩大了联盟并提高了自身影响力。2015年7月,谷歌正式宣布加入OpenStack阵营,其目标是确保 Linux 容器及关联的容器管理技术Kubernetes能够被OpenStack生态圈所容纳,并且成为OpenStack平台上与KVM虚拟机一样的一等公民。谷歌加入OpenStack意味着对数据中心控制平面的争夺已经结束,以容器为代表的应用形态与以虚拟化为代表的系统形态将会完美融合于OpenStack之上,并与软件定义网络和软件定义存储一起统治下一代数据中心。
  谷歌凭借着几十年大规模容器使用的丰富经验,步步为营,先是祭出Kubernetes这个神器,然后又掌控了容器技术的制定标准,最后又入驻OpenStack阵营全力将Kubernetes扶上位,谷歌这个IT界的领导者和创新者再次王者归来。我们都明白,在IT世界里只有那些被大公司掌控和推广的,同时被业界众多巨头都认可和支持的新技术才能生存和壮大下去。Kubernetes就是当今IT界里符合要求且为数不多的热门技术之一,它的影响力可能长达十年,所以,我们每个IT人都有理由重视这门新技术。
  谁能比别人领先一步掌握新技术,谁就在竞争中赢得了先机。惠普中国电信解决方案领域的资深专家团一起分工协作,并行研究,废寝忘食地合力撰写,完成了这部近700页的Kubernetes木又威指南。经过两年的高速发展,Kubernetes先后发布了v1.0~v1.6这6个大版本,每个版本都带来了大量的新特性,能够处理的应用场景也越来越丰富。本书遵循从入门到精通的学习路线,全书共分为六大章节,涵盖了入门、实践指南、架构原理、开发指南、高级案例、运维指南和源码分析等内容,内容详实、图文并茂,几乎囊括了Kubernetes到v1.6版本的方方面面,无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士来说,本书都极具参考价值。
  吴治辉
  惠普公司系统架构师


《云原生架构实战:容器化与编排技术深度解析》 内容简介 在当今数字化浪潮席卷全球的背景下,企业架构正经历着前所未有的变革。以微服务、DevOps、持续集成/持续交付(CI/CD)为代表的云原生理念,正在重塑软件开发和部署的生命周期。而容器化技术,特别是 Docker,以及其强大的编排工具 Kubernetes,已成为实现这些现代架构模式的核心驱动力。 本书《云原生架构实战:容器化与编排技术深度解析》并非一本简单的工具书,而是一次深入探索云原生技术演进、核心原理、实践方法与未来趋势的旅程。我们旨在为读者构建一个全面、系统且具有前瞻性的知识体系,帮助您理解并掌握构建、部署、扩展和管理现代化应用所需的关键技能。 第一部分:现代应用架构的基石——容器化技术 本部分将从零开始,揭示容器化技术的本质及其为何能够引领架构变革。我们将深入探讨: 容器化技术的起源与演进: 回溯容器技术的历史,了解其从早期的 LXC 到 Docker 的发展历程,理解其解决的痛点。 Docker 核心概念详解: 详细讲解 Docker 镜像、容器、仓库、Dockerfile 等核心概念。我们将通过大量的实例代码,演示如何构建满足不同应用需求的 Docker 镜像,并解释其背后的工作原理,包括分层文件系统(UnionFS/OverlayFS)、命名空间(Namespaces)和控制组(Control Groups/cgroups)。 Docker 网络与存储: 深入剖析 Docker 的网络模型,包括桥接网络、宿主机网络、覆盖网络等,理解容器间通信和与外部访问的实现方式。同时,我们将讲解 Docker 的存储驱动,如 OverlayFS、AUFS 等,以及如何通过 Volume 和 Bind Mounts 实现持久化存储,为有状态应用的运行奠定基础。 Docker Compose 实践: 对于需要多个服务协同工作的复杂应用,Docker Compose 是不可或缺的利器。我们将详细介绍 Docker Compose 的语法和功能,演示如何使用 Compose 文件定义多容器应用的架构、配置网络和服务间的依赖关系,实现应用的快速构建和部署。 容器安全实践: 在享受容器化带来的便利的同时,安全性不容忽视。本节将探讨容器安全的关键点,包括镜像安全扫描、运行时安全加固、用户权限管理、网络隔离以及 Secrets 管理等,帮助读者构建更安全的容器化环境。 第二部分:分布式系统的调度大师——Kubernetes Kubernetes 作为当前事实上的容器编排标准,其复杂性和强大功能是无数企业拥抱云原生技术的关键。本部分将带领读者深入理解 Kubernetes 的架构、核心组件以及如何运用其强大的能力来管理和调度容器化应用。 Kubernetes 核心架构总览: 从宏观层面,我们将解析 Kubernetes 的 Master 组件(API Server, etcd, Controller Manager, Scheduler)和 Node 组件(Kubelet, Kube-proxy, Container Runtime)的职责和交互关系,理解其高可用、分布式架构的设计理念。 Kubernetes 核心对象详解: Pod: 作为 Kubernetes 中最小的可调度单元,我们将深入探讨 Pod 的生命周期、多容器 Pod 的设计模式(如 Sidecar, Adapter, Ambassador)、以及 Pod 的调度策略。 Deployment: 学习如何使用 Deployment 来声明式地管理无状态应用的部署、更新和回滚,理解 ReplicaSet、Deployment 与 Pod 之间的层级关系。 StatefulSet: 掌握如何使用 StatefulSet 来管理有状态应用,包括稳定且唯一的网络标识、持久化存储的自动伸缩和有序的部署与扩展。 Service: 理解 Service 如何为一组 Pod 提供稳定的访问入口,掌握 ClusterIP, NodePort, LoadBalancer, ExternalName 等不同的 Service 类型,以及如何实现负载均衡和服务的发现。 Namespace: 学习如何使用 Namespace 来逻辑上隔离集群内的资源,实现多租户管理和资源划分。 ConfigMap & Secret: 探讨如何将应用程序的配置和敏感信息与容器镜像解耦,通过 ConfigMap 和 Secret 来管理配置和凭据,提高应用的灵活性和安全性。 Kubernetes 网络模型: 深入理解 CNI(Container Network Interface)插件的工作原理,以及 Pod 间网络通信、Service 负载均衡、Ingress 的实现机制。我们将分析 Flannel, Calico 等主流 CNI 插件的特点。 Kubernetes 存储管理: 掌握 Persistent Volume (PV) 和 Persistent Volume Claim (PVC) 的概念,理解动态存储供给(StorageClass)如何自动化地为应用提供持久化存储,支持 NFS, iSCSI, Ceph 等多种后端存储。 Kubernetes 部署策略与高级特性: 滚动更新与蓝绿部署: 学习如何实现应用程序的平滑升级,最小化服务中断。 Horizontal Pod Autoscaler (HPA): 理解如何根据 CPU、内存或其他自定义指标自动伸缩 Pod 的数量,应对流量变化。 Resource Requests & Limits: 掌握如何为 Pod 分配和限制资源,保证集群的稳定性和资源的有效利用。 Taints & Tolerations / Node Affinity & Anti-Affinity: 学习如何精细化地控制 Pod 的调度策略,将 Pod 调度到特定的节点或避免调度到特定节点。 Kubernetes 安全实践: 深入讲解 RBAC (Role-Based Access Control) 授权机制、Pod Security Policies (PSP) / Pod Security Admission (PSA)、Network Policies、Secrets 加密存储等 Kubernetes 安全体系的关键组成部分。 Kubernetes 可观测性: 探索如何通过日志收集(如 ELK Stack / Loki)、指标收集(如 Prometheus)和分布式追踪(如 Jaeger)来监控 Kubernetes 集群和运行其上的应用,实现故障排查和性能优化。 第三部分:云原生实践与生态系统 除了 Docker 和 Kubernetes 的核心技术,本书还将扩展到更广泛的云原生生态系统和实践经验。 CI/CD 流水线构建: 讲解如何将 Docker 和 Kubernetes 集成到 CI/CD 流水线中,实现代码提交到生产环境的自动化部署。我们将介绍 Jenkins, GitLab CI, Argo CD, Tekton 等主流 CI/CD 工具在云原生环境下的应用。 Helm 包管理: 学习如何使用 Helm 来管理 Kubernetes 应用的生命周期,包括打包、部署、升级和卸载,简化复杂应用的部署和配置。 服务网格(Service Mesh)简介: 简要介绍 Istio, Linkerd 等服务网格技术,理解其在流量管理、可观测性和安全性方面为微服务带来的增强能力。 云原生解决方案与架构模式: 结合实际案例,探讨如何在不同的云平台(如 AWS EKS, Azure AKS, Google GKE)或混合云环境下部署和管理 Kubernetes 集群,以及如何设计高可用的、弹性的、可伸缩的云原生应用架构。 面向未来的云原生趋势: 展望 Serverless、WebAssembly(Wasm)在云原生领域的应用前景,以及 AI/ML 在运维和开发中的集成。 本书特点: 理论与实践并重: 结合大量的命令行操作、YAML 配置示例和代码片段,确保读者能够动手实践,融会贯通。 深度与广度兼备: 不仅覆盖核心概念,更深入剖析底层原理,同时广泛涉猎周边生态工具和新兴技术。 由浅入深,循序渐进: 从容器化基础到复杂的 Kubernetes 集群管理,逐步引导读者构建完整的知识体系。 面向真实世界的挑战: 关注安全性、可观测性、CI/CD 等在实际生产环境中至关重要的问题。 通过阅读《云原生架构实战:容器化与编排技术深度解析》,您将能够: 深刻理解容器化和 Kubernetes 的核心价值。 掌握构建、部署和管理容器化应用的关键技能。 设计和实现高可用、可伸缩的云原生架构。 提升开发效率和运维能力,加速数字化转型。 本书适合所有希望深入理解和应用容器化与 Kubernetes 技术的开发者、运维工程师、架构师以及技术爱好者。无论您是刚刚踏入云原生领域的新手,还是希望深化理解的资深从业者,都能从中受益。让我们一起开启这场激动人心的云原生技术探索之旅!

用户评价

评分

这本书的标题瞬间吸引了我——“Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版)”。我一直对容器化技术,特别是Kubernetes充满好奇,但也总觉得它高深莫测,难以入门。看到“从Docker到Kubernetes实践全接触”,我心里就有了底,这似乎是一条清晰的学习路径,能够一步步地引导我理解和掌握这个强大的编排工具。书名中的“权威指南”和“实践全接触”也让我充满了期待,希望它能提供扎实的技术理论,同时又不乏生动的实战案例。我尤其看重“纪念版”这个后缀,它暗示着这本书可能经过了多年的沉淀和打磨,内容更加成熟和完善,也许还包含了一些作者对这个领域发展历程的思考和总结,这对于一个初学者来说,无疑是极大的吸引力。我设想这本书会详细地讲解Docker的基础知识,包括镜像、容器、仓库等核心概念,并且会深入到Dockerfile的编写技巧,如何构建高效、安全的镜像。然后,很自然地,它会引出Kubernetes,从其架构、核心组件(如etcd、apiserver、controller-manager、scheduler、kubelet、kube-proxy)讲起,层层剖析其工作原理。我期望书中会包含大量的代码示例和图示,让抽象的概念变得可视化,易于理解。更重要的是,我希望这本书能提供丰富的实践场景,例如如何部署Web应用、数据库,如何进行服务的发现和负载均衡,如何实现自动伸缩和滚动更新,以及如何进行日志收集和监控。毕竟,理论学习固然重要,但只有通过亲手实践,才能真正地将知识内化。

评分

我购买《Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版)》,主要是因为我一直对云计算和容器化技术的未来发展感到兴奋,而Kubernetes无疑是这个领域的核心。我希望这本书能够帮助我构建一个坚实的理论基础,并在此基础上进行大量的实践操作。从Docker到Kubernetes的这个学习路径,让我觉得这本书的编排非常合理,能够循序渐进地提升我的技能。我期待书中能够深入讲解Kubernetes的控制器模式,这对我理解Kubernetes的自动化能力至关重要。例如,Deployment控制器如何确保期望的Pod数量,StatefulSet控制器如何管理有状态应用,以及ReplicaSet控制器在其中扮演的角色。我还会非常关注书中关于Kubernetes集群的扩展性和弹性设计的部分,包括如何配置Horizontal Pod Autoscaler(HPA)和Cluster Autoscaler,以及如何应对节点故障和资源瓶颈。另外,我希望能在这本书中找到关于Kubernetes生态系统中常用工具的介绍,比如Prometheus和Grafana在监控方面的应用,EFK(Elasticsearch, Fluentd, Kibana)或Loki在日志收集和分析方面的作用,以及Kubernetes Dashboard的使用。这本书的“纪念版”也让我联想到,作者可能在其中分享了许多个人在Kubernetes实践中的经验和教训,这些宝贵的“坑”和“绕”是我非常渴望学习的。

评分

对于《Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版)》,我个人最看重的是其“实践全接触”这几个字,以及“纪念版”所隐含的深度和广度。在我的职业生涯中,我接触过很多理论书籍,但很多在实际操作中却显得捉襟见肘。因此,我期望这本书能够提供非常详细、可操作的指导。我希望它能从Docker的基础知识,如Dockerfile的最佳实践、镜像的优化、多阶段构建等方面开始,帮助我建立对容器化的深刻理解。然后,它应该能够清晰地阐述Kubernetes的架构,包括其控制平面组件(apiserver, etcd, controller-manager, scheduler)和工作节点组件(kubelet, kube-proxy, container runtime)的职责。我特别想看到书中对Kubernetes核心概念的详细讲解,如Pod的生命周期、Deployment的滚动更新策略、StatefulSet的持久化存储管理、DaemonSet的节点部署等。另外,对于网络部分,我希望它能解释清楚CNI插件的工作原理,以及Service和Ingress在流量路由中的作用。当然,一本“实践全接触”的书,必须包含丰富的实战案例,比如如何部署一个简单的Web应用,如何配置数据库的持久化,如何实现服务的自动伸缩,以及如何进行集群的监控和日志收集。这本书的“纪念版”让我觉得,它可能包含了一些对Kubernetes长期演进的看法,或者作者在多年的从业经验中总结出的关于Kubernetes的“道”与“术”,这些是我非常期待的内容。

评分

我拿到《Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版)》这本书,首先想到的是它是否能真正解答我近期在工作中遇到的一个难题。我们现在在使用Kubernetes管理微服务,但部署和管理的过程有些混乱,尤其是在处理不同环境的配置差异,以及如何高效地进行灰度发布和A/B测试时,我们常常感到力不从心。因此,我非常期待这本书能够提供一些解决这些实际问题的具体方案和指导。例如,关于配置管理,我希望它能详细介绍ConfigMap和Secret的使用,以及如何结合Helm Chart来管理复杂的应用部署。在灰度发布和A/B测试方面,我期望书中能讲解如何利用Kubernetes的原生功能(如Deployment的策略)或者结合Istio、Linkerd等服务网格来实现这些高级场景。此外,对于容器安全,我希望能有专门的章节来探讨如何加固Kubernetes集群,包括Pod安全策略、网络策略、镜像安全扫描等。本书的“纪念版”字样,让我觉得它可能还包含了一些对Kubernetes发展趋势的预测和行业洞察,这对于我制定长期的技术规划非常有帮助。我还会关注书中关于CI/CD集成的内容,例如如何将Jenkins、GitLab CI或GitHub Actions与Kubernetes无缝集成,以实现自动化部署和交付。

评分

拿到这本《Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版)》,我最先关注的是它的内容组织和深度。我期待它能提供一个从零开始的进阶学习模型。首先,对于Docker的部分,我希望它不仅仅停留在Docker的基本命令和概念介绍,而是能深入讲解Docker的底层原理,比如cgroups和namespaces是如何工作的,以及如何利用Docker构建更复杂的应用环境。例如,如何进行多阶段构建来优化镜像大小,如何安全地管理Docker秘密信息,以及Docker Compose在本地开发环境中的应用。然后,这本书应当自然地过渡到Kubernetes,而这个过渡应该是顺畅且有逻辑的。我希望它能详细解释Kubernetes的声明式API,以及它如何通过控制器模式来实现自动化。对于Kubernetes的核心对象,如Pod、Deployment、Service、Ingress、StatefulSet、DaemonSet等,我期待能够有详尽的解析,包括它们的YAML配置、生命周期管理和最佳实践。书名中的“实践全接触”让我对实操部分寄予厚望,我希望它能覆盖从最基础的集群搭建(例如使用kubeadm或minikube)到更高级的主题,如网络插件(CNI)的选择和配置、存储卷的管理(CSI)、RBAC授权、资源配额、命名空间隔离,以及如何实现高可用性和容错。我还会特别留意书中关于故障排查和性能优化的部分,因为这些往往是在实际工作中遇到的关键挑战。

评分

一口气买了10本。很优惠。速度很快,没想到京东派送员送到晚上差不多九点都还在送,书看起来挺好的,但是买了3本Oreiliy的书,只有java与xml这边有防伪贴,其他两本没有,不知道是不是正版。看着还不错吧,给好评。

评分

正版!京东618图书活动力度很大呀!

评分

非常不错,强烈推荐 .... 物流配送速度点赞。

评分

包装完好,值得信赖,抽空看看

评分

此用户未填写评价内容

评分

开始看了,还不错!!

评分

还没有看,看了之后再来评价,质量是不错的

评分

评价晒单商品评分提交的照片视频

评分

非常值得购买的一本书,全是干货

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有