猜你喜欢
Kubernetes权威指南:从Docker到Kubernetes实践全接触(第6版)(上)

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

书籍作者:龚正 ISBN:9787121479274
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5222
创建日期:2024-06-27 发布日期:2024-06-27
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书是《Kubernetes权威指南:从Docker到Kubernetes实践全接触》(第6版)的上册,总计9章,涵盖了Kubernetes v1.29及之前版本的主要特性。第1章首先从一个简单的示例开始,让读者通过动手实践初步感受Kubernetes的强大;然后讲解Kubernetes的概念、术语。考虑到Kubernetes的概念、术语繁多,所以从它们的用途及相互关系入手进行讲解,以期初学者能快速、准确、全面、深刻地理解这部分内容。第2章围绕Kubernetes的安装和配置进行讲解。如果要在生产级应用中部署Kubernetes,则建议读者将本章内容全部实践一遍,否则可以选择其中部分内容进行实践。其中比较重要的是Kubernetes的命令行部分,对这部分操作得越熟练,后面进行研发或运维就越轻松。第3章全面、深入地讲解了Pod的方方面面,其中非常有挑战性的是Pod调度部分的内容,这也是生产实践中相当实用的知识和技能。第4章围绕Pod工作负载进行讲解,这些工作负载分别实现了无状态服务、有状态服务和批处理任务的不同需求。第5章围绕Service进行深入讲解,涉及服务发现、DNS、IPv6及Ingress等高级特性。第6、7章全面且深入地讲解Kubernetes的运行机制和原理,涉及API Server、Controller、Scheduler、kubelet、kube-proxy等几个核心组件的作用、原理和实现方式等,可以让读者加深对Kubernetes的整体认知,使其在遇到问题时能更快地找到解决方案。第8、9章主要讲解Kubernetes运维方面的技能和知识,涉及集群多租户模式下的资源管理方案、Pod的QoS管理,以及基于NUMA资源亲和性的资源分配管理、Pod调度、故障排查等。

本书适合资深IT从业者、研发部门主管、架构师(开发语言不限)、研发工程师、运维工程师、软件QA和测试工程师(两年以上经验),以及以技术为主的售前工作人员(两年以上经验)阅读和参考。


作者简介

龚 正

HPE高级顾问,拥有二十多年IT从业经验,在云计算、大数据、大型企业级应用等领域拥有丰富的咨询、规划、架构设计和实施经验,负责过多个大型云平台的规划和建设,是电信、金融、互联网等领域的资深行业专家,也是《Kubernetes权威指南:企业级容器云实战》等书作者。

吴治辉

领航磐云资深架构师,拥有二十多年软件研发经验,专注于云原生、容器化、企业数字化转型、AI赋能企业应用领域的技术研究和产品研发。拥有丰富的大型项目架构设计经验,是业界少有的具备很强编码能力的资深架构师,也是《ZeroC Ice权威指南》《架构解密:从分布式到微服务》《Kubernetes权威指南:企业级容器云实战》《区块链轻松上手》等书作者。

闫健勇

HPE高级项目经理、总架构师,拥有二十多年电信行业系统建设经验,主导了多项电信大型系统的架构设计和管理,对于云计算和大数据在电信行业中的应用拥有丰富的经验,也是《Kubernetes权威指南:企业级容器云实战》等书作者。


编辑推荐
适读人群 :《Kubernetes权威指南:从Docker到Kubernetes实践全接触》一书的读者对象范围很广,甚至一些高校也将本书作为参考教材。考虑到Kubernetes的技术定位,我们建议以下读者购买和阅读本书:资深IT从业者、研发部门主管、架构师(开发语言不限)、研发工程师、运维工程师、软件QA和测试工程师(两年以上经验),以及以技术为主的售前工作人员(两年以上经验)。 建议读者在计算机上安装合适的虚拟软件,部署Kubernetes环境并动手实践书中的大部分示例。如果读者用的是Windows 10及以上版本,则可以通过WSL2虚拟机技术快速部署Kubernetes实例,也可以在公有云上部署或者使用现有的Kubernetes环境,降低入门难度。

1、第6版基于Kubernetes 1.29版本进行全面的内容升级,内容几乎全部更新

2、第6版内容更新完毕,因太厚(近1300页)而拆分,拆分为上下两册,此为上册。

