工作-k8s问题处理篇

前言:公司这边为集团,所以项目较多,我目前总负责的项目架构有十六个,其中还有海外项目,不过底下也有一定的细分,同事解决不了的问题会升级到我这,只k8s容器平台常用的就有三种,一种是技术中心部门研发的二开版,一种是国产信创化推广的xc容器平台,还有一种就是开源的-红帽公司研发的OpenShift (OKD), 下面容器图片我只展示OKD,另外两种就不分享了,毕竟安全第一嘛!接下来我挑几个工作中遇到的比较有印象k8s方面的问题分享下处理方法和心得。



一、k8s集群以及云监控平台离线部署
公司这边的k8s集群有庞大的,也有微小集群,根据具体的业务需求来,这里我讲的是为某个项目拿三台云服务器,单独部署k8s集群后部署运行云监控平台,因为这个项目涉及金融,所以网络很特殊,无法连接我们的镜像仓库,只能给离线部署。
第一步:将原部署好的云监控平台的镜像都save下来。命令:
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o 自定义名字.tar
第二步:升级内核
挂载磁盘和配置逻辑卷不谈了,得给他服务器升级内核,因为内核版本太低了,这里我不详细说明操作了,如果有需要的话请评论告知,我会专门出一期。

第三步:部署docker本地镜像仓库
部署安装 Docker 本地镜像仓库(生产环境建议搭建Harbor)

1、部署安装Docker
2、上传 registry 的镜像到 Docker服务器上
3、创建本地镜像仓库存储卷
   mkdir -p /data/registry
   docker load -i registry-2.7.1.tar
4、运行 registry 服务
   docker run -d --name registry -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always registry.szlanyou.com/lke/registry:2.7.1

5、修改 docker 配置文件,增加以下配置
   vi /etc/docker/daemon.json
   {
     "insecure-registries": ["<ip>:5000"]
   }

6、重启 docker 服务让配置生效
  systemctl daemon-reload
  systemctl restart docker

7、上传本地镜像到Docker服务器上,并执行以下命令,生成imagelist.txt文件
  docker images | grep -v REPOSITORY | awk '{OFS=":";print $1,$2}' > imagelist.txt

8、执行脚本将镜像服务上传到本地仓库
  修改 image_push.sh 中的new_registry为 <ip>:5000
  保存后执行 sh image_push.sh 脚本,等待镜像上传到本地仓库后即可

准备工作最好后,剩下的就不需要讲了,一步步的执行yaml文件运行起来就行

二、k8s节点内存告警处理
接收到监控机器人告警,同事回复后,升级到我这处理

第一步:查看各节点内存
在云监控web页面上或者后台使用命令查看各节点使用情况
参考命令:
①查看各个节点的 CPU 和内存使用情况基本命令:
kubectl top nodes
②查看详细指标:
kubectl describe node <node-name>
③显示节点的资源分配情况:
kubectl get nodes -o wide
④显示节点的 CPU 和内存容量以及它们的分配情况:
kubectl top pods --all-namespaces
⑤查看某个特定 Pod 的内存使用情况:
kubectl top pod <pod-name> -n <namespace>

第二步:发现问题
输入kubectl describe node 命令后发现,是因为某个节点打了污点,使用率只有30%多,而其他节点都达到80%往上。

第三步:解决方法
1、删除污点。命令:
kubectl taint nodes --all <taint-key>:<taint-effect>-
2、然后重启各项目的oap服务
OAP(Observability Analysis Platform)服务通常是一种可观测性分析平台服务,用于对应用程序和系统进行监控、追踪、日志分析等操作,以提供对系统运行状态的深入洞察。
Apache SkyWalking 的服务器端组件,负责接收来自应用的监控数据,进行处理和分析,是 SkyWalking 的核心部分。OAP 服务可以接收探针(如 Java Agent)发送的追踪数据,进行数据的存储、分析和聚合,并提供查询接口供 SkyWalking UI 使用,以便用户可以在 UI 界面上看到服务的监控数据。
3、重启lop命名空间下的deployment。命令:
kubectl get deployments -n lop -o wide
将查询的pod重启,令集群重新分配资源

三、解决mysql、redis、中间件、自定义sql等监控不生效问题
1、有状态服务处理
根据集群上独有项目编号以及关键字来查询。命令:
查看pod状态:kubectl -n <projectid> get pods | grep <pod-name>
查看日志信息,另外如果有那种有直接关联的服务的pod的日志也需要查询:kubectl -n <projectid> logs <pod-name>
以上是后台k8s节点服务器上,也可以在容器平台web界面上查询
分析:这里发现问题是同事初次纳入有状态信息录入错误,导致只是在云平台上删除后再重新纳入无法生效,需要清理节点上的缓存
解决方法:这里在节点后台服务器上 或者 容器平台web页面上删除对应的pod,重新根据正确的信息来配置纳入监控
参考命令:
①删除单个 Pod:
kubectl delete pod <pod-name>
②根据标签删除 Pod:
kubectl delete pod -l <label-key>=<label-value>
③删除命名空间下的所有 Pod:
kubectl delete pods --all --namespace=<namespace>
④强制删除 Pod:
kubectl delete pod <pod-name> --graceful-period=0 --force
⑤删除所有 Pod 并保留 PVC (PersistentVolumeClaim):
kubectl delete pod <pod-name> --graceful

