书籍详情
《Kubernetes源码剖析》[41M]百度网盘|亲测有效|pdf下载
  • Kubernetes源码剖析

  • 出版社:电子工业出版社
  • 出版时间:2020-06-01
  • 热度:5807
  • 上架时间:2024-06-30 08:52:20
  • 价格:9.0
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐
  掌控了Kubernetes等于掌控了云计算的未来。本书从源码层面剖析Kubernetes;从架构到源码,细致入微,全面详尽。
内容简介
  本书主要分析了Kubernetes核心功能的实现原理,是一本帮助读者了解Kubernetes架构设计及内部原理实现的书。由于Kubernetes代码量较大,源码不容易理解,所以本书将梳理相关知识点,帮助读者快速学习。本书共分为8章,第1章简要介绍了Kubernetes架构的核心组件,以及每个核心组件在架构中的作用;第2章主要介绍了Kubernetes构建过程中的源码实现;第3章主要介绍了Kubernetes的核心数据结构定义及围绕资源展开的核心功能;第4章主要介绍了kubectl命令行交互工具的实现机制;第5章主要介绍了client-go编程式交互工具的实现机制;第6章主要介绍了Etcd存储的核心实现;第7章主要介绍了kube-apiserver组件的核心实现;第8章主要介绍了kube-scheduler组件的核心实现。
