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数据备份与恢复
相关推荐
巨大八爪鱼2 分钟前
XP系统运行IoTDB 2.0.10数据库服务器
数据库·iotdb·xp
卓怡学长4 分钟前
w181springboot机场乘客服务系统
java·数据库·spring boot·spring·intellij-idea
阮胜昌10 分钟前
MySQL 9.7.0 LTS 现已发布:扩展了社区功能,并为企业级应用增加了动态数据脱敏功能
数据库·mysql
xiaoxiangsiyan15 分钟前
全网IPv6规模化改造实战指南
运维·网络·笔记·云原生·自动化
晓子文集19 分钟前
Tushare接口文档:每日涨跌停价格(stk_limit)
大数据·数据库·金融数据·量化投资
高卧怡怡25 分钟前
Kubernetes的部署和环境配置
云原生·容器·kubernetes
l1t39 分钟前
测试DuckDB luajit插件读取本地通达信文件
开发语言·数据库·duckdb
拓人间精准客40 分钟前
2025–2026 ToB 精准拓客实战手册:用“企业数据画像 + 动态筛选“击穿七大行业获客内卷
大数据·数据库·人工智能
杨云龙UP1 小时前
Toad for Oracle 调整表空间 Datafile 大小:Usage、Used Pct of Max 与 RESIZE 实战
linux·运维·服务器·数据库·oracle·dba·数据库运维