[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.mfbz.cn/a/772951.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年中国网络安全市场全景图 -百度下载

是自2018年开始,数说安全发布的第七版全景图。 企业数智化转型加速已经促使网络安全成为全社会关注的焦点,在网络安全边界不断扩大,新理念、新产品、新技术不断融合发展的进程中,数说安全始终秉承科学的方法论,以遵循…

Rhino 犀牛三维建模工具下载安装,Rhino 适用于机械设计广泛领域

Rhinoceros,这款软件小巧而强大,无论是机械设计、科学工业还是三维动画等多元化领域,它都能展现出其惊人的建模能力。 Rhinoceros所包含的NURBS建模功能,堪称业界翘楚。NURBS,即非均匀有理B样条,是计算机图…

怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权

题意: oobabooga-textgen-web-ui how to get authorization to view model list from port 5000 via the oobas api-key in python 怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权 问题背景: I wish to extract an…

抬头显示器HUD原理及特性

HUD基本原理 抬头数字显示仪(Head Up Display),又叫平视显示系统,它的作用,就是把时速、导 航等重要的行车信息,投影到驾驶员前风挡玻璃上,让驾驶员尽量做到不低头、不转头 就能看行车信息。 HUD成像为离轴三反的过程&…

代码随想录算法训练营第2天|LeetCode977,209,59

977.有序数组平方 题目链接: 977. 有序数组的平方 - 力扣(LeetCode) 文章讲解:代码随想录 视频讲解: 双指针法经典题目 | LeetCode:977.有序数组的平方_哔哩哔哩_bilibili 第一想法 暴力算法肯定是先将元素…

关于软件本地化,您应该了解什么?

软件本地化是调整软件应用程序以满足目标市场的语言、文化和技术要求的过程。它不仅仅涉及翻译用户界面;它包含一系列活动,以确保软件在目标语言环境中可用且相关。以下是您应该了解的有关软件本地化的一些关键方面: 了解范围 软件本地化是…

【软件测试】之黑盒测试用例的设计

🏀🏀🏀来都来了,不妨点个关注! 🎧🎧🎧博客主页:欢迎各位大佬! 文章目录 1.测试用例的概念2.测试用例的好处3. 黑盒测试用例的设计3.1 黑盒测试的概念3.2 基于需求进行测…

暗潮短视频:成都柏煜文化传媒有限公司

暗潮短视频:涌动的新媒体力量 在数字化时代的浪潮中,短视频以其独特的魅力和无限的潜力,迅速成为新媒体领域的一股强大力量。而在这片繁荣的短视频领域中,成都柏煜文化传媒有限公司“暗潮短视频”以其独特的定位和深邃的内容&…

论文浅尝 | 从最少到最多的提示可在大型语言模型中实现复杂的推理

笔记整理:王泽元,浙江大学博士 链接:https://openreview.net/forum?idWZH7099tgfM 1. 动机 尽管深度学习已经取得了巨大的成功,但它与人类智慧仍然存在一些明显差距。这些差距包括以下几个方面:1)学习新任…

损失函数篇

损失函数 1、边界框损失函数/回归损失函数bbox_loss 2、分类损失函数cls_loss 3、置信度损失函数obj_loss YOLOv8损失函数 1、概述 通过YOLOv8-训练流程-正负样本分配的介绍,我们可以知道,经过预处理与筛选的过程得到最终的训练数据: a…

11 UDP的可靠传输协议QUIC

1.如何做到可靠性传输 2.UDP与TCP,我们如何选择 3.UDP如何可靠,KCP协议在哪些方面有优势 4.KCP协议精讲(重点讲解 5.OUIC时代是否已经到来 UDP如何做到可靠传输 ACK机制重传机制 重传策略序号机制(后发的包可能先到) 3 2 1-> 2 3 1重排机制 2 3 1-> 3 2 1窗口机制 流…

谷粒商城笔记-03-分布式基础概念

文章目录 一,微服务二,集群、分布式三,远程调用四,负载均衡五,服务注册、服务发现、注册中心六,配置中心七,服务熔断、服务降级1,服务熔断2,服务降级3,区别 八…

Spring框架的学习前言

1.注意事项 1.在接下来的学习中我们会将jdk的版本升级到17。 2.引入maven仓库用来存储依赖 3.在后面的javaSpring框架中要第一个项目的创建要选javaweb和lombook这两个依赖 2.Maven的主要功能 (1)maven的主要功能是引入依赖和管理依赖,在…

基于SpringCloud的分布式架构网上商城

基于SpringCloud的分布式架构网上商城的主要使用者管理员功能:首页、个人中心、用户管理、商品信息管理、商品分类管理、系统管理、订单管理等功能。 💕💕作者:Weirdo 💕💕个人简介:擅长Java、C…

【SkiaSharp绘图15】SKPath属性详解:边界、填充、凹凸、类型判断、坐标、路径类型

文章目录 SKPath 构造函数SKPath 属性Bounds 边界(宽边界)TightBounds紧边界FillType填充方式IsConcave 是否凹/ IsConvex 是否凸IsEmpty是否为空IsLine是否为线段IsRect是否为矩形IsOval是否为椭圆或圆IsRoundRect是否为圆角矩形Item[] 获取路径的坐标LastPoint最后点的坐标Po…

基于香橙派AIpro搭建的车牌识别系统

引言 本人正有学习嵌入式的想法,正好碰到机会让我搞了块OrangePi AIpro(香橙派AIpro)开发板,正合我意,直接上手进行体验,顺便给大家分享下我的实践过程。 开发板介绍与初次启动 OrangePiAIPro开发板是香…

WPF UI InkCanvas 导师演示画板 演示 笔记 画笔 识别

<Grid><InkCanvas Name"inkCanvas"/><Button Content"识别" Click"Button_Click" VerticalAlignment"Bottom"/></Grid> 引用内库 Ink ink new Ink(); private void Button_Click(object sender, RoutedEvent…

基于STM32F103C8T6的同步电机驱动-CubeMX配置与IQmath调用

基于STM32F103C8T6的同步电机驱动-CubeMX配置与IQmath调用 一、功能描述: 上位机通过CAN总线实现对电机的运动控制,主要包含三种模式:位置模式、速度模式以及力矩模式。驱动器硬件核心为STM32F103C8T6,带相电压采集电路以及母线电压采集电路。其中供电电压12V。 PWM中心对…

Android-卷积神经网络(Convolutional Neural Network, CNN)

一个复杂且在Android开发中常见的算法是图像处理中的卷积神经网络(Convolutional Neural Network, CNN)。CNN被广泛用于图像识别、物体检测和图像分割等任务,其复杂性在于需要处理大量的图像数据、复杂的神经网络结构和高效的计算。 1. 卷积操作(Convolution) 数学原理:…

企业级监控系统Zabbix

文章目录 Zabbix介绍Zabbix架构Zabbix serverZabbix agentZabbix proxy Zabbix Server的安装Zabbix Agent的安装监控主机流程zabbix_get自定义模板和监控项实战用户登录数监控1.指定监控项命令2.重启Agent服务3.在Server上创建监控项4.测试监控项5.查看监控项图形 触发器定义触…