网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 深入理解KUBERNETES源码 |
分类 | 教育考试-考试-计算机类 |
作者 | 郑东旭等 |
出版社 | 电子工业出版社 |
下载 | |
简介 | 内容推荐 在过去几年中,容器技术的广泛应用推动了容器编排技术的迅猛发展,尤其是Kubernetes的兴起。作为当前非常受欢迎的容器编排系统,Kubernetes能够有效应对生产环境中复杂的编排需求,帮助企业实现大规模多容器集群的高效管理。本书将Kubernetes 1.25.0版本源码作为剖析对象,深入探讨其核心组件和实现原理。通过学习Kubernetes源码,读者不仅能掌握容器编排技术的精髓,还能提升自身在云计算领域的竞争力。本书适合对容器技术和云计算感兴趣的开发者、运维工程师及架构师参考和阅读。 目录 第1章 Kubernetes基本架构\t1 1.1 Kubernetes发展历史\t1 1.2 Kubernetes架构\t2 1.3 Kubernetes各组件功能\t3 1.3.1 kubectl\t4 1.3.2 client-go\t4 1.3.3 kube-apiserver\t4 1.3.4 kube-controller-manager\t4 1.3.5 kube-scheduler\t5 1.3.6 kubelet\t5 1.3.7 kube-proxy\t6 1.3.8 Container Runtime\t6 1.4 Kubernetes Project Layout设计\t7 第2章 Kubernetes构建过程\t10 2.1 构建方式\t10 2.2 一切都始于Makefile\t12 2.3 本地环境构建\t13 2.3.1 本地环境构建命令\t13 2.3.2 本地环境构建过程\t14 2.4 容器环境构建\t16 2.4.1 容器环境构建命令\t16 2.4.2 容器环境构建过程\t16 第3章 Kubernetes核心数据结构\t19 3.1 初识数据结构\t19 3.2 基本概念\t19 3.2.1 API的层次结构\t19 3.2.2 版本控制\t20 3.2.3 组\t21 3.2.4 API术语\t22 3.2.5 API资源组成\t25 3.2.6 版本化资源与未版本化资源\t26 3.2.7 内部版本与外部版本\t27 3.3 Kubernetes API的数据结构\t28 3.3.1 APIGroup、APIVersions\t28 3.3.2 APIResource\t30 3.3.3 GVK和GVR\t32 3.3.4 内置资源全景图\t33 3.4 Kubernetes资源定义\t35 3.4.1 内部版本定义\t35 3.4.2 外部版本定义\t36 3.5 将资源注册到Scheme中\t36 3.5.1 资源类型注册入口\t37 3.5.2 Scheme的数据结构\t38 3.5.3 Scheme的初始化\t40 3.5.4 SchemeBuilder资源注册\t41 3.5.5 资源外部版本注册\t43 3.5.6 资源内部版本注册\t44 3.5.7 所有资源的注册入口\t45 3.5.8 资源注册表的查询方法\t47 3.5.9 资源对象的创建\t48 3.5.10 资源对象的转换\t48 3.5.11 资源对象默认值的设置\t49 3.5.12 资源字段的转换\t49 3.6 对象体系设计\t49 3.6.1 资源对象的基本信息\t49 3.6.2 对象体系类图\t50 3.6.3 runtime.Object\t51 3.6.4 metav1.TypeMeta\t52 3.6.5 metav1.ObjectMeta\t52 3.6.6 Unstructured\t53 3.7 runtime.Codec资源编/解码\t55 3.7.1 编/解码数据结构\t56 3.7.2 CodecFactory实例化\t57 3.7.3 codec编/解码实现类\t60 3.7.4 json.Serializer编/解码\t64 3.7.5 protobuf.Serializer编/解码\t65 3.7.6 UnstructuredJSONScheme实现类\t67 3.7.7 NegotiatedSerializer\t67 3.7.8 ParameterCodec\t69 3.7.9 runtime包下的Codec相关函数\t71 3.7.10 Codec核心调用链路\t72 3.7.11 Codec的使用方式\t74 3.8 Converter资源版本转换器\t75 3.8.1 Converter的数据结构\t76 3.8.2 Converter转换函数的注册\t77 3.8.3 Converter的初始化\t77 3.8.4 Converter资源版本转换的实现\t78 3.9 使用RESTMapper管理GVR和GVK映射\t79 3.9.1 RESTMapper的数据结构\t80 3.9.2 RESTMapper实现类\t81 3.9.3 DefaultRESTMapper默认实现类\t82 3.9.4 PriorityRESTMapper优先级映射\t83 3.9.5 DeferredDiscoveryRESTMapper实现类\t84 3.9.6 RESTMapper的使用\t85 3.9.7 RESTMapping的数据结构及典型用法\t85 第4章 Kubernetes核心资源对象\t87 4.1 初识Kubernetes资源对象\t87 4.2 metav1.ObjectMeta属性元数据\t88 4.2.1 Name\t88 4.2.2 GenerateName\t89 4.2.3 Annotation\t89 4.2.4 Generation\t89 4.2.5 ResourceVersion\t90 4.2.6 OwnerReference\t91 4.2.7 Finalizers\t92 4.2.8 ManagedFields\t94 4.3 Pod资源对象\t99 4.3.1 PodSpec字段详解\t100 4.3.2 Container字段详解\t110 4.3.3 Pod创建流程\t114 4.3.4 Pause容器及创建流程\t115 4.3.5 PodSpec生成容器参数\t122 4.3.6 容器的通用创建流程\t124 4.3.7 资源配额与cgroup\t126 4.3.8 QoS与驱逐顺序\t131 4.3.9 静态Pod\t135 4.3.10 健康检查\t137 4.3.11 Pod的状态\t140 4.3.12 原地升级\t144 4.4 工作负载资源\t146 4.4.1 Deployment\t146 4.4.2 ReplicaSet\t153 4.4.3 StatefulSet\t156 4.4.4 DaemonSet\t160 4.4.5 Job\t163 4.4.6 CronJob\t166 4.5 发现和负载均衡资源\t169 4.5.1 Service\t169 4.5.2 Ingress\t175 4.5.3 Endpoints\t177 4.5.4 EndpointSlice\t178 4.5.5 NetworkPolicy\t182 4.6 配置和存储资源\t185 4.6.1 卷\t185 4.6.2 PV与PVC\t186 4.6.3 StorageClass\t191 4.7 自定义资源\t194 4.7.1 概述\t194 4.7.2 Operator\t196 4.7.3 controller-runtime\t197 4.7.4 Kubebuilder\t198 第5章 client-go编程式交互\t200 5.1 初识client-go\t200 5.2 客户端\t200 5.2.1 kubeconfig配置管理\t201 5.2.2 RESTClient客户端\t204 5.2.3 ClientSet客户端\t207 5.2.4 DynamicClient客户端\t210 5.2.5 DiscoveryClient发现客户端\t212 5.3 Informer机制\t214 5.3.1 Informer使用示例\t214 5.3.2 Informer架构\t216 5.3.3 Reflector数据同步\t217 5.3.4 DeltaFIFO操作队列\t223 5.3.5 Indexer资源缓存\t226 5.3.6 processor资源处理\t230 5.3.7 workqueue工作队列\t233 5.4 常用工具类\t240 5.4.1 事件管理机制\t240 5.4.2 Leader选举机制\t247 第6章 kubectl命令式交互\t256 6.1 初识kubectl\t256 6.2 kubectl执行流程\t256 6.2.1 初始化命令对象\t257 6.2.2 补全命令参数\t257 6.2.3 校验命令参数\t258 6.2.4 执行命令输出结果\t258 6.3 kubectl缓存机制\t263 6.3.1 缓存数据结构\t264 6.3.2 缓存机制详解\t265 6.3.3 缓存使用场景\t269 6.4 kubectl变更比对策略\t272 6.4.1 变更比对策略介绍\t272 6.4.2 服务端应用和客户端应用\t272 6.4.3 策略比对器和JSON比对器\t274 6.4.4 双路合并和三路合并\t275 6.5 kubectl扩展命令\t277 6.5.1 扩展命令介绍\t277 6.5.2 扩展命令实现原理\t277 6.5.3 扩展命令管理器Krew\t278 第7章 etcd存储核心实现\t280 7.1 初识etcd存储\t280 7.2 etcd存储架构设计\t280 7.3 RESTStorage资源存储接口\t282 7.4 genericregistry.Store通用操作封装\t283 7.4.1 标准存储实现\t283 7.4.2 版本冲突检测\t284 7.4.3 通用钩子函数\t284 7.4.4 DryRun实现原理\t287 7.5 storage.Interface通用存储接口\t288 7.6 Cacher Storage缓存层\t290 7.6.1 Cacher Storage缓存架构\t291 7.6.2 ResourceVersion资源版本号\t295 7.6.3 watchCache缓存滑动窗口\t297 7.7 Underlying Storage底层存储对象\t300 7.8 Codec数据编/解码\t301 7.9 Strategy预处理\t304 7.9.1 Create Strategy预处理\t304 7.9.2 Update Strategy预处理\t307 7.9.3 Delete Strategy预处理\t308 第8章 kube-apiserver核心实现\t310 8.1 初识kube-apiserver\t310 8.2 网络通信框架\t311 8.2.1 go-restful框架\t311 8.2.2 Protobuf序列化\t314 8.3 kube-apiserver架构设计\t319 8.4 kube-apiserver启动流程\t321 8.4.1 Scheme资源注册\t322 8.4.2 Cobra命令行参数解析\t324 8.4.3 创建API Server通用配置\t325 8.4.4 创建APIExtensionsServer\t336 8.4.5 创建KubeAPIServer\t345 8.4.6 创建AggregatorServer\t353 8.4.7 GenericAPIServer初始化\t360 8.4.8 准备和启动HTTPS服务\t362 8.5 请求处理流程\t367 8.6 权限控制体系\t368 8.7 认证\t369 8.7.1 RequestHeader认证\t370 8.7.2 ClientCA认证\t372 8.7.3 TokenAuth认证\t373 8.7.4 ServiceAccountAuth认证\t374 8.7.5 BootstrapToken认证\t377 8.7.6 OIDC认证\t379 8.7.7 WebhookTokenAuth认证\t381 8.7.8 Anonymous认证\t383 8.8 授权\t383 8.8.1 AlwaysAllow授权\t386 8.8.2 AlwaysDeny授权\t387 8.8.3 ABAC授权\t388 8.8.4 Webhook授权\t389 8.8.5 RBAC授权\t391 8.8.6 Node授权\t396 8.9 准入控制器\t397 8.9.1 内置插件介绍\t398 8.9.2 内部实现原理\t401 8.9.3 MutatingAdmissionWebhook准入控制器\t404 8.9.4 ValidatingAdmissionWebhook准入控制器\t411 8.10 信号处理机制\t416 8.10.1 常驻进程实现\t416 8.10.2 进程的优雅关闭\t417 8.10.3 向systemd报告进程状态\t419 8.11 List-Watch的实现原理\t420 8.11.1 长连接通信协议\t420 8.11.2 List-Watch的核心原理\t425 第9章 kube-scheduler核心实现\t430 9.1 初识kube-scheduler\t430 9.1.1 kube-scheduler调度模型\t430 9.1.2 kube-scheduler内部架构\t431 9.1.3 kube-scheduler事件驱动\t434 9.2 kube-scheduler启动流程\t437 9.2.1 Cobra命令行参数解析\t438 9.2.2 实例化Scheduler对象\t439 9.2.3 运行EventBroadcaster事件管理器\t442 9.2.4 运行HTTPS Server\t442 9.2.5 运行Informer同步资源\t443 9.2.6 执行Leader选举\t444 9.2.7 运行调度器\t445 9.3 Scheduling Framework\t445 9.3.1 诞生背景\t445 9.3.2 核心架构\t446 9.4 调度器运行流程\t452 9.4.1 整体运行流程\t452 9.4.2 Scheduling Cycle\t454 9.4.3 Binding Cycle\t462 9.5 优先级与抢占机制\t464 9.5.1 Pod优先级\t465 9.5.2 Pod驱逐抢占机制\t466 9.6 内置调度插件介绍\t473 第10章 kube-controller-manager核心实现\t475 10.1 初识kube-controller-manager\t475 10.2 架构设计详解\t477 10.2.1 控制器状态模型\t477 10.2.2 控制器执行原理\t478 10.3 启动流程\t479 10.3.1 Cobra命令行参数解析\t480 10.3.2 运行EventBroadcaster事件处理器\t481 10.3.3 运行HTTPS服务\t481 10.3.4 执行Leader选举\t482 10.3.5 启动控制器主循环\t482 10.4 ReplicaSet控制器\t484 10.4.1 控制器初始化\t485 10.4.2 主要执行逻辑\t485 10.4.3 慢启动创建Pod\t487 10.4.4 排序并删除多余的Pod\t487 10.4.5 Expectation机制\t488 10.5 Deployment控制器\t492 10.5.1 控制器初始化\t492 10.5.2 主要执行逻辑\t492 10.5.3 调谐Pod的数量\t495 10.5.4 更新策略\t495 10.5.5 版本回滚\t496 10.6 DaemonSet控制器\t497 10.6.1 控制器初始化\t498 10.6.2 主要执行逻辑\t498 10.6.3 调谐Pod的数量\t500 10.6.4 更新策略\t501 10.7 StatefulSet控制器\t503 10.7.1 控制器初始化\t503 10.7.2 主要执行逻辑\t503 10.7.3 调谐Pod的数量\t504 10.7.4 更新策略\t507 10.8 Job控制器\t508 10.8.1 控制器初始化\t508 10.8.2 主要执行逻辑\t508 10.8.3 调谐Pod的数量\t511 10.9 CronJob控制器\t512 10.9.1 控制器初始化\t513 10.9.2 主要执行逻辑\t513 10.9.3 计算Job的启动时间\t515 10.9.4 Job并行策略\t518 10.10 Endpoint控制器\t519 10.10.1 控制器初始化\t519 10.10.2 主要执行逻辑\t520 10.10.3 Subsets属性的计算\t523 10.11 EndpointSlice控制器\t524 10.11.1 控制器初始化\t524 10.11.2 主要执行逻辑\t525 10.11.3 EndpointSlice控制器的计算与填充\t527 10.12 GarbageCollector控制器\t531 10.12.1 控制器初始化\t532 10.12.2 主要执行逻辑\t533 10.12.3 更新资源对象依赖关系图\t534 10.12.4 孤儿删除\t537 10.12.5 级联删除\t537 10.13 NodeLifecycle控制器\t539 10.13.1 控制器初始化\t539 10.13.2 主要执行逻辑\t541 10.13.3 添加NoSchedule效果的Taint\t543 10.13.4 Node健康状态检测\t544 10.13.5 使用NoExecute Taint驱逐Node上的Pod\t546 10.13.6 直接驱逐Node上的Pod\t547 10.14 其他控制器\t548 10.14.1 Namespace控制器\t548 10.14.2 ServiceAccount控制器\t550 10.14.3 PodGC控制器\t550 10.14.4 SA Token控制器\t551 10.14.5 ResourceQuota控制器\t552 第11章 kube-proxy核心实现\t553 11.1 初识kube-proxy\t553 11.2 Service资源\t553 11.3 架构设计详解\t554 11.4 kube-proxy初始化过程\t555 11.4.1 生成iptables、ipvs、Kernel、IP Set接口\t556 11.4.2 判断是否支持ipvs代理模式\t558 11.4.3 获取宿主节点的Hostname\t559 11.4.4 生成KubeClient和EventClient\t559 11.4.5 获取宿主节点的IP地址\t560 11.4.6 确定代理模式\t560 11.4.7 确定本地数据包判定方法\t560 11.4.8 确定IP协议栈\t561 11.4.9 生成Proxier结构体\t562 11.5 iptables代理模式的执行过程\t562 11.5.1 统计Stale Service和Stale Endpoints\t563 11.5.2 创建基础iptables链和规则\t564 11.5.3 初始化iptables内容缓冲区\t566 11.5.4 配置KUBE-POSTROUTING链跳转规则\t567 11.5.5 配置KUBE-MARK-MASQ链跳转规则\t567 11.5.6 统计宿主节点IP地址\t568 11.5.7 为每个Service Port配置iptables链和规则\t568 11.5.8 配置KUBE-NODEPORTS链跳转规则\t576 11.5.9 配置KUBE-FORWARD链跳转规则\t577 11.5.10 将iptables缓冲区内容刷新到宿主机\t577 11.5.11 清理残留的UDP Conntrack记录\t577 11.6 ipvs代理模式的执行过程\t578 11.6.1 统计Stale Service和Stale Endpoints\t579 11.6.2 初始化iptables内容缓冲区\t580 11.6.3 创建基础iptables链和规则\t580 11.6.4 创建Dummy网卡\t583 11.6.5 创建IP Set\t583 11.6.6 统计宿主节点的IP地址\t585 11.6.7 为每个Service Port配置规则\t585 11.6.8 更新各个IP Set的内容\t590 11.6.9 创建匹配IP Set的iptables规则\t591 11.6.10 将iptables缓冲区内容刷新到宿主机\t593 11.6.11 清理冗余的Service地址\t594 11.6.12 清理残留的UDP Conntrack记录\t595 第12章 kubelet核心实现\t596 12.1 初识kubelet\t596 12.2 kubelet架构设计\t596 12.3 kubelet启动流程\t601 12.3.1 Cobra命令行参数解析\t601 12.3.2 运行环境检测与设置\t603 12.3.3 Kubelet对象实例化\t605 12.3.4 启动kubelet主服务\t606 12.3.5 启动HTTP Server服务和gRPC Server服务\t611 12.4 Pod生命周期管理\t612 12.4.1 CRI\t613 12.4.2 Pod启动流程\t616 12.4.3 Pod驱逐流程\t629 12.5 cgroup资源隔离\t637 12.6 垃圾回收原理\t639 12.6.1 镜像垃圾回收\t639 12.6.2 容器垃圾回收\t645 12.7 PLEG核心原理\t652 12.7.1 PLEG产生原因\t652 12.7.2 PLEG架构设计\t652 12.7.3 PLEG原理剖析\t653 12.8 HTTP服务接口\t657 12.8.1 日志查询接口\t659 12.8.2 命令执行接口\t666 12.8.3 端口转发接口\t673 第13章 代码生成器【通过读者服务二维码获取】\t679 附录A Kubernetes组件配置参数介绍【通过读者服务二维码获取】\t680 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。