2、目录细致,便于检索,用作K8s容器工具书也很趁手。

3、提供源码下载和读者交流群,可与万千本书读者交流学习、工作心得

4、CNCF、神州数码、用友、德勤、VMware、华为等众咖力荐!

5、从云原生到多模态大模型架构转型上佳参考读物。


前言

短短几年,Kubernetes已从一个不为人知的新生事物发展成为一个影响全球IT技术的基础设施平台,并成功推动了云原生时代的到来,使微服务架构、Service Mesh、Serverless、边缘计算等热门技术加速普及和落地。Kubernetes不但一跃成为云原生应用的全球级基础平台,还促进了操作系统层面的容器化变革,让Linux容器里的应用和Windows容器里的应用在Kubernetes的统一架构集群中互联互通。

目前,在GitHub上已有超过两万名开源志愿者参与Kubernetes项目,使之成为开源领域发展速度超快的项目之一。

《Kubernetes权威指南:从Docker到Kubernetes实践全接触》由慧与中国通信和媒体解决方案领域的资深专家合力撰写而成,对Kubernetes在国内的普及和推广做出了巨大的贡献。本书第6版的出版也离不开领航磐云技术专家的全力支持。

--------------------读者对象--------------------

《Kubernetes权威指南:从Docker到Kubernetes实践全接触》一书的读者对象范围很广,甚至一些高校也将本书作为参考教材。考虑到Kubernetes的技术定位,我们建议以下读者购买和阅读本书:资深IT从业者、研发部门主管、架构师(开发语言不限)、研发工程师、运维工程师、软件QA和测试工程师(两年以上经验),以及以技术为主的售前工作人员(两年以上经验)。

建议读者在计算机上安装合适的虚拟软件,部署Kubernetes环境并动手实践书中的大部分示例。如果读者用的是Windows 10及以上版本,则可以通过WSL2虚拟机技术快速部署Kubernetes实例,也可以在公有云上部署或者使用现有的Kubernetes环境,降低入门难度。

--------------------本书讲了什么--------------------

截至本书交稿,Kubernetes已经发布29个大版本,每个版本都带来了大量的新特性,使Kubernetes能够覆盖的应用场景越来越多。

《Kubernetes权威指南:从Docker到Kubernetes实践全接触》始终采用从入门到精通的讲解风格,内容涵盖入门、安装、实践、核心原理、网络与存储、运维、开发、新特性演进等,几乎囊括了Kubernetes当前主流版本的方方面面。当然,因为需要涵盖的内容非常多,所以本书从第6版开始分为上下两册。

--------------------上册内容架构--------------------

第1章首先从一个简单的示例开始,让读者通过动手实践初步感受Kubernetes的强大;然后讲解Kubernetes的概念、术语。考虑到Kubernetes的概念、术语繁多,所以从它们的用途及相互关系入手进行讲解,以期初学者能快速、准确、全面、深刻地理解这部分内容。

第 2 章围绕Kubernetes的安装和配置进行讲解。如果要在生产级应用中部署Kubernetes,则建议读者将本章内容全部实践一遍,否则可以选择其中部分内容进行实践。其中比较重要的是Kubernetes的命令行部分,对这部分操作得越熟练,后面进行研发或运维就越轻松。

第3~5章对于大部分读者来说,是很重要的章节,也是学会Kubernetes应用建模的关键章节。第3章全面、深入地讲解了Pod的方方面面,其中非常有挑战性的是Pod调度部分的内容,这也是生产实践中相当实用的知识和技能。第4章围绕Pod工作负载进行讲解,这些工作负载分别实现了无状态服务、有状态服务和批处理任务的不同需求。第5章围绕Service进行深入讲解,涉及服务发现、DNS、IPv6及Ingress等高级特性。

第6、7章全面且深入地讲解Kubernetes的运行机制和原理,涉及API Server、Controller Manager、Scheduler、kubelet、kube-proxy等几个核心组件的作用、原理和实现方式等,可以让读者加深对Kubernetes的整体认知,在遇到问题时能更快地找到解决方案。

第8、9章主要讲解Kubernetes运维方面的技能和知识,涉及集群多租户模式下的资源管理方案、Pod的QoS管理,以及基于NUMA资源亲和性的资源分配管理、Pod调度、故障排查等。

