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数据备份与恢复
相关推荐
leijiwen8 小时前
Bsin-PaaS(毕昇)——LinkLifeVerse OS 的产业智能工程底座
云原生·云计算·paas
小二·10 小时前
RAG + 向量数据库实战:ChromaDB / Milvus / FAISS 选型与性能横评
数据库·milvus·faiss
矜持的左手10 小时前
电子小白的枕边书:电子学(The Art of Electronics)
数据库·restful
吴声子夜歌10 小时前
Redis 5.x——布隆过滤器
数据库·redis·缓存
蓝天下的守望者11 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
上海云盾-小余11 小时前
网站频繁遭遇 SQL 注入溯源与原生漏洞修复全流程总结
数据库·sql
数据库小学妹11 小时前
国家区域医疗中心国产化改造实战:数据库选型、跨院区数据互通与踩坑经验
数据库·国产数据库·数据库选型·医疗信息化·信创数据库·医疗信创
AllData公司负责人13 小时前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
2603_9547083113 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全