2、自定义sql处理
邮件告警信息:

初步判定和数据链接有关系,这里很明显,不是去直接查看自定义sql的pod,而是先要查看采集器的pod日志信息,查询发现和确实是和数据库有关系。

分析原因:根据 telnet 命令输出,可以判断出网络是通的。但是下面错误信息报主机 ip 因为多次连接错误被封锁了。连接错误数超过了 MySQL 服务器设置的 max_connect_errors 值,导致MySQL 服务器封锁了这个 IP 。
解决方法:
①在对应的数据库服务器上命令:
find / -name mysqladmin 2>/dev/null
搜索mysqladmin的路径,如下:
/www/server/mysql/bin/mysqladmin
②进入/www/server/mysql/bin/mysqladmin路径,执行命令
./mysqladmin -u root -p flush-hosts
清除 MySQL 服务器的 host cache 并解锁被封锁的 IP 地址
③查询及处理
show global variables like 'max_connect_errors';

用管理员账号,在MySQL的主库和从库都执行以下命令:
set global max_connect_errors=100000;
经过判断发现此次问题是由于之前为处理 k8s 节点的内存告警,使得dbm-service采集器pod发生了漂移,转移到了其他节点上

心得:处理 Kubernetes 问题时,首先需要确认问题影响范围,包括服务和 Pod 层面受影响的情况。接着检查集群和节点状态,查看 Pod 是否运行并就绪,通过查看 Pod 日志和事件进行诊断。同时,检查资源限制和服务配置,确保部署和标签选择器正确。若涉及网络或存储问题,需检查相关配置和状态。具体而言,在服务层面确定受影响的服务数量和可用性;在节点状态方面,查看节点是否 Ready 以及资源使用情况;对 Pod 的运行和就绪状态进行分析,包括查看日志和事件、检查资源请求与限制、服务配置、部署及标签选择器等。对于网络问题,检查网络插件、策略和 Pod 内部网络配置;对于存储问题,检查存储类、持久卷和存储挂载点等。

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

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

相关文章

spring boot3.3.5 logback-spring.xml 配置

新建 resources/logback-spring.xml 控制台输出颜色有点花 可以自己更改 <?xml version"1.0" encoding"UTF-8"?> <!--关闭文件扫描 scanfalse --> <configuration debug"false" scan"false"><springProperty …

MySQL--SQL优化

目录 1 插入数据 1.1 insert优化 1.1.1 批量插入 1.1.2 手动提交事务 1.1.3 主键顺序插入 1.2 大批量插入数据 2 主键优化 2.1 数据组织方式 2.2 页分裂 2.3 页合并 2.4 主键设计原则 3 order by优化 4 group by优化 1. 使用索引 2. 减少数据集大小 3. 使用合适的聚…

【计算机网络】实验2:总线型以太网的特性

实验 2&#xff1a;总线型以太网的特性 一、 实验目的 加深对MAC地址&#xff0c;IP地址&#xff0c;ARP协议的理解。 了解总线型以太网的特性&#xff08;广播&#xff0c;竞争总线&#xff0c;冲突&#xff09;。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实…

Java函数式编程【二】【Stream的装饰】【中间操作】【map映射器】【摊平映射器flatMap】

一、Java的Stream流式编程中的中间操作 Java的Stream流式编程中&#xff0c;中间操作是对数据流进行处理的一种方式&#xff0c;这些操作通常返回流对象本身&#xff0c;以便可以链接更多的操作。以下是一些常见的中间操作&#xff1a; filter(Predicate predicate) - 用于通过…

使用pymupdf提取PDF文档中的文字和其颜色

最近我在捣鼓一个PDF文件&#xff0c;想把它里面的文字和文字颜色给提取出来。后来发现有个叫pymupdf的库能搞定这事儿。操作起来挺简单的&#xff0c;pymupdf的示例文档里就有现成的代码可以参考。 how-to-extract-text-with-color 我本地的测试代码如下&#xff1a; impor…

MYSQL 多表练习

Sutdent表的定义 ---------------------------------------------------------------------------------------------------- | 字段名 | Id | Name | Sex | Birth | Department | Address | -------------------…

