Kubernetes中etcd备份与恢复

news/2024/9/18 15:00:33/ 标签: kubernetes, etcd, 容器

在Kubernetes (K8s) 中,etcd 是一个分布式键值存储系统,存储了整个集群的配置和状态数据。由于etcd在K8s集群中的核心作用,定期备份和有效恢复etcd数据对于维护集群的高可用性和数据完整性至关重要。

etcd_3">一、etcd概述

etcd_5">1.1 etcd的作用

etcd是一个高可用的分布式键值存储系统,主要用于存储Kubernetes集群的所有配置数据,包括节点信息、Pod状态、服务发现数据、权限管理等。etcd的数据一致性和高可用性直接影响到Kubernetes集群的稳定运行。

etcd_8">1.2 为什么需要备份etcd

备份etcd是为了防止数据丢失和保证集群恢复能力。任何对etcd数据的破坏性操作(例如误删除关键资源、etcd数据损坏)都可能导致集群瘫痪,因此定期备份至关重要。

etcd_11">二、etcd的备份

2.1 备份方式概述

etcd提供了多种备份方式,包括手动备份和自动备份。常见的备份方法包括通过 etcdctl 命令行工具进行快照备份,或利用定时任务自动备份等。

etcdctl_16">2.2 使用etcdctl进行手动备份

etcdctletcd的命令行工具,用于管理etcd集群和数据。我们可以使用它来创建etcd的数据快照。

步骤:

  1. 连接到etcd主节点(通常是控制平面的节点)。

  2. 使用以下命令创建快照备份:

    ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
    --cacert=/etc/kubernetes/pki/etcd/ca.crt \
    --cert=/etc/kubernetes/pki/etcd/server.crt \
    --key=/etc/kubernetes/pki/etcd/server.key \
    snapshot save /path/to/backup/etcd-snapshot.db
    

    该命令会将etcd的快照保存到指定路径的etcd-snapshot.db文件中。

  3. 验证快照是否成功:

    ETCDCTL_API=3 etcdctl --write-out=table snapshot status /path/to/backup/etcd-snapshot.db
    

    该命令会显示快照文件的详细信息,包括etcd版本、快照数据大小等。

2.3 自动备份

为保证备份的及时性,可以通过编写脚本并设置定时任务(如 cron)来自动化备份过程。

示例脚本:

#!/bin/bash
# etcd 备份路径
BACKUP_DIR="/var/backups/etcd"
# 当前时间
DATE=$(date +%Y%m%d%H%M%S)
# 备份文件名
SNAPSHOT_NAME="etcd-snapshot-${DATE}.db"
# 执行备份
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save ${BACKUP_DIR}/${SNAPSHOT_NAME}
# 保留最近7天的备份,其余删除
find ${BACKUP_DIR} -type f -mtime +7 -name 'etcd-snapshot-*.db' -exec rm -f {} \;

etcd_59">三、etcd的恢复

etcdctl_61">3.1 使用etcdctl进行恢复

在发生故障或数据丢失时,可以通过etcdctl工具恢复数据。恢复操作需要谨慎进行,因为错误的恢复操作可能导致集群数据不一致。

步骤:

  1. 停止etcd服务:

    systemctl stop etcd
    
  2. 使用快照文件恢复etcd数据:

    ETCDCTL_API=3 etcdctl snapshot restore /path/to/backup/etcd-snapshot.db \
    --name etcd-restore \
    --data-dir /var/lib/etcd-restore \
    --initial-cluster etcd-restore=https://127.0.0.1:2380 \
    --initial-cluster-token etcd-cluster-restore \
    --initial-advertise-peer-urls https://127.0.0.1:2380
    

    这一步会将快照文件恢复到指定的数据目录,并生成一个新的etcd集群配置。

  3. 将恢复的数据目录替换现有的etcd数据目录:

    mv /var/lib/etcd /var/lib/etcd-old
    mv /var/lib/etcd-restore /var/lib/etcd
    
  4. 重启etcd服务:

    systemctl start etcd
    
  5. 检查etcd集群状态:

    ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
    --cacert=/etc/kubernetes/pki/etcd/ca.crt \
    --cert=/etc/kubernetes/pki/etcd/server.crt \
    --key=/etc/kubernetes/pki/etcd/server.key \
    endpoint health
    

四、注意事项

  1. 备份频率:根据集群规模和数据更新频率设置合理的备份周期。对于大型集群,建议每日备份。
  2. 备份安全性:备份文件中包含敏感数据,建议对备份文件进行加密,并妥善存储在安全的地方。
  3. 恢复操作的风险:在生产环境中进行恢复操作前,务必在测试环境中充分验证,以防操作失误带来的数据丢失或集群故障。

通过定期备份和掌握恢复操作,能够有效应对etcd数据的意外损失,保障Kubernetes集群的持续高可用性。


http://www.ppmy.cn/news/1516330.html

相关文章

环境问题处理:Python写工具,转换excel内容合并到xml中(openpyxllxml)

问题描述 提示报错,但是没有像java代码的解决方案推荐。 Note:PycharmProjects\项目名\venv\Scripts 创建项目时自带的脚本,也包含python.exe 查看python文件有输出路径,使用python也能打开python3.8,但是无法查找pyt…

前端学习Day34

Day34:P160-P167 学习笔记: 1.对象解构: 对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法 基本语法: .赋值运算符左侧的0用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量 .对象属性的值将被赋值给与属性名相同的变量 .注意…

C和C++中数组的不同

本文选自公众号文章: https://mp.weixin.qq.com/s/xyUMWTyEu7-Uws8Zfxifpg (1)在C99标准中引入了可变长度数组 (Variable-Length Arrays, VLA) 的概念。可变长度数组允许在运行时确定数组的大小,这使得数组的大小可以在函数调用时动态决定。例如&#…

