[k8s生产系列]:k8s集群故障恢复,etcd数据不一致,kubernetes集群异常

文章目录

  • 摘要
  • 1 背景说明
  • 2 故障排查
    • 2.1 查询docker与kubelet状态
    • 2.2 查看kubelet服务日志
    • 2.3 重启docker与kubelet服务
      • 2.3.1 首先kubelet启动起来了,但是报错master节点找不到
      • 2.3.2 查询kubernetes集群服务,发现etcd与kube-apiserver均启动异常
    • 2.4 etcd与kube-apiserver
      • 2.4.1 etcd简介
      • 2.4.2 kube-apiserver简介
      • 2.4.3 关系
  • 3 解决方案
  • 4 解决实践
    • 4.1 查看etcd本地持久化数据目录地址
    • 4.2 查看当前节点的数据存放地址
  • 4.3 实景
  • 5 总结
  • 6 参考文献

摘要

摘要:kubernetes,etcd,数据恢复,kube-apiserver

1 背景说明

二级生产环境(灰度环境),kubernetes测试环境,采用1master+2node架构,某次,公司突然断电,导致服务器突然宕机,来电后,重启服务器,在任何节点执行命令,都报如下错误:

[root@master kube-apiserver]# kubectl get ns
The connection to the server 192.168.150.100:6443 was refused - did you specify the right host or port?

2 故障排查

2.1 查询docker与kubelet状态

systemctl status docker #如下docker运行正常

image.png

systemctl status kubelet #如下kubelet一直在重启中

image.png

2.2 查看kubelet服务日志

journalctl -u kubelet #查询到日志如下,不能连接到docker
7月 04 10:15:14 master kubelet[687]: E0704 10:15:14.863276     687 reflector.go:153] k8s.io/kubernetes/pkg/kubelet/kubelet.go:458: Failed to list *v1.Node: Get https://192
7月 04 10:15:14 master kubelet[687]: I0704 10:15:14.864218     687 client.go:75] Connecting to docker on unix:///var/run/docker.sock
7月 04 10:15:14 master kubelet[687]: I0704 10:15:14.864271     687 client.go:104] Start docker client with request timeout=2m0s
7月 04 10:15:14 master kubelet[687]: F0704 10:15:14.865651     687 server.go:273] failed to run Kubelet: failed to create kubelet: failed to get docker version: Cannot con
7月 04 10:15:14 master systemd[1]: kubelet.service: main process exited, code=exited, status=255/n/a

2.3 重启docker与kubelet服务

2.3.1 首先kubelet启动起来了,但是报错master节点找不到

image.png

2.3.2 查询kubernetes集群服务,发现etcd与kube-apiserver均启动异常

docker ps -a| grep kube-apiserver

image.png

docker ps -a| grep etcd

image.png

2.4 etcd与kube-apiserver

2.4.1 etcd简介

kubernetes集群中担任的角色:etcd是kubernetes集群数据存储后端,用于存储所有集群数据,l例如:集群状态、配置信息、服务发现信息等。

  • 数据存储:所有集群数据,例如:pod状态、节点信息、service信息都被存储于etcd中。
  • 一致性保证:etcd通过Raft协议保证数据强一致性和高可用性。

2.4.2 kube-apiserver简介

kubernetes集群中担任角色:kube-apiserver是kubernetes的API服务端点,提供整个系统的API入口。

  • 功能:kube-apiserver接收来自kubectl(kubernetes的命令行工具)或其他kubernetes组件的API请求,随后,通过认证、授权和验证后,讲这些请求转发给ectd读取或更新数据
  • 数据操作:所有kubernetes资源(如pod、service、deployment等)的操作都通过kube-apiserver进行,通过kube-apiserver将操作映射到etcd中相应数据存储位置。

2.4.3 关系

etcd与kube-apiserver关系:
kube-apiserver作为集群的api服务器,通过etcd来持久化存储和管理整个集群状态和配置信息。那就显然,不出意外,master节点的etcd数据损坏了,为啥这么说呢

  • etcd 成员(Member):在 etcd 集群中,每个 etcd 实例被称为一个“成员”(Member)。这些成员共同协作,通过 etcd的Raft 一致性算法来确保数据的强一致性和高可用性。

