etcd 实战课
唐聪
腾讯云资深工程师,etcd 活跃贡献者
28449 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 28 讲
开篇词 (1讲)
etcd 实战课
15
15
1.0x
00:00/00:00
登录|注册

19 | Kubernetes基础应用:创建一个Pod背后etcd发生了什么?

kube-proxy
kubelet
etcd组件
kube-controller-manager
kube-scheduler
kube-apiserver
小结
Resource Version与etcd版本号
资源安全创建及更新
Storage.Create接口
BeforeCreate策略
按标签名查询
按namespace查询
按具体资源名称查询
准入控制模块
授权模块
审计模块
限速模块
认证模块
查询Pod
创建Deployment资源
YAML文件示例
Node节点
Master节点
思考题
Watch机制在Kubernetes中应用
通用存储模块
Kubernetes资源存储格式
kube-apiserver请求执行链路
创建Pod案例
Kubernetes基础架构
创建Pod背后etcd发生了什么?
总结文章主题知识关系脑图

该思维导图由 AI 生成,仅供参考

你好,我是唐聪。
今天我将通过在 Kubernetes 集群中创建一个 Pod 的案例,为你分析 etcd 在其中发挥的作用,带你深入了解 Kubernetes 是如何使用 etcd 的。
希望通过本节课,帮助你从 etcd 的角度更深入理解 Kubernetes,让你知道在 Kubernetes 集群中每一步操作的背后,etcd 会发生什么。更进一步,当你在 Kubernetes 集群中遇到 etcd 相关错误的时候,能从 etcd 角度理解错误含义,高效进行故障诊断。

Kubernetes 基础架构

在带你详细了解 etcd 在 Kubernetes 里的应用之前,我先和你简单介绍下 Kubernetes 集群的整体架构,帮你搞清楚 etcd 在 Kubernetes 集群中扮演的角色与作用。
下图是 Kubernetes 集群的架构图(引用自 Kubernetes 官方文档),从图中你可以看到,它由 Master 节点和 Node 节点组成。
控制面 Master 节点主要包含以下组件:
kube-apiserver,负责对外提供集群各类资源的增删改查及 Watch 接口,它是 Kubernetes 集群中各组件数据交互和通信的枢纽。kube-apiserver 在设计上可水平扩展,高可用 Kubernetes 集群中一般多副本部署。当收到一个创建 Pod 写请求时,它的基本流程是对请求进行认证、限速、授权、准入机制等检查后,写入到 etcd 即可。
kube-scheduler 是调度器组件,负责集群 Pod 的调度。基本原理是通过监听 kube-apiserver 获取待调度的 Pod,然后基于一系列筛选和评优算法,为 Pod 分配最佳的 Node 节点。
kube-controller-manager 包含一系列的控制器组件,比如 Deployment、StatefulSet 等控制器。控制器的核心思想是监听、比较资源实际状态与期望状态是否一致,若不一致则进行协调工作使其最终一致。
etcd 组件,Kubernetes 的元数据存储。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kubernetes集群中的etcd在整个架构中扮演着关键角色,本文通过实际案例深入探讨了etcd的作用和交互过程。文章首先介绍了Kubernetes的基础架构,重点强调了kube-apiserver作为集群交互的核心,并详细分析了其与etcd的交互过程。随后,文章探讨了Kubernetes资源存储格式及其查询方式,以及在etcd中的存储格式和查询性能。此外,文章还介绍了kube-apiserver的通用存储模块,以及在创建资源时的处理流程。最后,文章提出了关于etcd写入资源的问题,并探讨了如何防止同名资源并发创建被覆盖的问题。通过具体案例和详细分析,本文帮助读者深入理解了Kubernetes集群中etcd的作用和交互过程,为故障诊断和性能优化提供了有益的参考。文章通过实际案例深入探讨了etcd在Kubernetes集群中的关键作用和交互过程。首先介绍了Kubernetes的基础架构,重点强调了kube-apiserver作为集群交互的核心,并详细分析了其与etcd的交互过程。随后,文章探讨了Kubernetes资源存储格式及其查询方式,以及在etcd中的存储格式和查询性能。此外,文章还介绍了kube-apiserver的通用存储模块,以及在创建资源时的处理流程。最后,文章提出了关于etcd写入资源的问题,并探讨了如何防止同名资源并发创建被覆盖的问题。通过具体案例和详细分析,本文帮助读者深入理解了Kubernetes集群中etcd的作用和交互过程,为故障诊断和性能优化提供了有益的参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《etcd 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • kkxue
    感觉这篇在讲述的创建pod的过程中,少了一些中间环节,比如介绍list-watch机制和Informer模块

    作者回复: 有的哈,kubernetes内容非常多,浓缩成两讲了,下一讲高级应用有介绍informer模块

    2021-03-09
    5
  • Tendrun
    是不是kube-apiserver 的Cache中缓存了全量的etcd key-value数据,还是说不是全量,只是一部分。如果是一部分那这部分缓存的维护更新机制是怎样的呢

    作者回复: 按资源来的,有些资源默认并没有watch cache,比如events. 缓存更新的机制主要是前面提到的watch原理,有变化的数据会推送给apiserver.

    2022-04-20
  • 唐聪
    kubernetes中创建一个pod工作流程,resource version含义与etcd,通过label/fieldSelecotor查询性能,是比较常见的面试题。
    2021-03-03
    1
    24
  • mmm
    informer watch请求的resource version比kube-apiserver缓存中保存的最小resource version还小,kube-apiserver就会返回“too old Resource Version”,然后触发informer进行list全量数据,导致expensive request
    2021-03-20
    10
  • ly
    too old Resource Version 在更新资源的过程中,这个资源已经被其他进程更新的时候
    2021-03-28
    1
  • kkxue
    有哪些原因可能会导致 kube-apiserver 报“too old Resource Version”错误呢: 有bug的时候
    2021-03-09
    1
    1
  • Simon
    思考题: 请求的版本在etcd已经回收了是不是就报"too old Resource Version"?
    2021-03-03
    1
  • 远天
    唐老师,你好,prefix默认是/registry,如果想自定义的话,要怎么设置呢?
    2023-07-06归属地:浙江
  • mckee
    导致 kube-apiserver 报“too old Resource Version”错误: revision太小,数据可能被压缩,会触发relist; watch cache size太小;
    2022-05-23
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部