kubernetes集群异常恢复

kubernetes集群异常

POD级别异常

灾难级别影响程度遭遇频率处理难度依赖条件
✩✩✩✩✩pod避免单副本

程序具备就绪与健康检查条件并进行正确配置,能够对pod故障进行重启自愈.
不具备自愈条件的需要根据具体的业务场景和时间进行一下处理.
处理关键考虑因素: 1.健康检查是否正常 2.cpu、内存与磁盘指标是否达到配额限制 3.程序报错是否有明显异常 4.同宿主其他pod是否正常 5.同应用其他pod是否正常 6.pod所属应用最近时间线是否有更新

NODE级别异常

灾难级别影响程度遭遇频率处理难度依赖条件
✩✩✩✩✩✩✩node资源有冗余

处理node级别故障,优先禁止调度,防止影响范围增长.视故障场景,判断是否需要做当前业务pod驱逐.
需要判断是主机问题还是组件问题,之后针对故障点进行修复
处理关键考虑因素: 1.node节点状态 2.cpu、内存与磁盘指标是否达到配额限制 3.主机与组件是否有明显异常 4.是否有同时有相同症状node现象

MASTER级别异常

灾难级别影响程度遭遇频率处理难度依赖条件
✩✩✩✩✩✩✩✩✩✩✩master节点高可用

首先要确认影响范围,根据范围和影响程度做出控制范围.如果属于常规异常遭遇,根据具体场景进行处理.非常规异常,尽量先通过流量权重摘除故障master节点.如果是多master节点异常需要升级为集群级别异常.
处理关键考虑因素: 1.优先确认是单master异常还是多master异常 2.确认etcd集群状态是否正常 3.确认为主机问题还是组件问题 4.cpu、内存与磁盘指标是否达到配额限制 5.异常时间点前后是否有更新事件 6.重启组件或主机是否能恢复 7.是否存在其他源导致该故障

集群级别异常

灾难级别影响程度遭遇频率处理难度依赖条件
✩✩✩✩✩✩✩✩✩✩✩master节点高可用,etcd数据进行备份

优先查看etcd集群是否正常,同时做一份当前etcd数据备份. 关闭集群服务更新窗口. 进行故障详细确认.
处理关键考虑因素: 1.故障是主机问题还是组件问题 2.etcd集群是否健康 3.组件状态是否正常 4.是否可以通过紧急增资源缓解 5.是否可以限制故障源 6.如果集群变更,是否可以回滚

机房级别异常

灾难级别影响程度遭遇频率处理难度依赖条件
✩✩✩✩✩✩✩✩✩✩✩✩✩✩✩1.必须对集群的etcd数据有备份副本 2.具备集群恢复资源 3.用于复原的集群的ip地址划分与原集群一致 3.业务镜像可以正常使用 4.业务数据可以正常使用

此场景为只存留一份etcd数据的情况进行业务恢复.
两种方案: 1.使用备份的etcd进行集群恢复 2.使用备份的etcd数据导出对应业务能运行的资源(包括不限于 ds deploy svc ingress )进行重新部署

使用etcd数据进行集群恢复(不考虑镜像仓库与数据库因素)

实验集群信息

IP系统版本内核版本角色
192.168.100.200centos7.55.4master
192.168.100.201centos7.55.4node,ingress
192.168.100.202centos7.55.4node

原始集群信息

数据备份

export ETCDCTL_API=3 && etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.pem --cert=/etc/kubernetes/pki/etcd/etcd.pem --key=/etc/kubernetes/pki/etcd/etcd-key.pem  snapshot save snapshot20220926.db

重置集群机器模拟全新机器场景

机器初始化
master节点安装ansible
yum install ansible -y
# 并需要对相关集群节点做秘钥互通
[host]
192.168.100.200
192.168.100.201
192.168.100.202
进行节点初始化
curl -s http://ip:port/soft/shell/init/init_vm.sh |sh 

集群初始化