3 解决方案

因此,经2.4的分析,首先打开etcd的日志存放地址(默认保存地址:/var/log/pods/kube-system_etcd XXX XXX),查看日志发现报错信息,查阅官方资料这种情况是由于 etcd 数据损坏,有两种解决方式。

  • 方案1:在故障节点上停止etcd服务并删除损坏的 etcd 数据,现在etcd服务本来就没有启动,删除前先备份数据,最后启动etcd服务。
  • 方案2:重置kubernetes集群(代价太大,放弃)。

image.png

4 解决实践

4.1 查看etcd本地持久化数据目录地址

cat /etc/kubernetes/manifests/etcd.yaml  #etcd配置yaml默认存放路径

image.png

4.2 查看当前节点的数据存放地址

 find ./ -type d -name member

4.3 实景

image.png
如下,kubernetes集群成功拉起
在这里插入图片描述

5 总结

首先,在kubernetes中存在etcd集群,该集群由多个节点组成,其次,kubernetes集群通过 kubectl和kube-apiserver与etcd集群进行交互,在此次事故中,由于master节点的etcd数据损坏,导致etcd集群数据无法做到一致性,进而导致kubernetes集群不可访问,当把master节点的损坏的etcd数据移除后,kubernetes会自动同步etcd集群中其他节点数据,使得集群数据一直,最终故障修复成功。

6 参考文献

[1] etcd和apiserver无法正常启动
[2] K8S篇之etcd数据备份与恢复

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

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

相关文章

【Pyhton】读取寄存器数据到MySQL数据库

目录 步骤 modsim32软件配置 Navicat for MySQL 代码实现 步骤 安装必要的库:确保安装了pymodbus和pymysql。 配置Modbus连接:设置Modbus从站的IP地址、端口(对于TCP)或串行通信参数(对于RTU)。 连接M…

公用对象池

什么是对象池? 对象池顾名思义就是存放对象的池子,主要是为了重复利用对象。将不用的对象扔进池子里,需要用的时候再从池子中取出来。这样的一套机制我们称为对象池。 为什么用对象池? 其实从定义我们就可以看出来,…

算法金 | 我最常用的两个数据可视化软件,强烈推荐

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 预警:今天文章的描述可能会让你有点别扭;如感到不适,请及时停止 在我行…

大数据面试题之数据库(1)

目录 数据库中的事务是什么,MySQL中是怎么实现的 MySQL事务的特性? 数据库事务的隔离级别?解决了什么问题?默认事务隔离级别? 脏读,幻读,不可重复读的定义 MySQL怎么实现可重复读? 数据库第三范式和第四范式区别? MySQL的…

MacOS 安装 mtr 网络检测工具

Install sudo brew install mtr sudo chown root $(which mtr) sudo chmod us $(which mtr) sudo chown root $(which mtr-packet) sudo chmod us $(which mtr-packet) Test mtr google.com

C# WPF 3D 数据孪生 系列六

数字孪生应用开发 应用开发中的布局需求 Grid基本使用 WPF 3D绘图 点云 系列五-CSDN博客 WPF UI 3D 多轴 机械臂 stl 模型UI交互-CSDN博客 WPF UI 3D 基本概念 点线三角面 相机对象 材质对象与贴图 3D地球 光源 变形处理 动作交互 辅助交互插件 系列三-CSDN博客 数字孪生 介…

015-GeoGebra基础篇-定点旋转物体、动态显示数值并显示运动轨迹

这可能是我能想到的最大概率可以被你搜索到的标题了,容我先喘口气~ 目录 一、成品展示二、涉及内容三、做图步骤(1)绘制三角形t(2)建立定点D(3)制作角度滑动条(4)图形绕点…

刷题Day42|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 思路:最简单的动态规划思路。递推公式是dp[j] Math.max(dp[j - 1], dp[j - 2] nums[j]),要么打劫第j个房子(下一个打劫的房子不能和j相邻),要…

