Kubernetes集群上的Etcd备份和恢复
在本教程中,您将学习如何在Kubernetes集群上使用etcd快照进行etcd备份和恢复。
在Kubernetes架构中,etcd是集群的重要组成部分。所有集群对象及其状态都存储在etcd中。为了更好地理解Kubernetes,有几点关于etcd的信息是您需要了解的。
- 它是一个一致的、分布式的、安全的键值存储。
- 它使用raft协议。
- 支持堆叠etcd的高可用架构。
- 它存储kubernetes集群配置、所有API对象、对象状态和服务发现细节。
Kubernetes etcd 备份使用etcdctl
以下是您应该了解的有关 etcd 备份的信息。
- etcd 有一个内置的快照机制。
- etcdctl是与 etcd 交互以获取快照的命令行实用程序。
按照下面给出的步骤备份 etcd 快照。
- 登录到控制平面
- 如果群集控制平面中没有 etcdctl,请使用以下命令进行安装。
sudo apt install etcd-client
- 我们需要将以下三部分信息传递给etcdctl以获取etcd快照。
etcd endpoint
(–endpoints)ca certificate
(–cacert)server certificate
(–cert)server key
(–key)
你可以通过两种方式获得上述参数。
etcd
的静态pod
清单文件位于/etc/kubernetes/manifest/etcd.yaml
位置。
- 您也可以通过描述在
kube-system
命名空间中运行的etcd pod
来获得上述细节。在描述pod时,将etcd-master-node
替换为您的etcd pod
名称。
kubectl get po -n kube-system
kubectl describe pod etcd-master-node -n kube-system
- 使用以下命令进行etcd快照备份。
ETCDCTL_API=3 etcdctl \--endpoints=https://127.0.0.1:2379 \--cacert=<ca-file> \--cert=<cert-file> \--key=<key-file> \snapshot save <backup-file-location>
添加实际位置和参数时,命令如下所示。执行该命令进行备份。您可以将/opt/backup/etc.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 /opt/backup/etcd.db
如果执行成功,你会得到一个“Snapshot saved at /opt/backup/etc.db
”的消息,如下所示。
此外,您可以使用以下命令来验证快照。
ETCDCTL_API=3 etcdctl --write-out=table snapshot status /opt/backup/etcd.db
下面是一个示例输出。
+----------+----------+------------+------------+
| HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| b7147656 | 51465 | 1099 | 5.1 MB |
+----------+----------+------------+------------+
Kubernetes etcd恢复使用快照备份
现在我们在/opt/backup/etc.db
位置有了备份。我们将使用快照备份来恢复etcd。
下面是恢复etcd的命令。
ETCDCTL_API=3 etcdctl snapshot restore <backup-file-location>
让我们执行etcd还原命令。/opt/backup/etc.db
是备份文件。
ETCDCTL_API=3 etcdctl snapshot restore /opt/backup/etcd.db
如果您想使用特定的数据目录进行恢复,可以使用--data-dir
标志添加位置,如下所示。
ETCDCTL_API=3 etcdctl --data-dir /opt/etcd snapshot restore /opt/backup/etcd.db
创建定时任务备份
通过配置 Kubernetes CronJob,可以指定定期执行备份任务的时间表,确保etcd数据在指定的时间间隔内自动备份。这种方式不仅简化了备份流程,还能确保集群数据的安全和持久性,防止数据丢失。CronJob的灵活性和自动化特性使得管理和维护etcd备份变得更加高效和可靠。
apiVersion: batch/v1
kind: CronJob
metadata:name: etcd-disaster-recovery # 定义 CronJob 的名称namespace: cronjob # 指定 CronJob 所属的命名空间
spec:schedule: "0 2 * * *" # 设置定时任务的调度时间表达式,表示每天凌晨2点执行一次jobTemplate:spec:template:metadata:# labels:# app: etcd-disaster-recovery # 为 Pod 添加标签,可根据需要注释或删除spec:affinity: # 定义 Pod 的亲和性配置nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- master01 # 选择特定的节点(这里是选择 hostname 为 master01 的节点)containers: # 定义 Pod 中的容器- name: etcd # 容器名称image: registry.k8s.io/etcd:3.5.10-0 # 使用的 etcd 镜像版本为 3.5.10-0imagePullPolicy: "IfNotPresent" # 镜像拉取策略,如果本地已存在该镜像,则不重新拉取command: # 容器启动命令- sh- -c- "export ETCDCTL_API=3; \etcdctl --endpoints=$ENDPOINT \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key \--cacert=/etc/kubernetes/pki/etcd/ca.crt \snapshot save /snapshot/snapshot.db; \echo etcd backup success"env: # 环境变量配置,设置了一个名为 ENDPOINT 的环境变量,值为 "https://127.0.0.1:2379"- name: ENDPOINTvalue: "https://127.0.0.1:2379"volumeMounts: # 挂载配置,指定了容器中需要挂载的卷和挂载路径- mountPath: "/etc/kubernetes/pki/etcd" # 将主机上的 /etc/kubernetes/pki/etcd 目录挂载到容器的 /etc/kubernetes/pki/etcd 路径name: etcd-certs- mountPath: "/var/lib/etcd" # 将主机上的 /var/lib/etcd 目录挂载到容器的 /var/lib/etcd 路径name: etcd-data- mountPath: "/snapshot" # 将主机上的 /root/etcd/snapshot 目录挂载到容器的 /snapshot 路径name: snapshotsubPath: data/etcd-snapshot # 在主机上的 /root/etcd/snapshot 目录下,将数据挂载到容器的 /snapshot/data/etcd-snapshot 路径下- mountPath: /etc/localtime # 将主机上的 /etc/localtime 文件挂载到容器的 /etc/localtime 路径name: lt-config- mountPath: /etc/timezone # 将主机上的 /etc/timezone 文件挂载到容器的 /etc/timezone 路径name: tz-configrestartPolicy: OnFailure # 定义容器重启策略,当容器失败时才会重启volumes: # 卷配置,定义了 Pod 中使用的卷- name: etcd-certshostPath:path: /etc/kubernetes/pki/etcd # 使用主机上的 /etc/kubernetes/pki/etcd 目录作为卷- name: etcd-datahostPath:path: /var/lib/etcd # 使用主机上的 /var/lib/etcd 目录作为卷- name: snapshothostPath:path: /root/etcd/snapshot # 使用主机上的 /root/etcd/snapshot 目录作为卷- name: lt-confighostPath:path: /etc/localtime # 使用主机上的 /etc/localtime 文件作为卷- name: tz-confighostPath:path: /etc/timezone # 使用主机上的 /etc/timezone 文件作为卷hostNetwork: true # 使用主机网络模式,Pod 将共享主机的网络命名空间
结论
在这篇博客中,我们学习了使用etcdctl命令行实用工具进行Kubernetes etcd备份和恢复。
相关文章:

