说明

  • 基于kubeadm方式部署的集群进行说明
  • etcd对应的yaml文件资源地址:/etc/kubernetes/manifests/etcd.yaml

命令

##拷贝命令
kubeadm方式部署的集群中的 etcd 是以 pod 形式运行在集群中,故宿主机上没有 etcdctl 命令,要在宿主机执行命令需拷贝。

  1. # docker ps -a |grep etcd
  2. 1a7861012e41 b2756210eeab "etcd --advertise-cl…" 2 months ago Up 2 months k8s_etcd_etcd-master3_kube-system_7fb71b36d14428d6ea20a3d93a9969d1_48
  3. 68e9400400d4 k8s.gcr.io/pause:3.1 "/pause" 2 months ago Up 2 months k8s_POD_etcd-master3_kube-system_7fb71b36d14428d6ea20a3d93a9969d1_5
  4. # docker exec -it 1a7861012e41 sh
  5. # which etcdctl
  6. /usr/local/bin/etcdctl
  7. # exit
  8. # docker cp 1a7861012e41:/usr/local/bin/etcdctl /usr/sbin/


  1. ##查看集群成员节点
  2. $ export ETCDCTL_API=3
  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
  4. $ 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'
  5. 或者
  6. $ 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'
  7. $ etcdctl member list -w table
  8. ##查看集群节点状态
  9. $ etcdctl endpoint status -w table
  10. $ etcdctl endpoint health -w table
  11. ##设置key值
  12. $ etcdctl put crab 1
  13. ##查看key值
  14. $ etcdctl get crab
  15. ##查看所有key值(etcd存储的数据信息)
  16. $ etcdctl get / --prefix --keys-only
  17. ##查看具体的key对应的数据
  18. $ 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/