当前位置: 首页 > article >正文

【Kubernetes】K8s 之 ETCD - 恢复备份

ETCD 是一个高可用的分布式键值存储,常用于存储配置信息和服务发现等。当系统出现故障或数据损坏时,能够快速恢复成先前的状态是维护系统稳定性的关键。ETCD 提供了备份和恢复功能,以确保数据持久性和可靠性,一起来看看如何操作吧!

  • 操作系统:CentOS Linux 7 (Core)
  • Containerd:1.6.33
  • Kubernetes:1.31.0

1、使用场景

  • 系统故障恢复

        当遇到硬件故障、网络问题或意外崩溃时,通过快照可迅速恢复服务

  • 误操作回滚

        如果由于错误的配置更改导致系统异常,可使用备份恢复到正确的状态

  • 数据迁移

        在进行数据迁移或升级时,可以先备份现有数据确保安全,再进行操作

  • 测试与开发环境

        在测试期间,可频繁创建和重置环境,使用快照提高效率和安全性

  • 灾难恢复

        为应对大规模的灾难(如自然灾害),可将 ETCD 的备份存储在异地,并在故障后快速恢复

2、具体操作

2.1、创建测试容器并且暴露端口

### 创建测试容器并且暴露端口 #### 创建命名空间 abc
kubectl create ns abc
# 在 abc 命名空间下运行测试容器 nginx-test
kubectl run nginx-test --image=nginx:latest -n abc
# 为 nginx-test 暴露端口,使用 NodePort 类型
kubectl expose pod nginx-test --port=80 --target-port=80 --name=nginx-svc --type=NodePort -n abc# 查看容器运行且可访问
kubectl get pod,svc -n abc
curl localhost:31074

2.2、查看 etcd 相关信息

### 查看当前 etcd 相关信息 #### etcd 以 pod 方式运行
kubectl get pod -n kube-system |grep etcd# 查看相关证书及工作目录
# <trusted-ca-file>:CA 文件
# <cert-file>:节点证书文件
# <key-file>:节点私钥文件
# <data-dir>:数据存储目录
cat /etc/kubernetes/manifests/etcd.yaml |grep etcd# 查看当前 etcd 成员(此处为 etcd 单节点)
ETCDCTL_API=3 etcdctl --endpoints=https://172.16.14.132:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key member list

2.3、备份

### 备份 #### 创建目录存放备份 .db
mkdir -p /data/etcdbak
cd /data/etcdbak
# 备份文件为 etcd-snapshot.db
ETCDCTL_API=3 etcdctl --endpoints=https://172.16.14.132:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /data/etcdbak/etcd-snapshot.db# 删除命名空间 abc(同步删除 pod 和 svc)
kubectl get all -n abc
kubectl delete ns abc

2.4、还原

### 恢复还原 #### 移除并备份 /etc/kubernetes/manifests 目录
mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak
# 检查容器(etcd、kube-apiserver)停止
crictl ps |grep etcd && crictl ps|grep kube-apiserver
# 备份现有的 etcd 数据
mv /var/lib/etcd /var/lib/etcd.bak
# 为 etcd 备份的 .db 文件增加权限 
chmod 777 /data/etcdbak/etcd-snapshot.db
# 还原(可不加证书密钥)
ETCDCTL_API=3 etcdctl --endpoints=https://172.16.14.132:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot restore /data/etcdbak/etcd-snapshot.db --data-dir=/var/lib/etcd/
# 恢复容器(etcd、kube-apiserver)
mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests# 检查 abc 命名空间是否恢复
kubectl get pod -n abc

http://www.lryc.cn/news/2404128.html

相关文章:

  • CMS、G1、ZGC、Shenandoah 的全面对比
  • RabbitMQ 学习
  • 如何轻松、安全地管理密码(新手指南)
  • AWS App Mesh实战:构建可观测、安全的微服务通信解决方案
  • 9.axios底层原理,和promise的对比(2)
  • 用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战
  • Gartner《How to Create and Maintain a Knowledge Base forHumans and AI》学习报告
  • 【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
  • PyTorch 中cumprod函数计算张量沿指定维度的累积乘积详解和代码示例
  • docker镜像下载到本地,并导入服务器
  • 数据通信与计算机网络——数字传输
  • oracle 归档日志与RECOVERY_FILE_DEST 视图
  • 黄柏基因组-小檗碱生物合成的趋同进化-文献精读142
  • 前端杂货铺——TodoList
  • Spring Boot SSE流式输出+AI消息持久化升级实践:从粗暴到优雅的跃迁
  • camera功能真的那么难用吗
  • Model Context Protocol (MCP) 是一个前沿框架
  • SQL Server 日期时间类型全解析:从精确存储到灵活转换
  • Android Test3 获取的ANDROID_ID值不同
  • [蓝桥杯 2024 国 B] 立定跳远
  • 内容力重塑品牌增长:开源AI大模型驱动下的智能名片与S2B2C商城赋能抖音生态种草范式
  • 手机号在网状态查询接口如何用PHP实现调用?
  • 【Java微服务组件】分布式协调P4-一文打通Redisson:从API实战到分布式锁核心源码剖析
  • 一个简单的德劳内三角剖分实现
  • Python入门手册:异常处理
  • C#子线程更新主线程UI及委托回调使用示例
  • 使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中
  • 手写Promise.all
  • 调试器基本原理
  • 2025年6月|注意力机制|面向精度与推理速度提升的YOLOv8模型结构优化研究:融合ACmix的自研改进方案