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数据备份与恢复
相关推荐
玄同76515 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码17 分钟前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean18 分钟前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
小章UPUP24 分钟前
Kubernetes (K8s) 与 Podman 的比较
容器·kubernetes·podman
忆~遂愿29 分钟前
CANN metadef 核心解析:计算图原型定义、算子元数据抽象与异构系统互操作机制
docker·容器
小Tomkk38 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
qq_12498707531 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
说实话起个名字真难啊1 小时前
用docker来安装openclaw
docker·ai·容器
倒流时光三十年2 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
恬静的小魔龙2 小时前
【群晖Nas】群晖Nas中实现SVN Server功能、Docker/ContainerManager等
docker·svn·容器