为你推荐
内容简介
前言
第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组件配置参数介绍【通过读者服务二维码获取】
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