摘要:# 下载etcdctl二进制并放入容器 curl -O https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz tar -zxvf etcd-v3.5.0-linux-amd64.
阅读全文
摘要:问题现象 k8s中etcdctl备份etcd时第2步卡住。 export ETCDCTL_API=3 etcdctl --endpoints 172.18.0.2:2379 snapshot save snapshot.db 问题分析 k8s中执行etcdctl命令时没有指定证书文件路径。 解决问题
阅读全文
摘要:安装Etcd集群 docker pull quay.io/coreos/etcd:v3.3.1 docker run -d --name etcd1 quay.io/coreos/etcd:v3.3.1 etcd -name etcd1 -advertise-client-urls http://1
阅读全文
摘要:压缩碎片->清理空间 # 压缩会产生碎片,清理会删除碎片。只有删除碎片,才能减少空间占用。 # 压缩回收历史版本,回收从0到指定版本号的非key最新版本的历史版本数据 etcdctl compact 版本号 # 清理占用的系统存储空间 etcdctl defrag 自动压缩策略的2种模式 压缩策略
阅读全文
摘要:默认读模式线性读。串行读模式可能读到老数据,适用于数据一致性要求低的场景。因为Followe节点收到Leader节点同步的写请求后,异步更新日志条目到自己的状态机,本地状态机数据可能落后于Leader。线性读模式读取到最新数据,适用于数据一致性要求高的场景。Follower向Leader发送Read
阅读全文
摘要:针对各种类型grpc请求耗时统计场景,etcd提供监控数据。 # etcd容器增加环境变量 env: - name: ETCD_METRICS value: extensive curl -s http://127.0.0.1:2381/metrics | grep grpc_server_hand
阅读全文
摘要:针对处理耗时超过100ms的grpc请求,etcd打印包含耗时长的阶段的trace日志。 # etcd容器增加环境变量 env: - name: ETCD_LOGGER value: zap trace日志举例 { "level": "info", "ts": "2024-05-13T14:16:4
阅读全文
摘要:通过kind部署3个etcd实例构成的k8s集群。 cat <<EOF | kind create cluster --name test --config - kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: kubeProx
阅读全文
摘要:问题现象 now := time.Now() if err := kubeClient.CoreV1().Pods("default").Delete(context.Background(), "busybox-7879d986c8-q99t5", metav1.DeleteOptions{});
阅读全文
摘要:查询当前db大小 curl 127.0.0.1:2381/metrics | grep etcd_debugging_mvcc_db_total_size_in_bytes snap和wal区别Etcd保存的数据放在/var/lib/etcd/member目录中,分为snap快照和wal预写式日志。
阅读全文
摘要:单节点etcd集群,etcd版本是3.4.9。 编译etcd benchmark git clone https://github.com/etcd-io/etcd.git cd etcd/ git checkout v3.4.9 rm -rf vendor go install -v ./tool
阅读全文
摘要:节点上没有该ip kubeadm配置正确ip,重装k8s环境。
阅读全文
摘要:heartbeat interval是leader发送心跳的间隔时间。election timeout是follower多久没收到心跳要重新选举的时间。etcd默认heartbeat interval是100ms,election timeout是[1000,2000]ms。heartbeat in
阅读全文
摘要:选举和日志复制不能保证每一个状态机会按照相同的顺序执行相同的指令。例如,一个Follower可能处于不可用状态,Leader提交了多个日志条目,Follower恢复(尚未与Leader达成一致)而Leader故障;如果该Follower被选举为Leader并且覆盖这些日志条目,就会出现问题,即不同的
阅读全文
摘要:第一阶段:请求到达Leader Leader收到请求后把它作为日志条目Entry写入本地日志中,状态是未提交。 第二阶段:Leader把日志条目发送到其他Follower 1.为什么Leader向Follower发送的Entry是AppendEntries呢?因为Leader与Follower的心跳
阅读全文
摘要:选举:当初始化集群或者Leader宕机时,选举新Leader。日志复制:Leader接收写请求后,以日志条目的形式复制到集群中的其它节点,强制要求其它节点的日志和自己保持一致。安全性:如果有任何节点已经应用了一个确定的日志条目到它的状态机中,那么其它节点不能在同一个日志索引位置应用一个不同的指令。
阅读全文
摘要:docker exec -u root -it etcd容器id sh export ETCDCTL_API=3 alias myetcd="etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etc
阅读全文
摘要:Etcd v3.4.0 Raft角色 Raft集群中节点分为3种状态:领导者Leader、追随者Follower、候选者Candidate。正常情况下,集群中的节点只存在Leader与Follower这2种状态。 Leader:负责日志的同步管理,处理写请求,与Follower保持心跳。Follow
阅读全文
摘要:docker pull quay.io/coreos/etcd:v3.3.1 docker run -d --name etcd1 quay.io/coreos/etcd:v3.3.1 etcd -name etcd1 -advertise-client-urls http://172.17.0.2
阅读全文