万本电子书0元读

万本电子书0元读

顶部广告

深入理解Kubernetes源码电子书

通过源码深入了解Kubernetes,掌握容器编排的精髓!详解核心组件和实现原理,帮助开发者、运维工程师及架构师*管理大规模多容器集群,应对生产环境中的复杂编排需求。

售       价:¥

纸质售价:¥125.60购买纸书

1人正在读 | 0人评论 6.5

作       者:郑东旭 等

出  版  社:电子工业出版社

出版时间:2024-08-01

字       数:50.7万

所属分类: 科技 > 计算机/网络 > 计算机理论与教程

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
在过去几年中,容器技术的广泛应用推动了容器编排技术的迅猛发展,尤其是Kubernetes的兴起。作为当前非常受欢迎的容器编排系统,Kubernetes能够有效应对生产环境中复杂的编排需求,帮助企业实现大规模多容器集群的高效管理。本书将Kubernetes 1.25.0版本源码作为剖析对象,深探讨其核心组件和实现原理。通过学习Kubernetes源码,读者不仅能掌握容器编排技术的精髓,还能提升自身在云计算领域的竞争力。本书适合对容器技术和云计算感兴趣的发者、运维工程师及架构师参考和阅读。<br/>【作者】<br/>郑东旭(Derek Zheng),BFE(万亿流量转发引擎)源项目的作者之一,擅长Linux下高性能服务器的发,对云计算、区块相关技术领域有深刻的理解。邱世达,云原生技术专家,热爱源事业,长期参与Kubernetes社区贡献,Kubernetes Contributor Top 30,Sig Cluster Lifecycle成员,Kubeadm项目维护者之一,具备多年云计算领域研究工作经验。冀超,曾在百度等多家互联网公司任职,参与过公有云和公司内的云原生平台建设,具有多年Kubernetes使用和发经验。李晋林,长期致力于云原生领域,对Kubernetes有深理解和研究。在金融交易系统中拥有多年的Kubernetes使用和二次发经验,主要主导公司业务上云、线上流量迁移等工作。杨川胡(阳明),云原生爱好者,k8s技术圈社区作者,云原生学习网站优知识创始人。周世伟,资深码农,云原生爱好者和践行者,擅长Kubernetes、服务网格发,技术宅。<br/>
目录展开

内容简介

前言

第1章 Kubernetes基本架构

1.1 Kubernetes发展历史

1.2 Kubernetes架构

1.3 Kubernetes各组件功能

1.3.1 kubectl

1.3.2 client-go

1.3.3 kube-apiserver

1.3.4 kube-controller-manager

1.3.5 kube-scheduler

1.3.6 kubelet

1.3.7 kube-proxy

1.3.8 Container Runtime

1.4 Kubernetes Project Layout设计

第2章 Kubernetes构建过程

2.1 构建方式

2.2 一切都始于Makefile

2.3 本地环境构建

2.3.1 本地环境构建命令

2.3.2 本地环境构建过程

2.4 容器环境构建

2.4.1 容器环境构建命令

2.4.2 容器环境构建过程

第3章 Kubernetes核心数据结构

3.1 初识数据结构

3.2 基本概念

3.2.1 API的层次结构

3.2.2 版本控制

3.2.3 组

3.2.4 API术语

3.2.5 API资源组成

3.2.6 版本化资源与未版本化资源

3.2.7 内部版本与外部版本

3.3 Kubernetes API的数据结构

3.3.1 APIGroup、APIVersions

3.3.2 APIResource

3.3.3 GVK和GVR

3.3.4 内置资源全景图

3.4 Kubernetes资源定义

3.4.1 内部版本定义

3.4.2 外部版本定义

3.5 将资源注册到Scheme中

3.5.1 资源类型注册入口

3.5.2 Scheme的数据结构

3.5.3 Scheme的初始化

3.5.4 SchemeBuilder资源注册

3.5.5 资源外部版本注册

3.5.6 资源内部版本注册

3.5.7 所有资源的注册入口

3.5.8 资源注册表的查询方法

3.5.9 资源对象的创建

3.5.10 资源对象的转换

3.5.11 资源对象默认值的设置

3.5.12 资源字段的转换

3.6 对象体系设计

3.6.1 资源对象的基本信息

3.6.2 对象体系类图

3.6.3 runtime.Object

3.6.4 metav1.TypeMeta