--------------------下册内容架构--------------------

第1、2章围绕Kubernetes认证机制和安全机制进行深入讲解,既有实例,又有深入分析,可以让读者更容易理解Kubernetes中的认证机制、授权模式、准入控制机制,以及Pod的安全管理机制。

第3、4章围绕容器网络和Kubernetes网络进行深入讲解。第3章讲解容器网络基础,对局域网、互联网和常见网络设备等知识进行介绍;第4章讲解Kubernetes网络原理,对Kubernetes网络模型、CNI网络模型、开源容器网络方案都做了详细介绍,对Kubernetes防火墙相关的网络策略也做了相关分析。

第 5、6 章围绕Kubernetes存储进行深入讲解,涉及持久卷相关的 PV、PVC、StorageClass、静态和动态存储管理,以及CSI存储机制的原理和发展状况。

第7、8章围绕Kubernetes API和开发实战进行讲解,涉及Kubernetes资源对象、Kubernetes API、CRD和Operator扩展机制,以及如何通过swagger-editor快速调用和测试Kubernetes API,并针对Operator开发给出完整的示例说明。

第9章对Kubernetes的新功能做了一些补充说明,包括Kubernetes对Windows容器的支持、如何在Windows Server上部署Kubernetes、Kubernetes对GPU的支持和发展趋势、Kubernetes的自动扩缩容机制等,对Kubernetes的生态系统与演进路线也进行了深入讲解。

附录A深入讲解了Kubernetes的核心服务配置。

--------------------读者服务--------------------

我们为读者提供了配套源码及读者交流群,读者可参考本书封底的“读者服务”获取配套源码下载链接,以及加入本书读者交流群。

-----------------------致谢-----------------------

感谢神州数码集团及领航磐云的大力支持。

感谢电子工业出版社工作严谨、高效的张国霞编辑,她在成书过程中对笔者的指导、协助和鞭策,是本书得以完成的重要助力。


目录



第1章 Kubernetes入门

1.1 了解Kubernetes

1.2 了解Kubernetes中的资源对象

1.3 了解Kubernetes集群

1.3.1 Master

1.3.2 Node

1.4 了解Kubernetes应用

1.4.1 Service与Pod

1.4.2 Label与Label Selector

1.4.3 Pod与Deployment

1.4.4 Service的ClusterIP地址

1.4.5 Service的外网访问问题

1.4.6 有状态应用集群

1.4.7 批处理应用

1.4.8 应用的配置问题

1.4.9 应用自动化运维相关的重要对象

1.5 了解Kubernetes存储

1.5.1 emptyDir

1.5.2 hostPath

1.5.3 公有云Volume

1.5.4 其他类型的Volume

1.5.5 动态存储管理

1.6 了解Kubernetes安全

1.7 从一个简单的示例开始

1.7.1 环境准备

1.7.2 启动MySQL服务

1.7.3 启动Tomcat应用

1.7.4 通过浏览器访问网页

第2章 Kubernetes安装和配置指南

2.1 系统要求

2.2 通过kubeadm快速安装Kubernetes集群

2.2.1 安装kubeadm、kubelet和kubectl

2.2.2 修改kubeadm的默认配置

2.2.3 下载Kubernetes相关镜像

2.2.4 通过kubeadm init命令安装Master

2.2.5 将新的Node加入集群

2.2.6 安装CNI网络插件

2.2.7 验证Kubernetes集群是否正常工作

2.3 通过二进制文件安装Kubernetes集群

2.3.1 Master的高可用部署架构

2.3.2 创建CA根证书

2.3.3 部署安全的etcd高可用集群

2.3.4 部署安全的Kubernetes Master高可用集群

2.3.5 部署各个Node的服务

2.4 Kubernetes集群的版本更新

2.4.1 以二进制方式部署的Kubernetes集群的版本更新

2.4.2 以kubeadm方式部署的Kubernetes集群的版本更新

2.5 CRI详解

2.5.1 CRI概述

2.5.2 CRI的主要组件

2.5.3 Pod和容器的生命周期管理

2.5.4 面向容器级别的设计思路

2.6 kubectl用法详解

2.6.1 kubectl用法概述

2.6.2 kubectl子命令详解