拉取集群自动化安装包
# 在master安装节点操作即可
wget -c  http://ip:port/install-20220929.tar.gz
# install 需在/root路径下
# hosts 
[master]
192.168.100.200
[node]
192.168.100.201
192.168.100.202
[elb]
[haproxy]
[etcd]
192.168.100.200
[registry]
192.168.100.200
[trust]
# install.sh
#!/bin/bashecho "----------------------开始安装ansible-------------------------------"
install_dir=$(cd "$(dirname "$0")";pwd)
#cd /root/install/package/ansible && rpm -ivh PyYAML*rpm libyaml*rpm python-babel*rpm python-backports*rpm python-backports-ssl_match_hostname*rpm python-cffi*rpm python-enum34*rpm python-httplib2*rpm python-idna*rpm python-ipaddress*rpm python-jinja2*rpm python-markupsafe*rpm python-paramiko*rpm python-passlib*rpm python-ply*rpm python-pycparser*rpm python-setuptools*rpm python-six*rpm python2-cryptography*rpm python2-jmespath*rpm python2-pyasn1*rpm sshpass*rpm --nodeps --force
#cd /root/install/package/ansible && rpm -ivh ansible-2.4.2.0-2.el7.noarch.rpm
ver=$(ansible --version)
echo "---------------------ansible已安装,版本为$ver----------------------"
ansible-playbook -i /root/install/hosts /root/install/playbook/mkdir.yml
core=$(python /root/install/script/file.py)
echo $core
if [ $core != 200 ]
thenecho $coreexit
fi
echo "-------------------开始初始化服务器---------------------------------"
cp /root/install/package/cfssl/* /usr/bin/
ansible-playbook -i /root/install/hosts /root/install/playbook/env_init.yml
echo "--------------------开始修改主机名称------------------------------------"
cd /root/install/script && python name.py
echo "--------------------开始安装etcd集群------------------------------------"
cd /root/install/script && python etcd.py
echo "--------------------开始安装apiserver------------------------------------"
#python /root/install/script/haproxy.py
sh /root/install/script/apiserver.sh
echo "--------------------开始配置kubectl------------------------------------"
python /root/install/script/kubectl.py
echo "--------------------开始安装controller------------------------------------"
python /root/install/script/controller.py
echo "--------------------开始安装scheduler------------------------------------"
python /root/install/script/scheduler.py
python /root/install/script/registry.py
echo "--------------------开始安装kubelet------------------------------------"
python /root/install/script/kubelet.py
echo "--------------------开始安装kube-proxy------------------------------------"
python /root/install/script/proxy.py
python /root/install/script/calico.py

数据恢复

暂停apiserver

systemctl stop kube-apiserver.service

暂停etcd

systemctl stop etcd

备份当前etcd数据目录
恢复之前版本数据至数据目录

etcdctl snapshot restore snapshot-20220926.db --data-dir=“/data/etcd/default.etcd”

启动etcd并验证服务可用性
启动apiserver并验证服务可用性
重建dns
重建calico
重建ingress

http://ip:port/ingress-nginx.yaml

恢复结果验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:zip命令介绍

简介 zip命令可以用来解压缩文件&#xff0c;或者对文件进行打包操作。zip是个使用广泛的压缩程序&#xff0c;文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 语法 zip [选项] [参数] 选项 -A&#xff1a;调整可执行的自动解压缩文件&#xff1b; -b<工作目录&g…

React 集成三方登录按钮样式的插件库

按钮不提供任何社交逻辑。 效果如下&#xff1a; 原地址&#xff1a;https://www.npmjs.com/package/react-social-login-buttons 时小记&#xff0c;终有成。

Java-顺序结构

顺序结构 Java的基本结构就是顺序结构&#xff0c;除非特别指明&#xff0c;否则按照顺序一句一句执行顺序结构是最简单的算法结构语句与语句之间&#xff0c;框与框之间是按从上到下的顺序进行的&#xff0c;它是由若干个依次执行的处理步骤组成的&#xff0c;它是任何一个算…

【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;C❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、拷贝构造函数 1、概念 2、特征 二、赋值运算符重载 1、运算符重载 2、赋值运算符重载 3、前置…

G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板

本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。 本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试。 MYC-YT113i核心板及开发板 真正的国产核心板&#xff0c;100%国产物料认证 国产T113-i处理器配备2*Cortex-A71.2GHz &#xff0c;RISC-V 外置…

SpringBoot启动流程分析之准备应用上下文refreshContext()

文章目录 源码入口1、准备刷新1.1、子类prepareRefresh()方法1.2 父类prepareRefresh&#xff08;&#xff09;方法 2、通知子类刷新内部bean工厂3、准备bean工厂4、允许上下文子类对bean工厂进行后置处理 源码入口 org.springframework.boot.SpringApplication#run(java.lang…

若依vue中关于字典的使用

文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label&#xff0c;类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…

Zookeeper集群+消息队列Kafka

一. Zookeeper 集群的相关知识 1. zookeeper的概念 ZooKeeper 是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的…

C++修炼之路之list模拟实现--C++中的双向循环链表

目录 引言 一&#xff1a;STL源代码中关于list的成员变量的介绍 二&#xff1a;模拟实现list 1.基本结构 2.普通迭代器 const迭代器的结合 3.构造拷贝构造析构赋值重载 清空 4.inserterase头尾插入删除 5.打印不同数据类型的数据《使用模板加容器来完成》 三&#xf…

python之gmsh划分网格

Gmsh&#xff08;Geometry Modeling and Meshing Suite&#xff09;是一个开源的三维有限元网格生成器&#xff0c;它集成了内置的CAD引擎和后处理器。Gmsh的设计目标是提供一个快速、轻量级且用户友好的网格工具&#xff0c;同时具备参数化输入和高级可视化能力。Gmsh围绕几何…

IOS H5页面中 HLS视频无法正常播放,使用hls.插件

IOS H5页面中 HLS视频无法正常播放&#xff0c;使用hls.插件 HLS.js依靠 HTML5 视频和 MediaSource Extensions 进行播放。 所有 iPhone 浏览器 &#xff08;iOS&#xff09; 都没有可用的 MediaSourceExtension&#xff0c;因此Hls.js将不起作用。如果您在 iPhone 上检查 Hl…

数据库-Redis(15)

目录 71.Redis哨兵是如何监控Redis集群的? 72.Redis哨兵如何判断主库已经下线了呢?

数据治理项目——深铁集团数据治理规划

目录 一、前言 二、数据治理内容与主要措施 2.1 实施背景 2.2 主要举措 2.2.1 制定数据战略目标 2.2.2 绘制数据治理蓝图 2.2.3 绘制数据治理制度 2.2.4 梳理数据资产目录 三、 应用效果 3.1 数据资产可视化管理 3.2 数据标准治理 3.3 集团大数据平台优化建设 一、…

Windows10为Git Bash添加文件传输命令rsync(详细图文配置)

文章目录 1. 安装git bash2. 下载所需要的4个包3. 下载解压包的软件4. 复制每个包下面的usr到git安装目录下4.1 所遇问题4.2 解决 5. 安装完成6. 需要注意 Windows上要使用 rsync命令上传或下载文件&#xff0c;需要使用git bash&#xff0c;git bash没有rsync&#xff0c;需要…

自动化测试原理,怎么理解?【UI自动化】

首先&#xff0c;UI自动化是一种通过自动化工具或框架模拟用户与用户界面交互的测试技术。在软件开发过程中&#xff0c;这种技术对于确保用户界面的正确性和稳定性起着至关重要的作用。 具体来说&#xff0c;UI自动化的原理主要基于以下三个核心环节&#xff1a; 界面定位&am…

zabbix监控服务

一、监控软件的作用 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果和网站的健康状态 利用一个优秀的监控软件&#xff0c;我们可以&#xff1a; 对系统不间断实时监控实时反馈系统当前状态保…

游戏实践:扫雷

一.游戏介绍 虽然很多人玩过这个游戏&#xff0c;但还是介绍一下。在下面的格子里&#xff0c;埋的有10颗雷&#xff0c;我们通过鼠标点击的方式&#xff0c;点出你认为不是雷的地方&#xff0c;等到把所有没有雷的格子点完之后&#xff0c;及视为游戏胜利。 上面的数字的意思…

【前端CSS基础2(CSS基本选择器和复合选择器)】

前端CSS基础2&#xff08;CSS基本选择器和复合选择器&#xff09; HTML和HTML的区别和联系HTML元素和CSS属性CSS基本选择器ID选择器类选择器标签选择器群组选择器通配选择器层次选择器属性选择器伪类选择器伪元素选择器 CSS复合选择器交集选择器并集选择器后代选择器子元素选择…

华院计算参编《金融业人工智能平台技术要求》标准

随着人工智能技术的迅猛发展&#xff0c;金融机构正在从业务场景化向企业智能化演进&#xff0c;金融业对智能化的需求愈加迫切。为引导产业有序发展、规范行业自律、加快金融行业智能化转型&#xff0c;中国信通院依托中国人工智能产业发展联盟&#xff08;AIIA&#xff09;及…

auto的工作原理

类型推导&#xff1a; 当使用 auto 关键字声明变量时&#xff0c;编译器会根据变量初始化的表达式推导出其类型。编译器会分析初始化表达式&#xff0c;并根据表达式的类型来确定变量的类型。 类型保留&#xff1a; 编译器在编译时将 auto 关键字替换为实际的类型&#xff0c;…