作者简介
  郑东旭(Derek Zheng),BFE(万亿流量转发引擎,https://github.com/baiidu/bfe)开源项目的作者之一,擅长Linux下高性能服务器的开发,对云计算、区块链相关技术领域有深刻的理解。
目录
前言
第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.4 Kubernetes Project Layout设计
第2章 Kubernetes构建过程
2.1 构建方式
2.2 本地环境构建
2.2.1 一切都始于Makefile
2.2.2 本地构建过程
2.3 容器环境构建
2.4 Bazel环境构建
2.4.1 使用Bazel构建和测试Kubernetes源码
2.4.2 Bazel的工作原理
2.5 代码生成器
2.5.1 Tags
2.5.2 deepcopy-gen代码生成器
2.5.3 defaulter-gen代码生成器
2.5.4 conversion-gen代码生成器
2.5.5 openapi-gen代码生成器
2.5.6 go-bindata代码生成器
2.6 代码生成过程
2.7 gengo代码生成核心实现
2.7.1 代码生成逻辑与编译器原理
2.7.2 收集Go包信息
2.7.3 代码解析
2.7.4 类型系统
2.7.5 代码生成
第3章 Kubernetes核心数据结构
3.1 Group、Version、Resource核心数据结构
3.2 ResourceList
3.3 Group
3.4 Version
3.5 Resource
3.5.1 资源外部版本与内部版本
3.5.2 资源代码定义
3.5.3 将资源注册到资源注册表中
3.5.4 资源首选版本
3.5.5 资源操作方法
3.5.6 资源与命名空间
3.5.7 自定义资源
3.5.8 资源对象描述文件定义
3.6 Kubernetes内置资源全图
3.7 runtime.Object类型基石
3.8 Unstructured数据
3.9 Scheme资源注册表
3.9.1 Scheme资源注册表数据结构
3.9.2 资源注册表注册方法
3.9.3 资源注册表查询方法
3.10 Codec编解码器
3.10.1 Codec编解码实例化
3.10.2 jsonSerializer与yamlSerializer序列化器
3.10.3 protobufSerializer序列化器
3.11 Converter资源版本转换器
3.11.1 Converter转换器数据结构
3.11.2 Converter注册转换函数
3.11.3 Converter资源版本转换原理
第4章 kubectl命令行交互
4.1 kubectl命令行参数详解
4.2 Cobra命令行参数解析
4.3 创建资源对象的过程
4.3.1 编写资源对象描述文件
4.3.2 实例化Factory接口
4.3.3 Builder构建资源对象
4.3.4 Visitor多层匿名函数嵌套
第5章 client-go编程式交互
5.1 client-go源码结构
5.2 Client客户端对象
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 Reflector
5.3.3 DeltaFIFO
5.3.4 Indexer
5.4 WorkQueue
5.4.1 FIFO队列
5.4.2 延迟队列
5.4.3 限速队列
5.5 EventBroadcaster事件管理器
5.6 代码生成器
5.6.1 client-gen代码生成器
5.6.2 lister-gen代码生成器
5.6.3 informer-gen代码生成器
5.7 其他客户端
第6章 Etcd存储核心实现
6.1 Etcd存储架构设计
6.2 RESTStorage存储服务通用接口
6.3 RegistryStore存储服务通用操作
6.4 Storage.Interface通用存储接口
6.5 CacherStorage缓存层
6.5.1 CacherStorage缓存层设计
6.5.2 ResourceVersion资源版本号
6.5.3 watchCache缓存滑动窗口
6.6 UnderlyingStorage底层存储对象
6.7 Codec编解码数据
6.8 Strategy预处理
6.8.1 创建资源对象时的预处理操作
6.8.2 更新资源对象时的预处理操作
6.8.3 删除资源对象时的预处理操作
6.8.4 导出资源对象时的预处理操作
第7章 kube-apiserver核心实现
7.1 热身概念
7.1.1 go-restful核心原理
7.1.2 一次HTTP请求的完整生命周期
7.1.3 OpenAPI/Swagger核心原理
7.1.4 HTTPS核心原理
7.1.5 gRPC核心原理
7.1.6 go-to-protobuf代码生成器
7.2 kube-apiserver命令行参数详解
7.3 kube-apiserver架构设计详解
7.4 kube-apiserver启动流程
7.4.1 资源注册
7.4.2 Cobra命令行参数解析
7.4.3 创建APIServer通用配置
7.4.4 创建APIExtensionsServer
7.4.5 创建KubeAPIServer
7.4.6 创建AggregatorServer
7.4.7 创建GenericAPIServer
7.4.8 启动HTTP服务
7.4.9 启动HTTPS服务
7.5 权限控制
7.6 认证
7.6.1 BasicAuth认证
7.6.2 ClientCA认证
7.6.3 TokenAuth认证
7.6.4 BootstrapToken认证
7.6.5 RequestHeader认证
7.6.6 WebhookTokenAuth认证
7.6.7 Anonymous认证
7.6.8 OIDC认证
7.6.9 ServiceAccountAuth认证
7.7 授权
7.7.1 AlwaysAllow授权
7.7.2 AlwaysDeny授权
7.7.3 ABAC授权
7.7.4 Webhook授权
7.7.5 RBAC授权
7.7.6 Node授权
7.8 准入控制器
7.8.1 AlwaysPullImages准入控制器
7.8.2 PodNodeSelector准入控制器
7.9 进程信号处理机制
7.9.1 常驻进程实现
7.9.2 进程的优雅关闭
7.9.3 向systemd报告进程状态
第8章 kube-scheduler核心实现
8.1 kube-scheduler命令行参数详解
8.2 kube-scheduler架构设计详解
8.3 kube-scheduler组件的启动流程
8.3.1 内置调度算法的注册
8.3.2 Cobra命令行参数解析
8.3.3 实例化Scheduler对象
8.3.4 运行EventBroadcaster事件管理器
8.3.5 运行HTTP或HTTPS服务
8.3.6 运行Informer同步资源
8.3.7 领导者选举实例化
8.3.8 运行sched.Run调度器
8.4 优先级与抢占机制
8.5 亲和性调度
8.5.1 NodeAffinity
8.5.2 PodAffinity
8.5.3 PodAntiAffinity
8.6 内置调度算法
8.6.1 预选调度算法
8.6.2 优选调度算法
8.7 调度器核心实现
8.7.1 调度器运行流程
8.7.2 调度过程
8.7.3 Preempt抢占机制
8.7.4 bind绑定机制
8.8 领导者选举机制
8.8.1 资源锁
8.8.2 领导者选举过程
媒体评论
  十多年前,云计算尚未普及,每个公司都需要研究和搭建符合自身需求的一套基础设施和服务,充其量可以复用一些开源软件的功能,并通过定制来提升基础设施的搭建和使用效率,但这时的复用程度极其有限。过去十年间,随着云计算的蓬勃发展和深入人心,以及技术人的经验积累,IT基础设施和服务第一次有机会在全球范围内大规模复用。2015年,CNCF(云原生计算基金会)成立,进一步为“复用”打下了坚实的基础。云原生依托于云计算,制定了一套标准及与标准对应的开源解决方案,覆盖了从软件开发到交付再到运行维护的全生命周期,这些开源组件,通过有机的组织,依托于云计算,可以快速构建出一套高水准、低成本的基础设施服务,IT生产力得到了极大的提高。这其中,Kubernetes作为云原生技术的核心和大底座,尤为关键。本书从源码层面对Kubernetes进行了详细的剖析,不容错过,值得期待。


——滴滴出行高级技术总监 来炜
云原生是新一轮技术浪潮,已经越来越受到社区和业界的重视。Kubernetes是云原生技术生态中的重要组成部分,已经成为容器编排领域的事实标准。本书为拥抱云原生的从业者提供了Kubernetes源码视角的剖析与解读,同时也为希望参与及拥抱Kubernetes开源社区的同行提供了一个入门捷径。
——开源BFE项目负责人 杨思杰
云原生理念大力推动了云计算朝着技术共享、中立共荣的方向发展,而Kubernetes无疑是云原生技术发展的中流砥柱。深入理解Kubernetes的设计理念,把握Kubernetes代码的核心精髓,必将有利于Kubernetes的技术普惠。这是一本从源码层面介绍Kubernetes的技术图书,从架构到源码,细致入微,全面详尽,值得每一位云计算基础运维相关领域的工程师阅读。
——阿里云智能高级技术专家 孙宏亮
2018年3月Kubernetes从CNCF“毕业”,这意味着Kubernetes作为一个开源项目已走向成熟,代码结构趋向稳定,并且它的开发迭代节奏也刻意放缓,以适应企业级的稳定性要求。本书对Kubernetes关键组件进行了深入剖析,对其交互流程进行了详细介绍,同时融入了作者在Go语言和设计模式方面的高深造诣,对Kubernetes的深度用户及想要从事云原生基础架构研发的从业人员来说非常有帮助。
——蚂蚁金服云原生“布道师” 宋净超
前言
  近几年,容器技术越来越普及。据Gartner预估,到2022年,全球将有75%的公司使用容器技术,而在2017年,这个比例还不到20%,这说明容器技术的发展非常迅速。容器技术的火热引发了容器编排技术的发展,目前最受欢迎的容器编排系统是Kubernetes,其引领着技术潮流,用于应对生产环境中编排容器所需的额外复杂度及成本。Kubernetes系统帮助企业加快了容器编排的速度,并实现了对多容器集群的大规模管理。它允许持续集成和交付、网络处理、服务发现及存储服务等,并具有在多云环境下进行操作的能力。
精彩书摘
  Kubernetes是Google公司开源的一个容器(Container)编排与调度管理框架,该项目最初是Google内部面向容器的集群管理系统,而现在是由Cloud Native Computing Foundation(CNCF,云原生计算基金会)托管的开源平台,由Google、AWS、Microsoft、IBM、Intel、Cisco和Red Hat等主要参与者支持,其目标是通过创建一组新的通用容器技术来推进云原生技术和服务的开发。作为领先的容器编排引擎,Kubernetes提供了一个抽象层,使其可以在物理或虚拟环境中部署容器应用程序,提供以容器为中心的基础架构。