2.6.3 kubectl可操作的资源对象详解

2.6.4 kubectl的公共参数说明

2.6.5 kubectl格式化输出

2.6.6 kubectl的日志输出级别

2.6.7 常见的kubectl操作示例

第3章 深入掌握Pod

3.1 Pod定义详解

3.2 Pod的基本用法

3.3 静态Pod

3.4 Pod容器共享Volume

3.5 Pod的配置管理

3.5.1 ConfigMap概述

3.5.2 创建ConfigMap

3.5.3 在Pod中使用ConfigMap

3.5.4 ConfigMap的可选设置

3.5.5 使用ConfigMap时的限制条件

3.6 在容器内获取Pod信息(Downward API)

3.6.1 环境变量方式

3.6.2 Volume挂载方式

3.6.3 Downward API支持设置的Pod和Container信息

3.7 Pod的生命周期管理

3.7.1 Pod的阶段(Phase)

3.7.2 Pod的状况(Condition)

3.7.3 容器的状态(State)

3.7.4 Pod的重启策略(RestartPolicy)

3.7.5 Pod的终止和垃圾清理

3.8 容器的探针和健康检查机制

3.9 初始化容器(Init Container)

3.9.1 初始化容器概述

3.9.2 初始化容器示例

3.9.3 使用初始化容器时的注意事项

3.9.4 将初始化容器作为长时间运行的边车容器

第4章 Pod工作负载详解

4.1 Pod的工作负载管理机制概述

4.2 Deployment:面向无状态应用的Pod副本集管理

4.2.1 Deployment提供的管理功能

4.2.2 Deployment的配置信息

4.2.3 Deployment的更新机制

4.2.4 Deployment的回滚

4.2.5 Deployment部署的暂停和恢复

4.2.6 Deployment的生命周期

4.3 DaemonSet:在每个Node上仅运行一个Pod

4.3.1 DaemonSet概述

4.3.2 DaemonSet的配置信息

4.3.3 DaemonSet的更新策略

4.3.4 DaemonSet的回滚

4.4 StatefulSet:面向有状态应用的Pod副本集管理

4.4.1 StatefulSet的主要配置和工作机制

4.4.2 StatefulSet的Pod水平扩缩容机制

4.4.3 StatefulSet的更新策略

4.4.4 StatefulSet的Pod管理策略

4.4.5 StatefulSet的PVC存储保留策略

4.4.6 使用StatefulSet搭建MongoDB集群

4.5 Pod水平扩缩容机制

4.5.1 手动扩缩容机制

4.5.2 自动扩缩容机制

4.6 Job:批处理任务

4.6.1 Job的主要配置和工作机制

4.6.2 Job的并行处理机制和常用模式

4.6.3 Pod失效时的处理机制

4.6.4 Job的终止与清理机制

4.6.5 Job的挂起与恢复

4.7 CronJob:定时任务

4.7.1 CronJob的定时表达式

4.7.2 编写一个CronJob配置文件

4.7.3 CronJob工作机制的不足之处

第5章 深入掌握Service

5.1 Service定义详解

5.2 Service的概念和原理

5.2.1 Service和Endpoint概述

5.2.2 Service的负载均衡机制

5.2.3 Service的多端口设置

5.2.4 将外部服务定义为Service

5.2.5 Service的类型

5.2.6 Headless Service

5.2.7 为服务设置外部IP地址

5.2.8 Service支持的网络协议

5.2.9 Kubernetes的服务发现机制

5.2.10 端点分片

5.2.11 拓扑感知路由机制

5.3 DNS服务搭建和配置指南

5.3.1 修改每个Node上kubelet的DNS启动参数

5.3.2 部署CoreDNS服务

5.3.3 服务名的DNS解析

5.3.4 CoreDNS的配置说明

5.4 Node本地DNS缓存服务搭建和配置指南

5.5 Service和Pod的DNS域名相关特性

5.5.1 Service的DNS域名

5.5.2 Pod的DNS域名

5.5.3 Pod自定义hostname和subdomain

5.5.4 FQDN格式的Pod主机名设置

5.5.5 Pod的DNS策略

5.5.6 Pod中的自定义DNS配置

5.5.7 Windows Node的DNS解析机制说明

5.6 Ingress 7层路由机制

