首页 > 解决方案 > HA Kubernetes集群中,多个控制平面如何同步数据?

问题描述

在 HA Kubernetes 集群中,我们配置了多个控制平面(主节点),但是多个控制平面如何同步它们的数据呢?当我们使用 kubectl 命令创建 pod 时,请求通过云负载均衡器到达控制平面之一。我想了解其他控制平面如何与收到新请求的控制平面同步数据?

标签: kubernetes

解决方案


首先,请注意API Server是唯一直接与etcd对话的组件。
在 Kubernetes 集群上所做的每一次更改(例如)都会在etcdkubectl create数据库中创建适当的条目,并且您将从命令中获得的所有内容都存储在etcd中。kubectl get

本文中,您可以找到API Serveretcd之间通信的详细说明。

Etcd 使用RAFT协议进行领导者选举,领导者处理所有需要集群共识的客户端请求(不需要共识的请求可以由任何集群成员处理):

etcd 建立在 Raft 共识算法之上,以确保集群中所有节点的数据存储一致性——用于容错分布式系统的表桩。

Raft 通过选举出的领导节点来实现这种一致性,该领导节点管理集群中其他节点的复制,称为追随者。领导者接受来自客户端的请求,然后将其转发给跟随者节点。一旦领导者确定大多数追随者节点已将每个新请求存储为日志条目,它将将该条目应用到其本地状态机并将该执行的结果(“写入”)返回给客户端。如果追随者崩溃或网络数据包丢失,领导者会重试,直到所有追随者一致地存储所有日志条目。

更多关于etcdraft 共识算法的信息可以在这个文档中找到。


推荐阅读