K8S集群etcd备份与恢复
参考链接:
K8S集群多master:Etcd v3备份与恢复
K8S集群单master:Kubernetes Etcd 数据备份与恢复
ETCD系列之一:简介:https://developer.aliyun.com/article/11035
集群节点详情
# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master1 Ready master 20h v1.18.6 10.129.7.222 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.9
master2 Ready master 19h v1.18.6 10.129.7.223 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.9
master3 Ready master 19h v1.18.6 10.129.7.224 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.9
node1 Ready <none> 19h v1.18.6 10.129.7.225 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.9
node2 Ready <none> 19h v1.18.6 10.129.7.226 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.9
node3 Ready <none> 19h v1.18.6 10.129.7.227 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.9
安装 etcdctl 命令
etcdctl
的二进制文件可以在 github.com/coreos/etcd/releases 选择对应的版本下载,例如可以执行以下install_etcdctl.sh
的脚本,修改其中的版本信息。#!/bin/bash
ETCD_VER=v3.3.4
ETCD_DIR=etcd-download
DOWNLOAD_URL=https://github.com/coreos/etcd/releases/download # Download
mkdir ${ETCD_DIR}
cd ${ETCD_DIR}
wget ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar -xzvf etcd-${ETCD_VER}-linux-amd64.tar.gz # install
cd etcd-${ETCD_VER}-linux-amd64
cp etcdctl /usr/local/bin/
export ETCDCTL_API=3
1、备份master1
mkdir -pv /backup //创建目录
etcdctl --endpoints=https://10.129.7.222:2379 \
--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-snapshot.db
2、拷贝 ETCD 备份快照( 从 master1 机器上拷贝备份 )
scp /backup/etcd-snapshot.db root@master2:/backup/
scp /backup/etcd-snapshot.db root@master3:/backup/
3、查看 kube-apiserver、etcd 镜像
docker ps|grep etcd && docker ps|grep kube-apiserver
4、移除且备份 /etc/kubernetes/manifests 目录
mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak
5、备份现有 Etcd 数据
mv /var/lib/etcd /var/lib/etcd.bak
重复第4步骤,查看 kube-apiserver、etcd 镜像是否停止
6、恢复备份
(1) 在master1上执行
etcdctl snapshot restore /backup/etcd-snapshot.db \
--name etcd-0 \
--initial-cluster "etcd-0=https://10.129.7.222:2380,etcd-1=https://10.129.7.223:2380,etcd-2=https://10.129.7.224:2380" \
--initial-cluster-token etcd-cluster \
--initial-advertise-peer-urls https://10.129.7.222:2380 \
--data-dir=/var/lib/etcd/
(2) 在master2上执行
etcdctl snapshot restore /backup/etcd-snapshot.db \
--name etcd-1 \
--initial-cluster "etcd-0=https://10.129.7.222:2380,etcd-1=https://10.129.7.223:2380,etcd-2=https://10.129.7.224:2380" \
--initial-cluster-token etcd-cluster \
--initial-advertise-peer-urls https://10.129.7.223:2380 \
--data-dir=/var/lib/etcd/
(3) 在master3上执行
etcdctl snapshot restore /backup/etcd-snapshot.db \
--name etcd-2 \
--initial-cluster "etcd-0=https://10.129.7.222:2380,etcd-1=https://10.129.7.223:2380,etcd-2=https://10.129.7.224:2380" \
--initial-cluster-token etcd-cluster \
--initial-advertise-peer-urls https://10.129.7.224:2380 \
--data-dir=/var/lib/etcd/
7、恢复 Kube-Apiserver 与 Etcd 镜像
mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests
8、检查集群
kubectl get nodes
etcdctl --endpoints=https://10.129.7.222:2379 \
--endpoints=https://10.129.7.223:2379 \
--endpoints=https://10.129.7.224:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--key=/etc/kubernetes/pki/etcd/healthcheck-client.key \
--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
endpoint health
K8S集群etcd备份与恢复的更多相关文章
- Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka
一.概述 线上有一套k8s集群,部署了很多应用.现在需要对一些基础服务做一些常规检测,比如: 系统时间,要求:k8s的每一个节点的时间,差值上下不超过2秒 k8s版本,要求:k8s的每一个节点的版本必 ...
- k8s 集群中的etcd故障解决
一次在k8s集群中创建实例发现etcd集群状态出现连接失败状况,导致创建实例失败.于是排查了一下原因. 问题来源 下面是etcd集群健康状态: [root@docker01 ~]# cd /opt/k ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- 基于k8s集群部署prometheus监控etcd
目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...
- 万级K8s集群背后etcd稳定性及性能优化实践
背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...
- k8s集群中遇到etcd集群故障的排查思路
一次在k8s集群中创建实例发现etcd集群状态出现连接失败状况,导致创建实例失败.于是排查了一下原因. 问题来源 下面是etcd集群健康状态: 1 2 3 4 5 6 7 8 9 10 11 [roo ...
- 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令
1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...
- 万级K8s集群背后 etcd 稳定性及性能优化实践
1背景与挑战随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...
- k8s集群Canal的网络控制 原
1 简介 直接上干货 public class DispatcherServlet extends HttpServlet { private Properties contextConfigProp ...
随机推荐
- 1.7.1- HTML表格table
存在即是合理的,表格的是一种常用的标签,不是用来布局,常见是用处理 适合用表格table的地方: 创建表格:
- RF-字符串拼接
贪婪截取(abcABC123edf123,左边截取abc,右边截取123,得到ABC123edf) 截取字符串 [Arguments] ${string} ${left} ${right} ${str ...
- C#-DUP
void jianting() { int port = 8888; UdpClient udpclient = new UdpClient(port); IPEndPoint ipendpoint ...
- ADB调试工具的使用
ADB(Android Debug Bridge)安卓调试桥,ADB工具是可以方便调试安卓应用的工具. ADB的安装 下载ADB工具,解压, 将ADB工具的目录加入系统环境变量中,打开CMD窗口,输入 ...
- Android Dex分包之旅
http://yydcdut.com/2016/03/20/split-dex/ http://blog.zongwu233.com/the-touble-of-multidex http://tec ...
- 学习Canvas绘图与动画基础 为多边形着色(三)
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...
- <JVM中篇:字节码与类的加载篇>04-再谈类的加载器
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- [花式栈溢出]栈上的 partial overwrite
[花式栈溢出]栈上的 partial overwrite 希望能在这几天对Pwn中的栈上的各种利用和其他一些较小的分支做一个收尾,以便全力投入学习堆的相关知识.初步计划是对照ctf-wiki查缺补漏. ...
- 解决@Autowired警告
在使用spring框架中的依赖注入注解@Autowired时,idea报了一个警告 被警告的代码如下: @Autowired UserDao userDao; 警告提示信息:Field injecti ...
- ES常用查询语法
1.query string search GET /index/type/_search?q=name:zhangsan&sort=age:desc 2.query DSL(Domain S ...