5.6.1 一个完整的例子(Ingress Controller+Ingress策略+客户端访问)

5.6.2 Ingress资源对象详解

5.6.3 Ingress策略配置详解

5.6.4 Ingress的TLS安全设置

5.6.5 Ingress的继任者——Gateway API简介

5.7 Kubernetes对IPv4和IPv6双栈功能的支持

5.7.1 Kubernetes集群启用IPv4和IPv6双栈功能

5.7.2 Pod双栈IP地址配置

5.7.3 Service双栈IP地址配置

第6章 Master核心组件的运行机制

6.1 Kubernetes架构解析

6.1.1 以API Server为中心的架构

6.1.2 全自动的资源管控能力

6.1.3 以开放为基础的演进思路

6.1.4 拥抱新技术

6.1.5 安全至上

6.2 API Server原理解析

6.2.1 API Server概述

6.2.2 API Server架构解析

6.2.3 独特的Kubernetes Proxy API

6.2.4 集群功能模块之间的通信

6.2.5 API Server网络隔离的设计

6.3 Controller Manager原理解析

6.3.1 Deployment Controller

6.3.2 Node Controller

6.3.3 ResourceQuota Controller

6.3.4 Namespace Controller

6.3.5 Endpoint Controller

6.4 Scheduler原理解析

6.4.1 Scheduler的调度流程

6.4.2 Scheduler Framework

6.4.3 Scheduling Profiles

6.4.4 深入分析抢占式调度

第7章 Node核心组件的运行机制

7.1 kubelet运行机制解析

7.1.1 资源管理

7.1.2 Pod管理

7.1.3 性能指标API

7.1.4 容器运行时管理

7.2 kube-proxy运行机制解析

7.2.1 第一代Proxy7.2.2 第二代Proxy

7.2.3 第三代Proxy

7.3 Kubernetes中的垃圾回收机制

7.3.1 Pod对象的垃圾回收

7.3.2 Job对象的垃圾回收

7.3.3 无主对象的垃圾回收

7.3.4 容器和镜像的垃圾回收

7.3.5 PV对象的垃圾回收

7.3.6 Node与Node Lease对象的垃圾回收

第8章 Kubernetes运维管理基础

8.1 基础集群运维

8.1.1 常用运维技巧

8.1.2 Node的运维管理

8.1.3 PodDisruptionBudget——出现干扰时的Pod保护机制

8.1.4 Pod中的多个容器共享进程命名空间

8.1.5 使用CEL校验数据

8.2 kustomize的基础操作

8.2.1 kustomize概述

8.2.2 kustomize的常见例子

8.2.3 kustomization的高级用法

8.3 Helm的基础操作

8.3.1 Helm——应用包管理

8.3.2 Helm——Chart仓库

8.3.3 Helm——部署应用

8.3.4 Helm——应用更新和回滚

8.3.5 Helm——卸载应用

8.4 集群监控

8.4.1 Kubernetes核心组件的性能监控

8.4.2 Metrics Server实践

8.4.3 Prometheus性能监控平台实践

8.4.4 Kubernetes日志管理实践

8.4.5 使用Dashboard监控集群资源状态和性能

第9章 Kubernetes运维管理进阶

9.1 多租户计算资源管理实践

9.1.1 集群计算资源的规划

9.1.2 多租户资源管理实践

9.1.3 Pod的QoS管理实践

9.2 基于NUMA亲和性的资源分配管理

9.2.1 CPU Manger的配置

9.2.2 Memory Manager的配置

9.2.3 Topology Manager的配置

9.3 Pod的调度管理实践指南

9.3.1 基于Node Label的调度策略

9.3.2 Node亲和性调度策略

9.3.3 Pod间的亲和性与反亲和性调度策略

9.3.4 指定Node名称的定向调度策略

9.3.5 Taint和Toleration(污点和容忍度)的调度策略

9.3.6 Pod Priority Preemption:Pod优先级和抢占调度策略

9.3.7 多调度器管理

9.3.8 Pod拓扑分布约束(Topology Spread Constraints)调度策略

9.4 故障排查指南

9.4.1 集群基础故障排查指南

9.4.2 应用故障排查指南

9.4.3 常见问题指南

9.4.4 寻求帮助

产品特色