Linux核心命令入门

Linux常用命令 文件管理文件目录管理文件查看编辑 系统管理网络管理hostnamehost/nslookuptraceroutenetstat列出所有端口 (包括监听和未监听的)列出所有处于监听状态的 Sockets显示每个协议的统计信息 硬件管理df(Disk Free)du(Disk Usage&a…

【Pyhthon读取 PDF文件表格 ,转为 CSV/TSV/JSON文件】

tabula-py tabula-py 是一个将 PDF 表格转换为 pandas DataFrame 的工具。 tabula-py 是 tabula-java 的包装器,需要您的机器上有 java。 tabula-py 还允许您将 PDF 中的表格转换为 CSV/TSV 文件。 tabula-py 的 PDF 提取准确度与 tabula-java 或 tabula app 相…

【AI绘画】Midjourney前置/imagine与单图指令详解

文章目录 💯Midjourney前置指令/imagine什么是前置指令?/imaginepromptUpscale(放大)Variations(变化)🔄(重新生成一组图片) 💯单张图片指令Upscale (细节优化)Vary(变体…

简单步骤获取IP地址SSL 证书

在网络安全中,SSL证书在保护用户浏览器和Web服务器之间交换的敏感信息方面发挥着至关重要的作用。 但是,如果您不仅想保护域名,还想保护特定的IP地址,该怎么办?您可以为IP地址获取SSL证书吗? 简短的回答是…

Java Leetcode每日一题:DFS

解法1:深度优先搜索(DFS) 深度优先搜索的做法非常直观。根据给定的员工编号找到员工,从该员工开始遍历,对于每个员工,将其重要性加到总和中,然后对该员工的每个直系下属继续遍历,直到…

一看就会的Mysql 集群技术

目录 一、Mysql介绍 1.1什么是MySQL 1.2MySQL的优势 1.3MySQL的常用语句 二、MySQL源码安装 三、实验练习 3.1MySQL部署 实验环境 实验步骤 1.创建用户,数据目录,更改权限 2.修改文件 3.初始化,会生成一个密码,将其保…

java 二级列表 stream流实现

效果&#xff1a; 表数据的样子 代码&#xff1a; public Result secondaryList() {List<MachineryType> machineryTypes machineryTypeMapper.selectList(new QueryWrapper<MachineryType>().orderByAsc("pid"));// 创建父子关系Map<Integer, Mach…

“Ruby宝石匣:解锁流行插件系统的奥秘“

标题&#xff1a;“Ruby宝石匣&#xff1a;解锁流行插件系统的奥秘” 引言 Ruby&#xff0c;作为一种灵活且富有表现力的编程语言&#xff0c;其强大的插件系统是其成功的关键因素之一。从RubyGems到各种Rails插件&#xff0c;Ruby的插件生态系统为开发者提供了丰富的资源和工…

Git学习笔记(最终篇)

文章目录 远程仓库一. 配置远程连接二. 添加远程仓库推送本地仓库内容到远程仓库 三. 推送步骤四. 远程库克隆五. 创建与合并分支1. 创建新分支2. 切换分支3. 创建并立即切换到该分支4. 合并分支 六. 处理冲突七. 分支管理策略八. bug分支九. 多人协作十. 推送分支十一. 抓取分…

【PHP入门教程】PHPStudy环境搭建+composer创建项目

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 Composer安装 Composer&#xff1a;安装途中报错解决&#xff1a;初始化项目创建文件最终文件目录Compo…

【JVM】OOM与调优(一)

OOM与调优 方法区 import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class MetaspaceOverFlowTest {/*** 模拟CGLIB向元空间写入数据*/public static void …

【计算机网络】socket网络编程 --- 实现一些简易UDP网络程序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

Python-断点续传的方式下载GPM降水数据

下载GPM卫星降水数据 全球卫星降水计划 (GPM) 是一项国际卫星任务&#xff0c;由NASA和JAXA合作开展&#xff0c;利用多传感器多卫星多算法结合卫星网络和雨量计反演得到更高精度的降水数据&#xff0c;其能够提供全球范围基于微波的3h以内以及基于微波红外的半小时的雨雪数据…

Django 后端架构开发:文件云存储,从本地存储到腾讯COS桶集成

⭐ Django 后端架构开发&#xff1a;文件云存储&#xff0c;从本地存储到腾讯COS桶集成 目录 ☁️ 文件云存储 - 项目使用云存储&#x1f4bb; 文件云存储 - 项目中使用本地存储&#x1f4dd; 文件云存储 - 概述和创建项目&#x1f310; 腾讯COS桶 - 概述&#x1f4da; 腾讯CO…

C++系列-多态的基本语法

多态的基本语法 多态的含义静态多态动态多态 多态的底层原理多态中的final和overridefinaloverride: 多态的应用和优点计算器简单实现电脑组装的实现 《游山西村》 南宋陆游 莫笑农家腊酒浑&#xff0c;丰年留客足鸡豚。 山重水复疑无路&#xff0c;柳暗花明又一村。 箫鼓追…

XML 总结

XML 总结 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它由万维网联盟&#xff08;W3C&#xff09;在1998年定义&#xff0c;旨在提供一种标准化、结构化的方式来组织数据。XML的设计目标是既易于人类阅读&#xff0c;也易于机器解析。本文…

React.js如何使用Bootstrap

在 React.js 项目中使用 Bootstrap 有多种方法&#xff0c;主要包括直接引入 Bootstrap CSS 文件和使用 React Bootstrap 库。下面将详细介绍这两种方法。 方法一&#xff1a;直接引入 Bootstrap CSS 文件 这是最简单的方式&#xff0c;只需在项目中引入 Bootstrap 的 CSS 文…