kubernetes - HA Kubernetes集群中,多个控制平面如何同步数据?
问题描述
在 HA Kubernetes 集群中,我们配置了多个控制平面(主节点),但是多个控制平面如何同步它们的数据呢?当我们使用 kubectl 命令创建 pod 时,请求通过云负载均衡器到达控制平面之一。我想了解其他控制平面如何与收到新请求的控制平面同步数据?
解决方案
首先,请注意API Server是唯一直接与etcd对话的组件。
在 Kubernetes 集群上所做的每一次更改(例如)都会在etcdkubectl create
数据库中创建适当的条目,并且您将从命令中获得的所有内容都存储在etcd中。kubectl get
在本文中,您可以找到API Server和etcd之间通信的详细说明。
Etcd 使用RAFT协议进行领导者选举,领导者处理所有需要集群共识的客户端请求(不需要共识的请求可以由任何集群成员处理):
etcd 建立在 Raft 共识算法之上,以确保集群中所有节点的数据存储一致性——用于容错分布式系统的表桩。
Raft 通过选举出的领导节点来实现这种一致性,该领导节点管理集群中其他节点的复制,称为追随者。领导者接受来自客户端的请求,然后将其转发给跟随者节点。一旦领导者确定大多数追随者节点已将每个新请求存储为日志条目,它将将该条目应用到其本地状态机并将该执行的结果(“写入”)返回给客户端。如果追随者崩溃或网络数据包丢失,领导者会重试,直到所有追随者一致地存储所有日志条目。
更多关于etcd和raft 共识算法的信息可以在这个文档中找到。
推荐阅读
- sqlite - 如何在基因组数据库 SQLite3 中创建相关表
- javascript -
- 在一个
- 有时不删除列表样式的图形(主要在 Bootstrap 下拉菜单中注意到)
- 在一个
- sql - 从 SQL 脚本返回变量到 PowerShell
- asp.net-core - ASP.NET Core Web.Config 发布
- sql - 在 Postgresql 上使用 json 输出进行查询
- jquery - jQuery 不会 append() 到新打开的选项卡
- javascript - 你可以结合javascript et base url w/改变窗口位置吗?
- virtualbox - 无法打开快照 VirtualBox 6 VERR_SSM_DATA_UNIT_FORMAT_CHANGED
- android - Android Studio 自动移除导入
- vb.net - 如何根据文本属性更改多个文本框的背景颜色