嵌入式Linux系统编程 — 6.7 实时信号

目录 1 什么是实时信号 2 sigqueue函数 3 sigpending()函数 1 什么是实时信号 等待信号集只是一个掩码,它并不追踪信号的发生次数。这意味着,如果相同的信号在被阻塞的状态下多次产生,它只会在信号集中被记录一次,并且在信号集…

CG-01D 室外露点变送器

产品概述 本系列产品是采用一款高度集成的温湿度式露点传感器芯片,芯片全量程标定的数字输出。 它采用CMOSens技术,确保产品具有较高的可靠性与优良的长期稳定性。传感器包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件&#xff…

Windows 下用MSYS2 环境为RP2040 编译MicroPython 固件

就是想试试看MSYS2 能兼容到什么地步。自己做了个RP2040 板子,用了4MB 的Flash,默认的Micropython 固件是2MB 的,所以只能自己编译固件。 编译环境 MSYS2 的安装方法、基本配置什么的我就不管了,到处都有文章介绍这个。只提一点…

做一个自动校正英文拼写错误的程序 使用c++

概述一个自动校正英文拼写错误的程序的基本的方法,并提供一个简化的C实现。这个方法基于编辑距离(Levenshtein距离)和一个预定义的词典。 以下是实现这样一个程序的步骤: 创建一个词典(单词列表)计算编辑…

mac视频压缩简单办法,mac如何把视频压缩到指定大小内存

在数字时代,视频已成为我们日常生活和工作的重要交流工具。然而,视频文件体积庞大,给存储和分享带来了不少困扰。本文将为你揭秘视频压缩的秘密,让你轻松减小视频文件体积,提升分享效率! 方法一下载文件压缩…

MySQL 8.4.1 LTS 容器镜像可以下载了

MySQL 8.4.1 LTS 版本和 9.0 是同一天上线的,都是7月1日,只是大家都聚焦在了 9.0 而没注意到 8.4.1,关于 9.0 的内容请戳这里: MySQL 9.0.0 新鲜出炉!支持向量类型 MySQL 9.0 的VECTOR文档更新 MySQL 8.4.1 变更 MySQL…

Vue3实现过渡动画

认识动画 在开发中,我们想要给一个组件的显示和消失添加某种过渡动画,可以很好的增加用户体验: React框架本身并没有提供任何动画相关的API,所以在React中使用过渡动画我们需要使用一个第三方库 react-transition-group&#xf…

开发者工具攻略:前端测试的极简指南

前言 许多人存在一个常见的误区,认为测试只是测试工程师的工作。实际上,测试是整个开发团队的责任,每个人都应该参与到测试过程中。 在这篇博客我尽量通俗一点地讲讲我们前端开发过程中,该如何去测试 浏览器开发者工具简介 开…

【高中数学/极值问题】一条长为L的绳子,一面靠墙,另外三边组成矩形,问此矩形最大面积能是多少?

【问题】 一条长为L的绳子,一面靠墙,另外三边组成矩形,问此矩形最大面积能是多少? 【示意图】 【解析式】 设垂直于墙的两边长为x,则墙对边长为L-2x,围成的矩形面积Sx(L-2x) 写成标准的解析式为yx(L-2…

本地Windows电脑 连接 Windows 服务器

Windows电脑 连接 Windows 服务器 方式1:直接搜索 在电脑的搜索栏,输入“远程桌面连接” 可以选择点击 “打开” 或者直接按 回车键 “Enter”,打开 远程桌面连接 方式2:运行框打开服务器连接 同时按:Windows徽标键…

数字图像处理、机器视觉(计算机视觉)、计算图形学概念

数字图像处理(Digital Image Processing)--又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性,达到人们所要求的预期结果。从输入到输出来看,数字图…

java+springboot+Mysql“友书”综合书籍平台系统24489-计算机毕业设计项目选题推荐(附源码)

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,“友书”综合书籍平台当然也不能排除在外。“友书”综合书籍平台系统是以实际运用为开发背景,运用软件工程原…