kubeadm下进行etcd数据备份与还原



在kubernetes集群中,etcd存储了集群的元数据信息,为防止信息的丢失及还原数据,我们需要对etcd数据进行备份。 本文使用的kubernetes集群采用kubeadm部署的 一、单master的etcd的数据备份与还原 1.从容器中把etcdctl工具复制出来到主机中的/usr/local/bin目录下 docker cp $(docker ps | grep -v etcd-mirror | grep -w etcd | awk ‘{print $1}’):/usr/local/bin/etcdctl /usr/local/bin/ 2.备份etcd数据 etcdctl –endpoints 127.0.0.1:2379
–cert="/etc/kubernetes/pki/etcd/server.crt"
–key="/etc/kubernetes/pki/etcd/server.key"
–cacert="/etc/kubernetes/pki/etcd/ca.crt"
snapshot save etcd_snap_save.db 3.还原etcd数据 ####移除配置和删除数据 mv /etc/kubernetes/manifests/etcd.yaml /opt/ rm -rf /var/lib/etcd/ ####通过命令恢复 etcdctl snapshot restore etcd_snap_save.db
–cacert=/etc/kubernetes/pki/etcd/ca.crt
–cert=/etc/kubernetes/pki/etcd/server.crt
–key=/etc/kubernetes/pki/etcd/server.key
–data-dir=/var/lib/etcd/
–endpoints=https://127.0.0.1:2379 ####配置还原

mv /opt/etcd.yaml /etc/kubernetes/manifests/ 二、多master的etcd的数据备份与还原 1.从容器中把etcdctl工具复制出来到主机中的/usr/local/bin目录下 docker cp $(docker ps | grep -v etcd-mirror | grep -w etcd | awk ‘{print $1}’):/usr/local/bin/etcdctl /usr/local/bin/ 2.备份etcd数据 etcdctl –endpoints 127.0.0.1:2379
–cert="/etc/kubernetes/pki/etcd/server.crt"
–key="/etc/kubernetes/pki/etcd/server.key"
–cacert="/etc/kubernetes/pki/etcd/ca.crt"
snapshot save etcd_snap_save.db 3.还原etcd数据 三台master上都需要操作 k8s-master-1 ####移除配置和删除数据 mv /etc/kubernetes/manifests/etcd.yaml /opt/ rm -rf /var/lib/etcd/ ####通过命令恢复 ETCDCTL_API=3 etcdctl snapshot restore snap-save.db
–cacert=/etc/kubernetes/pki/etcd/ca.crt
–cert=/etc/kubernetes/pki/etcd/server.crt \

–key=/etc/kubernetes/pki/etcd/server.key
–data-dir=/var/lib/etcd/
–endpoints=https://127.0.0.1:2379
–initial-cluster=k8s-master-1=https://192.168.56.101:2380,k8s-master- 2=https://192.168.56.102:2380,k8s-master-3=https://192.168.56.103:2380
–name=k8s-master-1
–initial-advertise-peer-urls=https://192.168.56.101:2380 ####配置还原 mv /opt/etcd.yaml /etc/kubernetes/manifests/ k8s-master-2 ####移除配置和删除数据 mv /etc/kubernetes/manifests/etcd.yaml /opt/ rm -rf /var/lib/etcd/ ####通过命令恢复 ETCDCTL_API=3 etcdctl snapshot restore snap-save.db
–cacert=/etc/kubernetes/pki/etcd/ca.crt
–cert=/etc/kubernetes/pki/etcd/server.crt
–key=/etc/kubernetes/pki/etcd/server.key
–data-dir=/var/lib/etcd/
–endpoints=https://127.0.0.1:2379
–initial-cluster=k8s-master-1=https://192.168.56.101:2380,k8s-master- 2=https://192.168.56.102:2380,k8s-master-3=https://192.168.56.103:2380
–name=k8s-master-2
–initial-advertise-peer-urls=https://192.168.56.102:2380 ####配置还原 mv /opt/etcd.yaml /etc/kubernetes/manifests/ k8s-master-3 ####移除配置和删除数据

mv /etc/kubernetes/manifests/etcd.yaml /opt/ rm -rf /var/lib/etcd/ ####通过命令恢复 ETCDCTL_API=3 etcdctl snapshot restore snap-save.db
–cacert=/etc/kubernetes/pki/etcd/ca.crt
–cert=/etc/kubernetes/pki/etcd/server.crt
–key=/etc/kubernetes/pki/etcd/server.key
–data-dir=/var/lib/etcd/
–endpoints=https://127.0.0.1:2379
–initial-cluster=k8s-master-1=https://192.168.56.101:2380,k8s-master- 2=https://192.168.56.102:2380,k8s-master-3=https://192.168.56.103:2380
–name=k8s-master-3
–initial-advertise-peer-urls=https://192.168.56.103:2380 ####配置还原 mv /opt/etcd.yaml /etc/kubernetes/manifests/ 三、k8s中其他etcd命令汇总 ###查看etcd 集群成员列表 etcdctl – endpoints=https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103: 2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key member list ###查看endpoints 状态 etcdctl – endpoints=https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103: 2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key –write-out=table endpoint status ###查看etcd endpoints的健康 etcdctl – endpoints=https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103: 2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key –write-out=table endpoint health ###查看所有的key

ETCDCTL_API=3 etcdctl – endpoints=https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103: 2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key get / –prefix=true –keys-only ###查看某个key具体的内容(会有乱码,因为是序列化后的) ETCDCTL_API=3 etcdctl – endpoints=https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103: 2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key get /registry/services/specs/liutest/nginx 以上为kubeadm下进行etcd数据备份的记录。 kubeadm下进行etcd数据备份与还原_kubadm 搭建的k8s 怎么备份etcd_冰之杍的博客-CSDN博客