美文网首页我和Kubernetes有个约会
K8S控制平面组件etcd----Raft协议

K8S控制平面组件etcd----Raft协议

作者: 青衣敖王侯 | 来源:发表于2023-06-13 19:52 被阅读0次

1.Raft协议概览


节点刚启动的时候,都是follower,如果说follower在一定时间内没有收到leader的心跳,那么就会变成candidate来发起投票竞选成为leader,成为leader后,就会心跳给其他人,其他人的等待超时时间就会重新刷新以此承认leader。

1.1 learner


如果只有leader和follower两种角色的时候,会有一些问题。比如某些时候,Follower坏掉了,要换一个新的上来,但新的follower数据跟leader的数据差距太大了,如果这个新的follower发起投票,别的follower的commit都比它大很多,那这次投票就是无效的,再加上这种新的follower为了同步数据,导致网络压力很大,心跳可能发送失败,这样会进一步导致集群不可用的状态更严重了。

2 etcd基于Raft的一致性


3 etcd日志复制


数据的写入都需要发送给leader,那如果写入请求发给了follower会怎样呢?Follower接收到这个请求以后,会在一致性模块里面,把这个请求转给leader,让leader去处理

4 etcd 安全性


5 失效处理

6 wal日志(write ahead log)


7 etcd v3存储,Watch以及过期机制


etcd存储数据的时候,主要分成了2个部分,第一个部分叫做KVStore,KVStore是它存在内存里面的,这是一个in memory的KVStore,这一块主要是用来做索引的。第二个部分:blotdb,真正存数据的地方。
WatchableStore,主要是用于监听的。因为etcd本身是支持监听的,

7.1 存储机制


7.2存储流程


写入请求进来之后,首先会进行预检查,预检查通过了之后,会转发到KVServer,KVServer接收到这个请求会通过propose的方法然后转发到一致性模块,一致性模块会做日志复制,日志复制具体的操作是首先会在memory里面(etcd的内存里面)构建raftLog,它会把相应的命令写入到unstable里面,记录了一下说我现在有一条数据要写入,接下来同时这个请求会写入到本地wal log(这个写入是要落盘的),但这个落盘是用fsync,不然的话效率太低了,写wal log的同时,有一个gorouting把同样的message,发到其他follower那里。follower收到这个请求之后呢,它也要做同样的事情,相当于把这个写操作放入wal log,并且写完以后返回response。Leader如果收到半数以上的回复,就确认这个写入commit了,然后更新MatchIndex,接下来unstable里面的数据放到committed里面,同时leader会请求状态机(MVCC模块)来记录这次数据。

7.3Watch机制


相关文章

  • k8s 核心组件对照nova梳理

    1. k8s 核心组件架构图 控制平面包括三个组件: kube-apiserver 资源 crud 接口 kube...

  • Kubernetes 调度详解

    Kubernetes Scheduler 是 Kubernetes 控制平面的核心组件之一。它在控制平面上运行,将...

  • Kubeadm init 流程

    1、引导前检查 2、生成私钥和数字证书 3、生成控制平面组件kubeconfig文件 4、生成控制平面组件mani...

  • kubernets的基本介绍

    k8s的物理结构 master master 负责管理容器的控制器,控制中心,Contol plane:控制平面 ...

  • kubeadm 创建集群

    初始化控制平面节点 1.控制平面节点是运行控制平面组件的机器,包括etcd 集群数据库和API Server(ku...

  • kubernetes 基础组件

    kubernetes 基础组件 [TOC] 1. Master(节点) 负责控制集群控制的节点,每个k8s集群都有...

  • Ospf 路由选路的问题

    在传统网络中分析网络功能,通常从控制平面和数据转发平面同时入手。在传统网络控制平面中,二层是生成树协议,转发依据...

  • 利用kubeadm+keepalived创建高可用kuberne

    本文参考官方文档,采用堆控制层面节点方式部署高可用集群,etcd组件和控制平面组件都以pod形式部署在master...

  • k8s apiServer

    k8s apiServer是访问k8s的组件,是k8s所有组件交互的通道。其它组件不会两两交互,都通过apiSer...

  • k8s 控制平面HA vip LB

    k8s 控制平面的HA怎么做的? 首先cluster ip 也能起到vip的作用,同时也具备HA的功能。 当然cl...

网友评论

    本文标题:K8S控制平面组件etcd----Raft协议

    本文链接:https://www.haomeiwen.com/subject/ponfydtx.html