etcd备份还原方案,这种比较高级。

使用docker,自动化处理。

如果单节点备份,ETCD_ENDPOINTS一个即可。

如果多节点恢复,依次执行恢复脚本即可。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: backup
  namespace: kube-system
spec:
  # activeDeadlineSeconds: 100
  schedule: "0 0 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            # Same image as in /etc/kubernetes/manifests/etcd.yaml
            image: harbor.xxx.cn/3rd_part/k8s.gcr.io/etcd:3.3.10
            env:
            - name: ETCDCTL_API
              value: "3"
            - name: ETCD_ENDPOINTS
              value: "https://1.1:2379,https://1.2:2379,https://1.3:2379"
            command: ["/bin/sh"]
            args: ["-c", "etcdctl --endpoints=${ETCD_ENDPOINTS} --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key snapshot save /backup/etcd-ha-snapshot-$(date +%Y-%m-%d_%H:%M:%S_%Z).db"]
            volumeMounts:
            - mountPath: /etc/kubernetes/pki/etcd
              name: etcd-certs
              readOnly: true
            - mountPath: /backup
              name: backup
          restartPolicy: OnFailure
          nodeSelector:
            node-role.kubernetes.io/master: ""
          tolerations:
          - key: "node-role.kubernetes.io/master"
            effect: "NoSchedule"
          hostNetwork: true
          volumes:
          - name: etcd-certs
            hostPath:
              path: /etc/kubernetes/pki/etcd
              type: DirectoryOrCreate
          - name: backup
            hostPath:
              path: /tmp/etcd_backup/
              type: DirectoryOrCreate

主要参考url:

https://www.cnblogs.com/chenqionghe/p/10622859.html

相当于把c,etcd单节点数据恢复操作三次即可。但要注意,在作数据恢复之前,千万一定肯定要停掉整个etcd集群的服务!!!!切记切记切记!!!!并且要平时或是找一个类似环境演练,作到胆大心细!!!

如果已有备份数据,在只有etcd数据损坏的下,可根据以下步骤进行恢复。

1, 将/etc/kubernetes/manifests/ kube-apiserver.yaml文件里的镜像版本更改,停止kube-api server服务。

2, 将/etc/kubernetes/manifests/ etcd.yaml文件里的镜像版本更改,停止etcd server服务。

3, 运行如下命令,将损坏的数据文件移至其它地方。

mv /var/lib/etcd/* /tmp/

4, 运行以下命令,以临时docker运行的方式,将数据从备份里恢复到/var/lib/etcd/。

docker run --rm \

    -v '/tmp:/backup' \

    -v '/var/lib/etcd:/var/lib/etcd' \

    --env ETCDCTL_API=3 \

    'k8s.gcr.io/etcd-amd64:3.1.12' \

/bin/sh -c "etcdctl snapshot restore '/backup/etcd-snapshot-xxx_UTC.db' ; mv /default.etcd/member/ /var/lib/etcd/"

[上面的命令中,假定我们已将待还原数据放置于/tmp/目录下]

5, 改回/etc/kubernetes/manifests/kube-apiserver.yaml文件里的镜像版本,恢复etcd server服务。

6, 改回/etc/kubernetes/manifests/etcd.yaml文件里的镜像版本,恢复kube-api server服务。

k8s安装之etcd备份还原yaml的更多相关文章

  1. 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令

    1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...

  2. ubuntu docker inflxudb(安装 使用 备份 还原 以及python编码) telegraf Grafana

    inflxudb1.7.7 1.拉取最新的镜像 docker pull influxdb 2.运行实例: docker run -d --restart=always -p 8086:8086 -p ...

  3. 2、二进制安装K8s 之 部署ETCD集群

    二进制安装K8s 之 部署ETCD集群 一.下载安装cfssl,用于k8s证书签名 二进制包地址:https://pkg.cfssl.org/ 所需软件包: cfssl 1.6.0 cfssljson ...

  4. k8s安装常用软件的yaml文件

    参考网址:https://www.bejson.com (网站文件部分有坑,需要擦亮眼睛) nginx k8s版本:v1.20 apiVersion: apps/v1 kind: Deployment ...

  5. Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复

    目录 一.系统环境 二.前言 三.etcd数据库 3.1 概述 四.安装部署etcd单节点 4.1 环境介绍 4.2 配置节点的基本环境 4.3 安装部署etcd单节点 4.4 使用客户端访问etcd ...

  6. K8S集群etcd备份与恢复

    参考链接: K8S集群多master:Etcd v3备份与恢复 K8S集群单master:Kubernetes Etcd 数据备份与恢复 ETCD系列之一:简介:https://developer.a ...

  7. 用Ghost进行备份还原

    今天给大伙介绍一下怎么用Ghost给自己的系统进行备份和还原,在这里我用的是U盘启动盘(电脑店)里面的手动Ghost.   首先给大家介绍一下Ghost界面的一些相关选项的含义:(虽然难看但希望大伙们 ...

  8. 使用mysqldump进行mysql数据库备份还原

    mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...

  9. mysql innobackupex xtrabackup 大数据量 备份 还原

    大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1, ...

随机推荐

  1. [LeetCode] 251. Flatten 2D Vector 压平二维向量

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  2. C# .NET 私钥 RSA2,SHA256,签名

    私钥长度2048 -- /// <summary> /// 生成签名 /// </summary> /// <param name="str"> ...

  3. django:下拉框二级联动实现

    注意:只列举核心部分代码 前台模板: 第一级下拉菜单: <div class="col-sm-4"> <select data-placeholder=" ...

  4. (CSDN迁移) 输入一个链表,从尾到头打印链表每个节点的值

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. 思路1. 翻转链表,使用java自带的翻转函数或者从头到尾依次改变链表的节点指针 /** * public class ListNode { * ...

  5. 【mysql】开启远程连接

    设置root用户可以远程连接 use mysql; update user set host = '%' where user = 'root'; FLUSH PRIVILEGES;

  6. Java-Readable

    import java.nio.*; import java.util.*; import static net.mindview.util.Print.*; public class RandomW ...

  7. 数据结构-二叉树的遍历实现笔记C++

    二叉树的遍历实现,可以用递归的方法也可以用非递归的方法.非递归的方法可以借助栈(前序遍历,中序遍历,后序遍历),也可以借助队列(层次遍历).本次笔记只使用了递归的方法来进行前序遍历,中序遍历,后序遍历 ...

  8. 高仿linux下的ls -l命令——C语言实现

    主要用到的函数可以参考头文件,仅仅支持ls -l这功能,扩展就交给大家了0.0 相关测试图片: ​ ​ 话不多说,直接上码 #include <stdio.h> #include < ...

  9. Navicat12下载、激活工具、激活教程

    Navicat12的下载地址如下:链接: https://pan.baidu.com/s/11CHIWO74M4-P6UG0aWsF7Q 提取码: bayk 打开激活工具Navicat_Keygen_ ...

  10. jQuery无缝轮播图思路详解-唯品会

    效果图如上: 需求:图片自动轮播,鼠标移上停止播放,离开恢复播放,箭头切换图片. html代码 <!--轮播图大盒子开始--> <div class="wrap" ...