第1天:etcd简介
Source: Dev.to
介绍
Kubernetes CKA 学习之旅的第 1 天聚焦于 etcd —— 为整个集群提供支撑的键值存储。
etcd 是什么?
etcd 是一个高可用、分布式且可靠的键值数据库,具备简洁、安全、快速的特性。Kubernetes 将所有集群信息(节点、Pod、配置、密钥、服务账户、角色、角色绑定等)存储在 etcd 中。每当你执行类似 kubectl get 的命令时,API 服务器会查询 etcd 数据库。
由于 etcd 是键值存储,它在快速查找和检索方面表现出色。虽然它不支持复杂的 SQL 风格查询,但与键关联的值可以是复杂的数据结构,例如 JSON 文档。
etcd 服务与客户端
当 etcd 服务器启动时,它会监听服务器的 IP 地址,默认端口为 2379。客户端连接到该端点以存储和检索数据。默认的 CLI 客户端是 etcdctl。
# Example etcdctl command
./etcdctl put key1 value1
注意: 不同的 etcd 版本会暴露不同的 API,因此可用的
etcdctl命令和动词可能会有所不同。
etcd 在 Kubernetes 中
对 Kubernetes 集群所做的每一次更改,只有在 etcd 服务器更新后才被视为完成。Kubernetes 将其数据存储在层次化的目录结构中,根注册表目录下按对象类型划分子目录。
部署选项
- 手动安装: 从头构建集群时,需要下载 etcd 二进制文件并在 master/control‑plane 节点上运行它。
- kubeadm: 使用
kubeadm会自动在kube-system命名空间中将 etcd 部署为一个 pod。
高可用性设置
在高可用(HA)环境中,多个 master/control‑plane 节点会运行各自的 etcd 实例。这些实例必须相互了解,配置方式是通过 etcd.service 文件中的 --initial-cluster 标志,例如:
--initial-cluster controller1=https://10.0.0.1:2380,controller2=https://10.0.0.2:2380,controller3=https://10.0.0.3:2380
CNCF 成熟度
etcd 于 2018 年进入 CNCF 孵化阶段,并于 2020 年 11 月毕业为顶级项目。