K8s集群中etcd集群的数据读写与同步机制解析
K8s高可用集群中etcd读写机制的疑问
背景
我在K8s官方文档中了解到,构建高可用K8s集群需要搭建etcd集群。根据官方文档所述:每个控制平面节点会创建一个本地etcd成员,该etcd成员仅与本节点的kube-apiserver通信,本地的kube-controller-manager和kube-scheduler实例也是如此。
疑问点
- 按照上述描述,kube-apiserver仅与自身节点的etcd通信,是否可以理解为读写操作都在同一节点的etcd上完成?
- 我学习etcd时了解到,etcd集群的客户端通过Follower读取数据,通过Leader写入数据。但通过
etcdctl命令查看集群状态时,集群中只有一个Leader:
┌──[root@vms100.liruilongs.github.io]-[~/ansible/kubescape] └─$ETCDCTL_API=3 etcdctl --endpoints https://127.0.0.1:2379 --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key" --cacert="/etc/kubernetes/pki/etcd/ca.crt" endpoint status --cluster -w table +-----------------------------+------------------+---------+---------+-----------+-----------+------------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX | +-----------------------------+------------------+---------+---------+-----------+-----------+------------+ | https://192.168.26.100:2379 | ee392e5273e89e2 | 3.5.4 | 37 MB | false | 100 | 3152364 | | https://192.168.26.102:2379 | 11486647d7f3a17b | 3.5.4 | 36 MB | false | 100 | 3152364 | | https://192.168.26.101:2379 | e00e3877df8f76f4 | 3.5.4 | 36 MB | true | 100 | 3152364 | +-----------------------------+------------------+---------+---------+-----------+-----------+------------+ ┌──[root@vms100.liruilongs.github.io]-[~/ansible/kubescape] └─$
- 既然集群只有一个Leader,etcd的读写分离机制是否适用于K8s?这和官方文档的描述是否存在矛盾?想明确K8s集群中etcd具体的读写机制。
我对etcd了解甚少,希望能得到解惑!
内容的提问来源于stack exchange,提问作者liruilong
相关产品推荐
相关产品推荐

