etcd集群通过 Leader 写入数据,为什么K8s HA集群中讲每个 kube-apiserver 只和本机的 ETCD 通信

news2025/1/18 8:44:36

写在前面


  • 对这个我不太明白,所有在 stackOverflow 的请教了大佬
  • 这里分享给小伙伴
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


我的问题

在这里插入图片描述

搭建高可用的 k8s 集群,需要 搭建 etcd 集群,在 k8s 官方文档里面,我看到这样讲。

每个控制平面节点创建一个本地 etcd 成员(member),这个 etcd 成员只与该节点的 kube-apiserver 通信。 这同样适用于本地 kube-controller-manager 和 kube-scheduler 实例。

kube-apiservice 只和自己节点的 etcd 通信,是否可以理解为 读写都是发生在 同一节点的 etcd ,

但是我在学习 etcd 的时候, 告诉我 etcd 集群中 客户端 通过 Follower 读取数据,通过 Leader 写入数据.

实际上 Leader 在集群中只存在一个。 etcd 集群的这种读写分离适用于 k8s ?

我理解这和上面讲的 有些矛盾。我想知道k8s 集群中 etcd 的读写方式是怎么回事,我对 etcd 了解甚少,感谢为我解惑


@解答

在这里插入图片描述

In fact, there is only one Leader in the cluster. Does this read/write separation of etcd clusters apply to Kubernetes?

Yes. In an etc cluster, there is only one leader that does the writes. But etcd internally forwards all requests that needs consensus (e.g. writes) to the leader, so the client application (Kubernetes in our case) does not need to know what etcd node is the leader.

From etcd FAQ:

Do clients have to send requests to the etcd leader?

Raft is leader-based; the leader handles all client requests which need cluster consensus. However, the client does not need to know which node is the leader. Any request that requires consensus sent to a follower is automatically forwarded to the leader. Requests that do not require consensus (e.g., serialized reads) can be processed by any cluster member.


大概意思说,在 etcd 集群中,只有一个负责写入的领导者。但是 etcd 在内部将所有 需要共识(例如写入)的请求转发给领导者,因此客户端应用程序(在我们的例子中是 Kubernetes)不需要知道哪个 etcd 节点是领导者

来自etcd 常见问题解答:

客户是否必须向 etcd 领导者发送请求?

Raft 是基于领导者的;领导者处理所有需要集群共识的客户端请求。但是,客户端不需要知道哪个节点是领导者。发送给跟随者的任何需要达成共识的请求都会自动转发给领导者。不需要共识的请求(例如,序列化读取)可以由任何集群成员处理。

名词解释

Raft :etcd 使用Raft协议来维护集群内各个节点状态的一致性。实现强一致性。

Leader, Follower, Candidate:集群角色,当集群初始化时候,每个节点都是Follower角色,通过心跳与其他节点同步数据
,通过选举产生 Leader,之后通过Follower读取数据,通过Leader写入数据,当Follower在一定时间内没有收到来自Leader的心跳,会将自己角色改变为Candidate,并发起一次选主投票

博文部分内容参考

文中涉及参考链接内容版权归原作者所有,如有侵权请告知


https://etcd.io/docs/v3.5/faq/

https://stackoverflow.com/questions/75424632/how-etcd-cluster-data-is-read-and-synchronized-under-k8s-clusters