3.6.5 metav1.ObjectMeta

3.6.6 Unstructured

3.7 runtime.Codec资源编/解码

3.7.1 编/解码数据结构

3.7.2 CodecFactory实例化

3.7.3 codec编/解码实现类

3.7.4 json.Serializer编/解码

3.7.5 protobuf.Serializer编/解码

3.7.6 UnstructuredJSONScheme实现类

3.7.7 NegotiatedSerializer

3.7.8 ParameterCodec

3.7.9 runtime包下的Codec相关函数

3.7.10 Codec核心调用链路

3.7.11 Codec的使用方式

3.8 Converter资源版本转换器

3.8.1 Converter的数据结构

3.8.2 Converter转换函数的注册

3.8.3 Converter的初始化

3.8.4 Converter资源版本转换的实现

3.9 使用RESTMapper管理GVR和GVK映射

3.9.1 RESTMapper的数据结构

3.9.2 RESTMapper实现类

3.9.3 DefaultRESTMapper默认实现类

3.9.4 PriorityRESTMapper优先级映射

3.9.5 DeferredDiscoveryRESTMapper实现类

3.9.6 RESTMapper的使用

3.9.7 RESTMapping的数据结构及典型用法

第4章 Kubernetes核心资源对象

4.1 初识Kubernetes资源对象

4.2 metav1.ObjectMeta属性元数据

4.2.1 Name

4.2.2 GenerateName

4.2.3 Annotation

4.2.4 Generation

4.2.5 ResourceVersion

4.2.6 OwnerReference

4.2.7 Finalizers

4.2.8 ManagedFields

4.3 Pod资源对象

4.3.1 PodSpec字段详解

4.3.2 Container字段详解

4.3.3 Pod创建流程

4.3.4 Pause容器及创建流程

4.3.5 PodSpec生成容器参数

4.3.6 容器的通用创建流程

4.3.7 资源配额与cgroup

4.3.8 QoS与驱逐顺序

4.3.9 静态Pod

4.3.10 健康检查

4.3.11 Pod的状态

4.3.12 原地升级

4.4 工作负载资源

4.4.1 Deployment

4.4.2 ReplicaSet

4.4.3 StatefulSet

4.4.4 DaemonSet

4.4.5 Job

4.4.6 CronJob

4.5 发现和负载均衡资源

4.5.1 Service

4.5.2 Ingress

4.5.3 Endpoints

4.5.4 EndpointSlice

4.5.5 NetworkPolicy

4.6 配置和存储资源

4.6.1 卷

4.6.2 PV与PVC

4.6.3 StorageClass

4.7 自定义资源

4.7.1 概述

4.7.2 Operator

4.7.3 controller-runtime

4.7.4 Kubebuilder

第5章 client-go编程式交互

5.1 初识client-go

5.2 客户端

5.2.1 kubeconfig配置管理

5.2.2 RESTClient客户端

5.2.3 ClientSet客户端

5.2.4 DynamicClient客户端

5.2.5 DiscoveryClient发现客户端

5.3 Informer机制

5.3.1 Informer使用示例

5.3.2 Informer架构

5.3.3 Reflector数据同步

5.3.4 DeltaFIFO操作队列

5.3.5 Indexer资源缓存

5.3.6 processor资源处理

5.3.7 workqueue工作队列

5.4 常用工具类

5.4.1 事件管理机制

5.4.2 Leader选举机制

第6章 kubectl命令式交互

6.1 初识kubectl

6.2 kubectl执行流程

6.2.1 初始化命令对象

6.2.2 补全命令参数

6.2.3 校验命令参数

6.2.4 执行命令输出结果

6.3 kubectl缓存机制

6.3.1 缓存数据结构

6.3.2 缓存机制详解

6.3.3 缓存使用场景

6.4 kubectl变更比对策略

6.4.1 变更比对策略介绍

6.4.2 服务端应用和客户端应用

6.4.3 策略比对器和JSON比对器

6.4.4 双路合并和三路合并

6.5 kubectl扩展命令

6.5.1 扩展命令介绍

6.5.2 扩展命令实现原理

6.5.3 扩展命令管理器Krew

第7章 etcd存储核心实现

7.1 初识etcd存储

7.2 etcd存储架构设计

7.3 RESTStorage资源存储接口

7.4 genericregistry.Store通用操作封装

7.4.1 标准存储实现