Kubernetes集群上的Etcd备份和恢复
在本教程中,您将学习如何在Kubernetes集群上使用etcd快照进行etcd备份和恢复。 在Kubernetes架构中,etcd是集群的重要组成部分。所有集群对象及其状态都存储在etcd中。为了更好地理解Kubernetes,有几点关于etcd的信息是您需要了解的。 它是…...

创建型模式 (Python版)
单例模式 懒汉式 class SingleTon:# 类属性_obj None # 用来存储对象# 创造对象def __new__(cls, *args, **kwargs):# 如果对象不存在,就创造一个对象if cls._obj is None:cls._obj super().__new__(cls, *args, *kwargs)# 返回对象return cls._objif __name__…...

【收录 Hello 算法】9.4 小结
目录 9.4 小结 1. 重点回顾 2. Q & A 9.4 小结 1. 重点回顾 图由顶点和边组成,可以表示为一组顶点和一组边构成的集合。相较于线性关系(链表)和分治关系(树),网络关系(图&am…...

MYSQL数据库基础语法
目录 友情提醒第一章:数据库简述1)数据库简述2)常见的数据库软件3)MySQL数据库安装和连接4)SQL语句分类①DDL(Data Definition)②DML(Data Manipulation)③DQL࿰…...

R实验 参数检验(二)
实验目的:掌握正态分布和二项分布中,功效与样本容量之间的关系;学会利用R软件完成一个正态总体方差和两个正态总体方差比的区间估计和检验。 实验内容: (习题5.28)一种药物可治疗眼内高压,目的…...