© 2018-2023 liruilonger@gmail.com,All rights reserved. 署名-相同方式共享 4.0 国际 协议(CC BY 4.0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/387123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spark sql(二)sql解析流程扩展

1、前言 通过前面的文章我们了解到,spark sql通过catalyst框架解析sql,而在将sql语句转变为可执行的任务过程中会将大的sql解析流程划分为未解析的逻辑计划、解析后的逻辑计划、优化后的逻辑计划、物理计划、可执行物理计划等阶段。大概的解析流程如下所…

Handler与线程

简介 Handler提供的种异步消息处理机制是:当它发出一个消息进入消息队列后,发送消息的函数立刻返回,接着主线程会逐个地从消息队列中把消息取出,然后对消息进行处理。明显,Handler发送消息和接收消息是异步进行的&…

三八送什么数码产品好?适合送礼的数码产品

数码产品是我们生活中比较常见到的物品,相比较于一般礼物的观赏性,它的实用性更强一些,所以如果你不知道送什么礼物给别人的话,数码产品也是不错的选择。 一、南卡小音舱蓝牙耳机 这个时代的女性,变得越来越自信了&am…

ChatGPT解答:根据使用者输入的字符串,自动判断规则,并给出各种正则表达式,用Python实现

ChatGPT解答: 根据使用者输入的字符串,自动判断规则,并给出各种正则表达式,用Python实现 根据输入的字符串,自动给出正则表达式 根据使用者输入的字符串,自动判断规则,并给出各种正则表达式&am…

JVM系统优化实践(7):垃圾回收器与垃圾回收算法

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~上回说到了年轻代、老年代与数据计算的一个案例。接下来就先讲一讲年轻代和老年代的两个垃圾回收器:ParNew和CMS。和Serial垃圾回收器一样&#xff0c…

实战:yaml方式安装ingress-nginx-2023.3.2(测试成功)

实战:yaml方式安装ingress-nginx-2023.3.2(测试成功) 目录 文章目录实战:yaml方式安装ingress-nginx-2023.3.2(测试成功)目录实验环境实验软件1、安装过程2、第一个示例关于我最后最后实验环境 实验环境: 1、win10,vmwrokstation虚机&#x…

AI_News周刊:第四期

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 News 1.对抗“唤醒人工智能”马斯克招募团队开发 OpenAI 竞争对手 据两位直接了解这项工作的人士和另一位了解情况的人士透露,埃隆马斯克最近几周与人工智能研究人员接洽,商讨成…

详细分析什么是进程?如何理解进程状态?

什么是进程? 比较官方一点的回答是:当一个程序加载到内存的时候,就是一个进程。 但是这是不准确的回答,进程是怎么在内存中形成的,以及内存是如何管理进程的,是通过什么描述进程的?下面我们将…

Neo4j数据库部署配置

这里写目录标题一、neo4j图形数据库安装与部署1.1配置JDK运行环境(注意jdk与neo4j版本对应)1.2部署Neo4j(注意jdk与neo4j版本对应)二、数据库基本操作演示一、neo4j图形数据库安装与部署 1.1配置JDK运行环境(注意jdk与…

centos安装rocketmq

centos安装rocketmq1 下载rocketmq二进制包2 解压二进制包3 修改broker.conf4 修改runbroker.sh和runserver.sh的JVM参数5 启动NameServer和Broker6 安装rockermq dashboard(可视化控制台)1 下载rocketmq二进制包 点击rocketmq二进制包下载地址,下载完成之后通过ft…

javaEE 初阶 — 数据链路层中的以太网数据帧

文章目录以太网帧格式1. MAC 地址2. MAC 地址是如何与 IP 地址相互配合的3. 以太网帧格式中的类型MTU(了解)以太网帧格式 数据链路层主要考虑的是相邻的两个结点之间的传输。 这里最知名的协议就是 以太网。 一个以太网数据帧有三个部分组成。帧头载荷…

【GlobalMapper精品教程】055:GM坐标转换器的巧妙使用

GM软件提供了一个简单实用的坐标转换工具,可以实现地理坐标和投影坐标之间的高斯正反算及多种转换计算。 文章目录 一、坐标转换器认识二、坐标转换案例1. 地理坐标←→地理坐标2. 地理坐标←→投影坐标三、在输出坐标上创建新的点四、其他转换工具的使用一、坐标转换器认识 …

653600-56-7,Ac4GaINAz,N-叠氮四酰化半乳糖用于PROTAC合成

基础产品数据:CAS号:653600-56-7中文名:N-叠氮四酰化半乳糖,叠氮修饰半乳糖英文名: Ac4GaINAzAc4GaINAz结构式(Structural):详细产品数据:分子式:C16H22N4O10…

python学习——【第二弹】

前言 上一篇文章 python学习——【第一弹】给大家介绍了python中的基本数据类型等,这篇文章接着学习python中的运算符的相关内容。 运算符 python中的运算符主要有:算术运算符,赋值运算符,比较运算符,布尔运算符以及…

NPP夜间灯光遥感数据读取与可视化

1、Google Earth EngineGoogle Earth Engine是Google推出的行星尺度的遥感云计算平台,提供了大量遥感数据的集成与运算工具。同时也包括DMSP和NPP夜间灯光遥感数据(月尺度和年尺度)。这里给出样例的可视化代码。var dataset ee.ImageCollect…

1.2 CSS标签选择器,类选择器

CSS选择器: 根据不同的需求选出不同的标签,进行美化装饰 1. 标签选择器 标签选择器(元素选择器):用 HTML标签名作为选择器,按标签名称进行分类,为页面某一类标签指定统一的CSS样式 作用: 可以把某一类标签全部选中&…

UWB通道选择、信号阻挡和反射对UWB定位范围和定位精度的影响

(一)介绍检查NLOS操作时需要考虑三个方面:(1)由于整体信号衰减,通信范围减小。(2)由于直接路径信号的衰减,导致直接路径检测范围的减小。(3)由于阻…

记录--手摸手带你撸一个拖拽效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 最近看见一个拖拽效果的视频(抖音:艾恩小灰灰),看好多人评论说跟着敲也没效果,还有就是作者也不回复大家提出的一些疑问,本着知其然必要知其所以然…

栈帧之局部变量表(Local Variables)解读

局部变量表也被称之为局部变量数组或本地变量表 定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress类型。由于局部变量表…

2023最新版本RabbitMQ下载安装教程

一、RabbitMQ简介 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。主要用于在进程、应用程序和服务器之间交换数据,可以通过插件支持进行扩展,支持许多协议,并提供高性能、可靠性、集群和高可用队列。 AMQP :Advanced Me…