7.4.2 版本冲突检测

7.4.3 通用钩子函数

7.4.4 DryRun实现原理

7.5 storage.Interface通用存储接口

7.6 Cacher Storage缓存层

7.6.1 Cacher Storage缓存架构

7.6.2 ResourceVersion资源版本号

7.6.3 watchCache缓存滑动窗口

7.7 Underlying Storage底层存储对象

7.8 Codec数据编/解码

7.9 Strategy预处理

7.9.1 Create Strategy预处理

7.9.2 Update Strategy预处理

7.9.3 Delete Strategy预处理

第8章 kube-apiserver核心实现

8.1 初识kube-apiserver

8.2 网络通信框架

8.2.1 go-restful框架

8.2.2 Protobuf序列化

8.3 kube-apiserver架构设计

8.4 kube-apiserver启动流程

8.4.1 Scheme资源注册

8.4.2 Cobra命令行参数解析

8.4.3 创建API Server通用配置

8.4.4 创建APIExtensionsServer

8.4.5 创建KubeAPIServer

8.4.6 创建AggregatorServer

8.4.7 GenericAPIServer初始化

8.4.8 准备和启动HTTPS服务

8.5 请求处理流程

8.6 权限控制体系

8.7 认证

8.7.1 RequestHeader认证

8.7.2 ClientCA认证

8.7.3 TokenAuth认证

8.7.4 ServiceAccountAuth认证

8.7.5 BootstrapToken认证

8.7.6 OIDC认证

8.7.7 WebhookTokenAuth认证

8.7.8 Anonymous认证

8.8 授权

8.8.1 AlwaysAllow授权

8.8.2 AlwaysDeny授权

8.8.3 ABAC授权

8.8.4 Webhook授权

8.8.5 RBAC授权

8.8.6 Node授权

8.9 准入控制器

8.9.1 内置插件介绍

8.9.2 内部实现原理

8.9.3 MutatingAdmissionWebhook准入控制器

8.9.4 ValidatingAdmissionWebhook准入控制器

8.10 信号处理机制

8.10.1 常驻进程实现

8.10.2 进程的优雅关闭

8.10.3 向systemd报告进程状态

8.11 List-Watch的实现原理

8.11.1 长连接通信协议

8.11.2 List-Watch的核心原理

第9章 kube-scheduler核心实现

9.1 初识kube-scheduler

9.1.1 kube-scheduler调度模型

9.1.2 kube-scheduler内部架构

9.1.3 kube-scheduler事件驱动

9.2 kube-scheduler启动流程

9.2.1 Cobra命令行参数解析

9.2.2 实例化Scheduler对象

9.2.3 运行EventBroadcaster事件管理器

9.2.4 运行HTTPS Server

9.2.5 运行Informer同步资源

9.2.6 执行Leader选举

9.2.7 运行调度器

9.3 Scheduling Framework

9.3.1 诞生背景

9.3.2 核心架构

9.4 调度器运行流程

9.4.1 整体运行流程

9.4.2 Scheduling Cycle

9.4.3 Binding Cycle

9.5 优先级与抢占机制

9.5.1 Pod优先级

9.5.2 Pod驱逐抢占机制

9.6 内置调度插件介绍

第10章 kube-controller-manager核心实现

10.1 初识kube-controller-manager

10.2 架构设计详解

10.2.1 控制器状态模型

10.2.2 控制器执行原理

10.3 启动流程

10.3.1 Cobra命令行参数解析

10.3.2 运行EventBroadcaster事件处理器

10.3.3 运行HTTPS服务

10.3.4 执行Leader选举

10.3.5 启动控制器主循环

10.4 ReplicaSet控制器

10.4.1 控制器初始化

10.4.2 主要执行逻辑

10.4.3 慢启动创建Pod

10.4.4 排序并删除多余的Pod

10.4.5 Expectation机制

10.5 Deployment控制器

10.5.1 控制器初始化

10.5.2 主要执行逻辑

10.5.3 调谐Pod的数量

10.5.4 更新策略

10.5.5 版本回滚

10.6 DaemonSet控制器

10.6.1 控制器初始化

10.6.2 主要执行逻辑

10.6.3 调谐Pod的数量

10.6.4 更新策略

10.7 StatefulSet控制器

10.7.1 控制器初始化

10.7.2 主要执行逻辑

10.7.3 调谐Pod的数量

10.7.4 更新策略

