2.3.5 :etcd增删改查数据: 2.3.6 :etcd数据watch机制: 基于不断监看数据,发⽣变化就主动触发通知客户端, Etcd v3 的watch机制⽀持watch某个固定的key,也⽀持 watch⼀个范围。 相⽐Etcd v2, Etcd v3的⼀些主要变化: 接⼝通过grpc提供rpc接⼝,放弃了v2的http接⼝,优势是⻓连接效率提升明显,缺点是使⽤不如以前⽅便,尤其对 不⽅便维护⻓连接的场景。 废弃了原来的⽬录结构,变成了纯粹的kv,⽤户可以通过前缀匹配模式模拟⽬录。 内存中不再保存value,同样的内存可以⽀持存储更多的key。 watch机制更稳定,基本上可以通过watch机制实现数据的完全同步。 提供了批量操作以及事务机制,⽤户可以通过批量事务请求来实现Etcd v2的CAS机制(批量事务⽀持if条件判断)。 watch测试: #在etcd node1上watch⼀个key,没有此key也可以执⾏watch,后期可以再创建: root@etcd1:~# ETCDCTL_API=3 /usr/bin/etcdctl watch /name #在etcd node2修改数据,验证etcd node1是否能够发现数据变化 root@etcd2:~# ETCDCTL_API=3 /usr/bin/etcdctl put /data "data v1" OK root@etcd2:~# ETCDCTL_API=3 /usr/bin/etcdctl put /data "data v2" OK 2.3.7 :etcd数据备份与恢复机制: WAL是writeahead log的缩写,顾名思义,也就是在执⾏真正的写操作之前先写⼀个⽇志,预写⽇志。 wal: 存放预写式⽇志,最⼤的作⽤是记录了整个数据变化的全部历程。在etcd中,所有数据的修改在提交前,都要 先写⼊到WAL中。 2.3.7.1 :etcd v2版本数据备份与恢复: V2版本帮助信息: root@k8s-etcd2:~# /usr/bin/etcdctl backup --help NAME: etcdctl backup - backup an etcd directory USAGE: etcdctl backup [command options] OPTIONS: --data-dir value Path to the etcd data dir #源数据⽬录 --wal-dir value Path to the etcd wal dir --backup-dir value Path to the backup dir #备份⽬录 --backup-wal-dir value Path to the backup wal dir V2版本备份数据: root@k8s-etcd2:~# ETCDCTL_API=2 etcdctl backup --data-dir /var/lib/etcd/ --backup-dir /opt/etcd_backup 2019-07-11 18:59:57.674432 I | wal: segmented wal file /opt/etcd_backup/member/wal/0000000000000001-0000000000017183.wal is created V2版本恢复数据: #恢复帮助信息: root@k8s-etcd2:~# etcd --help | grep force --force-new-cluster 'false' force to create a new one-member cluster. etcd --data-dir=/var/lib/etcd/default.etcd --force-new-cluster & root@k8s-etcd2:~# vim /etc/systemd/system/etcd.service [Unit] Description=Etcd Server 2.3.7.2 :etcd 集群v3版本数据⼿动备份与恢复: V3版本备份数据: root@k8s-etcd2:~# ETCDCTL_API=3 etcdctl snapshot save snapshot.db Snapshot saved at snapshot.db V3版本恢复数据: root@k8s-etcd2:~# ETCDCTL_API=3 etcdctl snapshot restore snapshot.db --data- dir=/opt/etcd-testdir #将数据恢复到⼀个新的不存在的⽬录中 2019-07-11 18:57:46.526757 I | mvcc: restore compact to 74541 2019-07-11 18:57:46.536114 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32 #⾃动备份数据 root@k8s-etcd2:~# mkdir /data/etcd-backup-dir/ -p root@k8s-etcd2:~# cat script.sh #!/bin/bash source /etc/profile DATE=`date +%Y-%m-%d_%H-%M-%S` ETCDCTL_API=3 /usr/bin/etcdctl snapshot save /data/etcd-backup-dir/etcd-snapshot- ${DATE}.db 2.3.7.3 :etcd 集群v3版本数据⾃动备份与恢复: root@k8s-master1:/etc/kubeasz# ./ezctl backup k8s-01 root@k8s-master1:/etc/kubeasz# kubectl delete pod net-test4 pod "net-test4" deleted root@k8s-master1:/etc/kubeasz# ./ezctl restore k8s-01 2.3.7.4: ETCD数据恢复流程: 当etcd集群宕机数量超过集群总节点数⼀半以上的时候(如总数为三台宕机两台),就会导致整合集群宕机,后期需 要重新恢复数据,则恢复流程如下: 1、恢复服务器系统 2、重新部署ETCD集群 3、停⽌kube-apiserver/controller-manager/scheduler/kubelet/kube-proxy 4、停⽌ETCD集群 5、各ETCD节点恢复同⼀份备份数据 6、启动各节点并验证ETCD集群 7、启动kube-apiserver/controller-manager/scheduler/kubelet/kube-proxy 8、验证k8s master状态及pod数据 2.3.7.5: ETCD集群节点添加与删除: 节点维护主要是节点的添加或删除
标签:--,root,备份,etcd,操作,k8s,backup,dir From: https://www.cnblogs.com/gaoyuechen/p/18472148