说明
- 基于kubeadm方式部署的集群进行说明
- etcd对应的yaml文件资源地址:/etc/kubernetes/manifests/etcd.yaml
命令
##拷贝命令
kubeadm方式部署的集群中的 etcd 是以 pod 形式运行在集群中,故宿主机上没有 etcdctl 命令,要在宿主机执行命令需拷贝。
# docker ps -a |grep etcd1a7861012e41 b2756210eeab "etcd --advertise-cl…" 2 months ago Up 2 months k8s_etcd_etcd-master3_kube-system_7fb71b36d14428d6ea20a3d93a9969d1_4868e9400400d4 k8s.gcr.io/pause:3.1 "/pause" 2 months ago Up 2 months k8s_POD_etcd-master3_kube-system_7fb71b36d14428d6ea20a3d93a9969d1_5# docker exec -it 1a7861012e41 sh# which etcdctl/usr/local/bin/etcdctl# exit# docker cp 1a7861012e41:/usr/local/bin/etcdctl /usr/sbin/
##查看集群成员节点$ export ETCDCTL_API=3$ etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key member list -w table$ alias etcdctl='etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key'或者$ alias etcdctl='etcdctl --endpoints=192.168.10.101:2379,192.168.10.102:2379,192.168.10.103:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key'$ etcdctl member list -w table##查看集群节点状态$ etcdctl endpoint status -w table$ etcdctl endpoint health -w table##设置key值$ etcdctl put crab 1##查看key值$ etcdctl get crab##查看所有key值(etcd存储的数据信息)$ etcdctl get / --prefix --keys-only##查看具体的key对应的数据$ etcdctl get /registry/pods/jenkins/sonar-postgres-7fc5d748b6-gtmsb
快照
#查看备份数据大小
# etcdctl endpoint status -w table
+--------------------------+------------------+---------+---------+-----------+-----------+------------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX |
+--------------------------+------------------+---------+---------+-----------+-----------+------------+
| https://[127.0.0.1]:2379 | af1606bc858f5794 | 3.3.15 | 5.6 MB | false | 476 | 41650641 |
+--------------------------+------------------+---------+---------+-----------+-----------+------------+
#做数据快照(可将快照命令做成定时任务按需执行!)
$ etcdctl snapshot save `hostname`-etcd_`date +%Y%m%d%H%M`.db
#查看备份数据大小
# du -sh master3-etcd_202009031209.db
5.4M master3-etcd_202009031209.db
#恢复快照
1. 停止etcd和apiserver
2. 移走当前数据目录
$ mv /var/lib/etcd/ /tmp
3. 恢复快照
$ etcdctl snapshot restore `hostname`-etcd_`date +%Y%m%d%H%M`.db --data-dir=/var/lib/etcd/