10.8 Job控制器

10.8.1 控制器初始化

10.8.2 主要执行逻辑

10.8.3 调谐Pod的数量

10.9 CronJob控制器

10.9.1 控制器初始化

10.9.2 主要执行逻辑

10.9.3 计算Job的启动时间

10.9.4 Job并行策略

10.10 Endpoint控制器

10.10.1 控制器初始化

10.10.2 主要执行逻辑

10.10.3 Subsets属性的计算

10.11 EndpointSlice控制器

10.11.1 控制器初始化

10.11.2 主要执行逻辑

10.11.3 EndpointSlice控制器的计算与填充

10.12 GarbageCollector控制器

10.12.1 控制器初始化

10.12.2 主要执行逻辑

10.12.3 更新资源对象依赖关系图

10.12.4 孤儿删除

10.12.5 级联删除

10.13 NodeLifecycle控制器

10.13.1 控制器初始化

10.13.2 主要执行逻辑

10.13.3 添加NoSchedule效果的Taint

10.13.4 Node健康状态检测

10.13.5 使用NoExecute Taint驱逐Node上的Pod

10.13.6 直接驱逐Node上的Pod

10.14 其他控制器

10.14.1 Namespace控制器

10.14.2 ServiceAccount控制器

10.14.3 PodGC控制器

10.14.4 SA Token控制器

10.14.5 ResourceQuota控制器

第11章 kube-proxy核心实现

11.1 初识kube-proxy

11.2 Service资源

11.3 架构设计详解

11.4 kube-proxy初始化过程

11.4.1 生成iptables、ipvs、Kernel、IP Set接口

11.4.2 判断是否支持ipvs代理模式

11.4.3 获取宿主节点的Hostname

11.4.4 生成KubeClient和EventClient

11.4.5 获取宿主节点的IP地址

11.4.6 确定代理模式

11.4.7 确定本地数据包判定方法

11.4.8 确定IP协议栈

11.4.9 生成Proxier结构体

11.5 iptables代理模式的执行过程

11.5.1 统计Stale Service和Stale Endpoints

11.5.2 创建基础iptables链和规则

11.5.3 初始化iptables内容缓冲区

11.5.4 配置KUBE-POSTROUTING链跳转规则

11.5.5 配置KUBE-MARK-MASQ链跳转规则

11.5.6 统计宿主节点IP地址

11.5.7 为每个Service Port配置iptables链和规则

11.5.8 配置KUBE-NODEPORTS链跳转规则

11.5.9 配置KUBE-FORWARD链跳转规则

11.5.10 将iptables缓冲区内容刷新到宿主机

11.5.11 清理残留的UDP Conntrack记录

11.6 ipvs代理模式的执行过程

11.6.1 统计Stale Service和Stale Endpoints

11.6.2 初始化iptables内容缓冲区

11.6.3 创建基础iptables链和规则

11.6.4 创建Dummy网卡

11.6.5 创建IP Set

11.6.6 统计宿主节点的IP地址

11.6.7 为每个Service Port配置规则

11.6.8 更新各个IP Set的内容

11.6.9 创建匹配IP Set的iptables规则

11.6.10 将iptables缓冲区内容刷新到宿主机

11.6.11 清理冗余的Service地址

11.6.12 清理残留的UDP Conntrack记录

第12章 kubelet核心实现

12.1 初识kubelet

12.2 kubelet架构设计

12.3 kubelet启动流程

12.3.1 Cobra命令行参数解析

12.3.2 运行环境检测与设置

12.3.3 Kubelet对象实例化

12.3.4 启动kubelet主服务

12.3.5 启动HTTP Server服务和gRPC Server服务

12.4 Pod生命周期管理

12.4.1 CRI

12.4.2 Pod启动流程

12.4.3 Pod驱逐流程

12.5 cgroup资源隔离

12.6 垃圾回收原理

12.6.1 镜像垃圾回收

12.6.2 容器垃圾回收

12.7 PLEG核心原理

12.7.1 PLEG产生原因

12.7.2 PLEG架构设计

12.7.3 PLEG原理剖析

12.8 HTTP服务接口

12.8.1 日志查询接口

12.8.2 命令执行接口

12.8.3 端口转发接口

第13章 代码生成器【通过读者服务二维码获取】

附录A Kubernetes组件配置参数介绍【通过读者服务二维码获取】

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部