有两个问题
1.在堆叠的 etcd 拓扑结构中,节点中的 etcd 只和本节点的 kube-apiserver 通信,这样如何保证三个节点数据一致性
2.三个 control plane 节点是依靠领导选举( leader election )选出一位做主,其他备,还是三个节点一起服务
3.如果是同时只有一个 control plane 节点工作,是如何把负载均衡到另外两个备节点的流量请求发送到主节点呢
希望能有确切的文档能阅读,刚接触 k8s ,感谢~
1
swulling 2022-10-29 00:20:47 +08:00 via iPhone
三个 etcd 节点是 join 成一个集群的,互相之间通过 raft 协议通信,从而做到分布式一致。
controlplane 中 apiserver 是三个都提供服务因为本质就是 crud 。剩下两个组件都有选主机制,分别同时只有一个实例为主。这是因为不管是调度还是控制,都只能单实例运行。 controlplane 三个组件的关系这个图其实不太准确,apiserver 访问 etcd 。其他所有组件只和 apiserver 通信。 且只有 apiserver 承接流量。 |
2
swulling 2022-10-29 00:21:54 +08:00 via iPhone
看文档是看不出什么所以然的,建议实际部署一下。
|
3
zhujq 2022-11-02 16:51:56 +08:00
问题 3:apiserver 无状态,可以 3 个一起接收请求。控制器只有一个在工作,其他的是 standby
|