【Linux】进程信号及相关函数/系统调用的简单认识与使用
文章目录 前言一、相关函数/系统调用1. signal2. kill3. abort (库函数)4. raise (库函数)5. alarm 前言 现实生活中, 存在着诸多信号, 比如红绿灯, 上下课铃声…我们在接收到信号时, 就会做出相应的动作. 对于进程也是如此的, 进程也会收到来自 OS 发出的信号, 根据信号的不同…...

Spring (14)什么是Spring Boot
Spring Boot是一个开源的Java基础框架,旨在简化Spring应用的创建和开发过程。Spring Boot通过提供一套默认配置(convention over configuration),自动配置和启动器(starters)来减少开发者的开发工作量和配置…...

区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测
区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测 目录 区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-KDE卷积神经网络结合…...

Java集合框架全景解读:从源码到实践精通指南
1. Java集合框架简介 在Java中,集合框架是用于存储和处理数据集合的一组类和接口。它提供了一系列的数据结构,比如列表(List)、集(Set)和映射(Map)。这些数据结构为开发者处理数据提…...

Python | Leetcode Python题解之第107题二叉树的层序遍历II
题目: 题解: class Solution:def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:levelOrder list()if not root:return levelOrderq collections.deque([root])while q:level list()size len(q)for _ in range(size):node q.popl…...

H4vdo 台湾APT-27视频投放工具
地址:https://github.com/MartinxMax/H4vdo 视频 关于 H4vdo RTMP lock 屏播放视频工具,可以向目标发送有效载荷,播放目标的屏幕内容。目标无法曹作计算机 使用方法 安装依赖 根据你的操作系统选择一个安装程序 RTMP 服务端 ./rtsp-simple-server.…...

数据结构(树)
1.树的概念和结构 树,顾名思义,它看起来像一棵树,是由n个结点组成的非线性的数据结构。 下面就是一颗树: 树的一些基本概念: 结点的度:一个结点含有的子树的个数称为该结点的度; 如上图&#…...