2024年12月HarmonyOS应用开发者基础认证全新题库

注意事项&#xff1a;切记在考试之外的设备上打开题库进行搜索&#xff0c;防止切屏三次考试自动结束&#xff0c;题目是乱序&#xff0c;每次考试&#xff0c;选项的顺序都不同 更新时间&#xff1a;2024年12月3日 这是基础认证题库&#xff0c;不是高级认证题库注意看清楚标…

一文解析Kettle开源ETL工具!

ETL&#xff08;Extract, Transform, Load&#xff09;工具是用于数据抽取、转换和加载的软件工具&#xff0c;用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。 一、Kettle是什么&#xff1f; Kettle 是一款开源的 ETL&#x…

【模型剪枝】YOLOv8 模型剪枝实战 | 稀疏化-剪枝-微调

文章目录 0. 前言1. 模型剪枝概念2. 模型剪枝实操2.1 稀疏化训练2.2 模型剪枝2.3 模型微调总结0. 前言 无奈之下,我还是写了【模型剪枝】教程🤦‍♂️。回想当年,在写《YOLOv5/v7进阶实战专栏》 时,我经历了许多挫折,才最终完成了【模型剪枝】和【模型蒸馏】的内容。当时…

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

大语言模型微调与 XTuner 微调实战

1 大语言模型微调 1.1 什么是微调 大语言模型微调&#xff08;Fine-tuning of Large Language Models&#xff09;是指在预训练的大型语言模型基础上&#xff0c;使用特定任务的数据进一步训练模型&#xff0c;以使其更好地适应和执行特定任务的过程&#xff0c;用于使LLM&am…

C#学写了一个程序记录日志的方法(Log类)

1.错误和警告信息单独生产文本进行记录&#xff1b; 2.日志到一定内存阈值可以打包压缩&#xff0c;单独存储起来&#xff0c;修改字段MaxLogFileSizeForCompress的值即可&#xff1b; 3.Log类调用举例&#xff1a;Log.Txt(JB.信息,“日志记录内容”,"通道1"); usi…

【前端】特殊案例分析深入理解 JavaScript 中的词法作用域

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;案例代码&#x1f4af;词法作用域&#xff08;Lexical Scope&#xff09;与静态作用域什么是词法作用域&#xff1f;代码执行的详细分析 &#x1f4af;函数定义与调用的…

【Docker】Docker配置远程访问

配置Docker的远程访问&#xff0c;你需要按照以下步骤进行操作&#xff1a; 1. 在Docker宿主机上配置Docker守护进程监听TCP端口 Docker守护进程默认只监听UNIX套接字&#xff0c;要实现远程访问&#xff0c;需要修改配置以监听TCP端口。 ‌方法一&#xff1a;修改Docker服务…

贪心算法题

0简介 0.1什么是贪心算法 贪心算法是用贪婪(鼠目寸光)的角度&#xff0c;找到解决问题的最优解 贪心策略&#xff1a;(从局部最优 --> 整体最优) 1把解决问题的过程分为若干步&#xff1b; 2解决每一个问题时&#xff0c;都选择当前“看上去”最优的解法&#xff1b; 3“…

【HTTP】HTTP协议

一个Web Server就是个服务器软件&#xff08;程序&#xff09;&#xff0c;或者是运行这个服务器软件的硬件&#xff08;计算机&#xff09;&#xff0c;其主要功能是通过HTTP协议与客户端进行通信&#xff0c;来接收&#xff0c;存储&#xff0c;处理来自客户端的HTTP请求&…

分布式存储方式的地理信息数据仓库建立设计方案

背景介绍 随着地理信息技术的发展,GIS系统中的数据规模越来越庞大,传统集中式存储方式在处理高并发查询和大规模空间分析时面临瓶颈。分布式存储通过数据分片、并行计算等技术,为地理信息数据管理提供了新的解决方案。适用场景: 遥感影像存储与分析 城市交通数据管理(如G…

深度学习案例:ResNet50模型+SE-Net

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 回顾ResNet模型 ResNet&#xff0c;即残差网络&#xff0c;是由微软研究院的Kaiming He及其合作者于2015年提出的一种深度卷积神经网络架构。该网络架构的核心创新在于引入了“残差连接”&…

droppath

DropPath 是一种用于正则化深度学习模型的技术&#xff0c;它在训练过程中随机丢弃路径&#xff08;或者说随机让某些部分的输出变为零&#xff09;&#xff0c;从而增强模型的鲁棒性和泛化能力。 代码解释&#xff1a; import torch import torch.nn as nn # 定义 DropPath…

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度)&#xff1a;由两个小时级数据集&#xff08;ETTh&#xff09;和两个 15 分钟级数据集&#xff08;ETTm&#xff09;组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) &#xff1a;描…