你好,我是唐聪。
今天我将通过在 Kubernetes 集群中创建一个 Pod 的案例,为你分析 etcd 在其中发挥的作用,带你深入了解 Kubernetes 是如何使用 etcd 的。
希望通过本节课,帮助你从 etcd 的角度更深入理解 Kubernetes,让你知道在 Kubernetes 集群中每一步操作的背后,etcd 会发生什么。更进一步,当你在 Kubernetes 集群中遇到 etcd 相关错误的时候,能从 etcd 角度理解错误含义,高效进行故障诊断。
Kubernetes 基础架构
在带你详细了解 etcd 在 Kubernetes 里的应用之前,我先和你简单介绍下 Kubernetes 集群的整体架构,帮你搞清楚 etcd 在 Kubernetes 集群中扮演的角色与作用。
控制面 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 的元数据存储。