HTML静态网页成品作业(HTML+CSS)——川西旅游介绍网页(2个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有2个页面。 二、作品演示 三、代…...

MySQL数据库单表查询中查询条件的写法
1.使用比较运算符作为查询条件 ; !; >; >; <; <; 如上图所示,可以使用命令select 字段,字段 from 表名 where Gender “M”; 即挑选出Gender “M” 的教师, 如上图所示,可以使用命令select 字段,…...

SQL靶场搭建
概述 简单介绍一下SQL靶场的搭建,以及在搭建过程中遇到的一些问题。使用该软件搭建靶场相对简单,适合新手小白。当然,也可以在自己的虚拟机下进行搭建,相对来说就较为复杂。本章主要讲解使用Phpstudy进行SQL靶场搭建。 这里我推…...

Cocos Creator 帧动画播放组件制作详解
前言 Cocos Creator 是一个强大的游戏开发工具,提供了丰富的功能和组件,其中帧动画播放组件是游戏开发中常用的组件之一,通过帧动画播放组件可以实现角色动画、特效动画等效果。本文将详细介绍如何使用 Cocos Creator 制作帧动画播放组件&am…...

基于STM32控制的双轮自平衡小车的设计
基于STM32控制的双轮自平衡小车的设计是一项涉及电子、控制理论、机械设计和编程的综合工程。以下是关于该设计的一个概述,包括关键组件、控制策略和示例代码。 设计概述 1. 项目背景 自平衡小车作为一种智能控制系统,其设计和实现涉及到多个学科领域…...

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅
❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…...

HTML静态网页成品作业(HTML+CSS)——利物浦足球俱乐部介绍网页设计制作(5个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,共有5个页面。 二、作品演示 三、代码目录 四、网站代码 HTML部分代…...

mac 查看占用80端口的命令
在 Mac 上,如果你想查看哪个进程正在使用 80 端口,你可以使用 lsof 命令。这个命令非常强大,用于列出被进程打开或使用的文件信息。 打开你的终端,并输入以下命令: sudo lsof -i :80这里,-i :80 选项告诉…...

【Qt常用控件】—— 布局管理器
目录 前言 (一)垂直布局 (二)水平布局 (三)网格布局 (四)表单布局 (五)分组布局 (六)Spacer 总结 前言 之前使⽤Qt在界⾯上…...

模板中的右值引用(万能引用)、引用折叠与完美转发
模板中的右值引用(万能引用)、引用折叠与完美转发 文章目录 模板中的右值引用(万能引用)、引用折叠与完美转发一、万能引用与引用折叠1. 模板中的右值引用2. 自动类型推导(auto)与万能引用3. 引用折叠与万能引用4. lambda表达式捕…...

Nacos启动报错:[db-load-error]load jdbc.properties error
在学习Nacos中间件时,出现了一个错误,竟然启动报错!!!! 这个错误第一次遇见,当时我感觉大体就是--数据库连接方面的错误。 可是,对于初学者的我来说一脸懵啊??ÿ…...

5.23相关性分析
相关性分析是一件很自然而然的事情,在生活中和科学研究中,我们都可能会不由自主地关注两件或者多件事情之间的联系。比如性别和方向感有没有关系,有多大关系,辨别不同事物时如何说明特征的科学性(也就是该特征和事物的…...

使用 Sonatype Nexus Repository Manager 如何安装npm.md
1. 安装与启动 Nexus2. 登录 Nexus Web UI3. 创建 npm 仓库4. (可选)配置 npm 代理仓库5. 创建 npm 仓库组6. 配置 npm 客户端7. 测试和使用 Sonatype Nexus Repository Manager (通常简称 Nexus) 是一个强大的二进制管理系统,用于存储和管理…...

console如何连接远程机器上的java程序
启动参数 -Djava.rmi.server.hostname192.168.1.10 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port12345 -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.authenticatefalse2.jdk安装目录/bin下执行 go jconsole
高稳定数显芯片防干扰抗噪数码屏驱动高亮LED驱动IC-VK16K33A/AA 最大13×3的按键扫描
产品型号:VK16K33A/AA 产品品牌:永嘉微电/VINKA 封装形式:SOP28/SSOP28 原厂,工程服务,技术支持! 概述 VK16K33A/AA是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据…...

Redis离线安装(单机)
目录 1-环境准备1-1下载redis-4.0.11.tar.gz1-2gcc环境 2-上传解压3-编译安装(需要gcc环境)4-配置redis5-启动Redis6-开启防火墙(root)7-添加开机启动脚本8-设置权限9-设置开机启动10-测试redis服务11-检查是否安装成功12-创建redis命令软连接13-测试redis14-必要时设置防火墙 …...

[Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解
目录 1.不同路径1.题目链接2.算法原理详解3.代码实现 2.不同路径 II1.题目链接2.算法原理详解3.代码实现 3.珠宝的最高价值1.题目链接2.算法原理详解3.代码实现 1.不同路径 1.题目链接 不同路径 2.算法原理详解 思路: 确定状态表示 -> dp[i][j]的含义 走到dp[…...

ChatGPT移动应用收入在GPT-4o发布后迎来最大涨幅
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...