kubeadm-k8s 中的 etcd 备份与恢复

1、单 master 的 etcd 的数据备份与还原

  • 从容器中把 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/

  • 备份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

  • 还原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/

2、多master的etcd的数据备份与还原

  • 从容器中把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/

  • 备份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

  • 还原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/

3、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数据备份与恢复
相关推荐
●VON3 小时前
重生之我在大学自学鸿蒙开发第九天-《分布式流转》
学习·华为·云原生·harmonyos·鸿蒙
无妄无望3 小时前
docker学习(4)容器的生命周期与资源控制
java·学习·docker
TDengine (老段)5 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)5 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
爱宇阳5 小时前
禅道社区版 Docker Compose 服务迁移教程
运维·docker·容器
安当加密5 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
xzl046 小时前
docker运行Ubuntu22.04
docker
爱喝白开水a6 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽6 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康6 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql