Openshift节点Disk pressure

news2025/5/16 3:49:27

OpenShift 监控以下指标,并定义以下垃圾回收的驱逐阈值。请参阅产品文档以更改任何驱逐值。

nodefs.available
从 cadvisor 来看,该node.stats.fs.available指标表示节点文件系统(所在位置)上有多少可用(剩余)的文件系统空间/var/lib/kubelet。
默认驱逐阈值:<10%

nodefs.inodesFree
从 cadvisor 来看,该node.stats.fs.inodesFree指标表示节点文件系统中剩余的可用 inode 数量。该文件系统取决于节点所在位置/var/lib/kubelet,在 RHCOS 或标准 RHEL FS 布局中,这是映射到的文件系统/。
默认驱逐阈值:<5%

imagefs.available
从 cadvisor 来看,该node.stats.runtime.imagefs.available指标表示镜像存储文件系统(所在位置)上有多少可用(剩余)的文件系统空间/var/lib/containers/。
默认驱逐阈值:<15%

imagefs.inodesFree
从 cadvisor 来看,该node.stats.runtime.imagefs.inodesFree指标表示图像存储文件系统中剩余的可用 inode 数量。
默认驱逐阈值:<5%

注意:使用df -h 和df -i 在哪里是 或nodefs,imagefs应该显示由 cadvisor 提取的相同指标。
本文的读者还应参考我们的资源储备文档,以获取有关提高节点可靠性/稳定性的更多信息。

1.监控DiskPressure

使用PrometheusRule

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: diskpressure-rules
  namespace: openshift-monitoring
spec:
  groups:
    - name: node-diskpressure-alerts
      rules:
        - alert: nodefsAvailableLow
          annotations:
            description: '节点{{ $labels.instance}}分区/var/lib/kubelet使用率过高已经超过85%,当超过90%,会出现Disk Pressure污点'
            summary: '节点{{ $labels.instance}}分区/var/lib/kubelet使用率过高.'
          expr: |
            1 - node_filesystem_avail_bytes{mountpoint="/var/lib/kubelet"}/node_filesystem_size_bytes{mountpoint="/var/lib/kubelet"} > 0.85
          for: 1m
          labels:
            severity: warning
        - alert: nodefsInodesFreeLow
          annotations:
            description: '节点{{ $labels.instance}}分区/var/lib/kubelet文件系统中使用的inode数量已经超过90%,当超过95%,会出现Disk Pressure污点'
            summary: '节点{{ $labels.instance}}分区/var/lib/kubelet文件系统可使用的inode数量低.'
          expr: |
            1 - node_filesystem_files_free{mountpoint="/var/lib/kubelet",fstype!~"tmpfs|overlay"}/node_filesystem_files{mountpoint="/var/lib/kubelet",fstype!~"tmpfs|overlay"}   > 0.9
          for: 1m
          labels:
            severity: warning
        - alert: imagefsAvailableLow
          annotations:
            description: '节点{{ $labels.instance}}分区/var/lib/containers使用率过高已经超过80%,当超过85%,会出现Disk Pressure污点'
            summary: '节点 {{ $labels.instance }} 分区/var/lib/containers磁盘使用率过高.'
          expr: |
            1- node_filesystem_avail_bytes{mountpoint="/var/lib/containers"}/node_filesystem_size_bytes{mountpoint="/var/lib/containers"} > 0.8
          for: 1m
          labels:
            severity: warning
        - alert: imagefsInodesFreeLow
          annotations:
            description: '节点{{ $labels.instance}}分区/var/lib/containers文件系统中使用的inode数量已经超过90%,当超过95%,会出现Disk Pressure污点'
            summary: '节点{{ $labels.instance}}分区/var/lib/containers文件系统可使用的inode数量低.'
          expr: |
            1 - node_filesystem_files_free{mountpoint="/var/lib/containers",fstype!~"tmpfs|overlay"}/node_filesystem_files{mountpoint="/var/lib/containers",fstype!~"tmpfs|overlay"}   > 0.9
          for: 1m
          labels:
            severity: warning

2.如何调查 DiskPressure

问题

一些 OpenShift 节点获取DiskPressure、OutOfDisk和NotReady状态。
识别主机上使用大磁盘的 pod。

解决

pods硬盘资源主要消耗的是overlay目录和emptydir目录。

目录与pod的相关信息列在/var/lib/containers/storage/overlay-containers/volatile-containers.json文件中(OCP 4.11及以下版本中,这些信息列在文件中/var/lib/containers/storage/overlay-containers/containers.json)。文件pod-name中记录的containers.json由组成 k8s_<Kubernetes Pod Name>_<Kubernetes Namespace>_<Pod Id>_0

注意:如果pods已经被驱逐并转移到其他节点,则需要调查pods其他节点上的驱逐情​​况。

为了释放磁盘空间,可以按照使用 OpenShift 4 中的图像修剪器从节点中删除未使用的image中的说明配置垃圾收集器。

根本原因

pods硬盘资源主要消耗的是overlay目录和emptydir目录。

诊断步骤

首先,调查节点中的磁盘使用情况:

$ oc debug node/<node name>
$ chroot /host 
# df -h
# du -h --max-depth=1 /var | sort -hr
# du -h --max-depth=1 /var/log | sort -hr
# du -h --max-depth=1 /var/lib | sort -hr

如果/var/lib目录过大,需要pods按照如下步骤排查哪个目录占用了较大的磁盘:

识别覆盖层中使用大磁盘的覆盖层 ID。以下示例中为f47d8f457d3ef1b119f238807202d6590d07b548c961f036197ae4e70668f1dc

# du -h --max-depth=1 /var/lib/containers/storage/overlay | sort -hr
SIZE        OVERLAY PATH
...............................
2.4G  /var/lib/containers/storage/overlay/f47d8f457d3ef1b119f238807202d6590d07b548c961f036197ae4e70668f1dc

然后,通过覆盖 ID 识别 Pod 名称

# cat /var/lib/containers/storage/overlay-containers/volatile-containers.json | jq -c '.[] | select( .layer | contains("<overlay id>")) | .metadata' | jq -r | jq '."pod-name"'
k8s_downloads-665d985cd5-5268z_openshift-console_d4a527d0-42a3-4ff8-8651-64508dbb74b6_0

用同样的方法,在 emptydir 中识别使用大磁盘的 pod id。在下面的例子中,它是59f09a5d-05ab-45a6-bb73-e46b8fa2b28b

# du -h --max-depth=1 /var/lib/kubelet/pods | sort -hr
SIZE  POD ID
...............................
3.0M  /var/lib/kubelet/pods/59f09a5d-05ab-45a6-bb73-e46b8fa2b28b

然后通过 pod id 识别 pod 名称

# cat /var/lib/containers/storage/overlay-containers/volatile-containers.json | jq -r '[.[] | select( .names[] | contains("<pod id>")) | .metadata][0]' | jq -r '."pod-name"'
k8s_grafana-989b557fb-6vn2k_openshift-monitoring_59f09a5d-05ab-45a6-bb73-e46b8fa2b28b_0

3.快速解决办法:给磁盘扩容

假如/dev/sdb1是挂在/var/lib/containers上,当/var/lib/containers容量不足85%,会引发disk pressure

先从虚拟机的层面扩容sdb

echo '1' > /sys/block/sdb/device/rescan
growpart /dev/sdb 1
xfs_growfs /dev/sdb1

参考:
https://access.redhat.com/articles/4766521

https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/node-pressure-eviction/

https://docs.redhat.com/zh-cn/documentation/openshift_container_platform/4.14/html/nodes/nodes-nodes-garbage-collection#nodes-nodes-garbage-collection-configuring_nodes-nodes-configuring

https://access.redhat.com/solutions/5341801

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

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

相关文章

拉丁方分析

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著傅珏生译)第4章随机化区组&#xff0c;拉丁方&#xff0c;以及有关的设计第4.2节的python解决方案。本文尽量避免重复书中的理论&#xff0c;着于提供python解决方案&#xff0c;并与原书的运算结果进行对比。您…

软考软件设计师中级——软件工程笔记

1.软件过程 1.1能力成熟度模型&#xff08;CMM&#xff09; 软件能力成熟度模型&#xff08;CMM&#xff09;将软件过程改进分为以下五个成熟度级别&#xff0c;每个级别都定义了特定的过程特征和目标&#xff1a; 初始级 (Initial)&#xff1a; 软件开发过程杂乱无章&#xf…

5.5.1 WPF中的动画2-基于路径的动画

何为动画?一般只会动。但所谓会动,还不仅包括位置移动,还包括角度旋转,颜色变化,透明度增减。动画本质上是一个时间段内某个属性值(位置、颜色等)的变化。因为属性有很多数据类型,它们变化也需要多种动画类比如: BooleanAnimationBase\ ByteAnimationBase\DoubleAnima…

Andorid之TabLayout+ViewPager

文章目录 前言一、效果图二、使用步骤1.主xml布局2.activity代码3.MyTaskFragment代码4.MyTaskFragment的xml布局5.Adapter代码6.item布局 总结 前言 TabLayoutViewPager功能需求已经是常见功能了&#xff0c;我就不多解释了&#xff0c;需要的自取。 一、效果图 二、使用步骤…

26考研——中央处理器_指令流水线_流水线的冒险与处理 流水线的性能指标 高级流水线技术(5)

408答疑 文章目录 六、指令流水线流水线的冒险与处理结构冒险数据冒险延迟执行相关指令采用转发&#xff08;旁路&#xff09;技术load-use 数据冒险的处理 控制冒险 流水线的性能指标流水线的吞吐率流水线的加速比 高级流水线技术超标量流水线技术超长指令字技术超流水线技术 …

酒店旅游类数据采集API接口之携程数据获取地方美食品列表 获取地方美餐馆列表 景点评论

携程 API 接入指南 API 地址&#xff1a; 调用示例&#xff1a; 美食列表 景点列表 景点详情 酒店详情 参数说明 通用参数说明 请谨慎传递参数&#xff0c;避免不必要的费用扣除。 URL 说明&#xff1a;https://api-gw.cn/平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京…

Lora原理及实现浅析

Lora 什么是Lora Lora的原始论文为《LoRA: Low-Rank Adaptation of Large Language Models》&#xff0c;翻译为中文为“大语言模型的低秩自适应”。最初是为了解决大型语言模在进行任务特定微调时消耗大量资源的问题&#xff1b;随后也用在了Diffusion等领域&#xff0c;用于…

【设计模式】- 创建者模式

单例模型 饿汉式 静态方法创建对象 public class Singleton {// 私有构造方法private Singleton(){}private static Singleton instance new Singleton();// 提供一个外界获取的方法public static Singleton getInstance(){return instance;} }静态代码块创建对象 public …

南审计院考研分享会 经验总结

汪学长 – 中科大 计科专硕 初试准备 数学先做真题&#xff0c;模拟题刷的越多分越高&#xff1b;408真题最重要&#xff0c;模拟题辅助&#xff1b;英语只做真题&#xff1b;政治9月份开始背 代码能力在低年级培养的重要性和路径 考研不选择机构原因 因为机构里面学习的框…

牛客练习赛138(首篇万字题解???)

赛时成绩如下&#xff1a; 1. 小s的签到题 小s拿到了一个比赛榜单&#xff0c;他要用最快的速度找到签到题&#xff0c;但是小s脑子还是有点晕&#xff0c;请你帮帮小s&#xff0c;助力他找到签到题。 比赛榜单是一个 2 行 n 列的表格&#xff1a; 第一行是 n 个大写字母&#…

用git下载vcpkg时出现Connection was reset时的处理

用git安装vcpkg时出现Connect was rest&#xff08;如上图&#xff09;。多谢这位网友的博文解决了问题&#xff1a; 通过:http.sslVerify false全局来设置&#xff0c;执行以下命令&#xff1a; git config --global http.sslVerify "false" 原文链接&#xff1a…

leetcode - 滑动窗口问题集

目录 前言 题1 长度最小的子数组&#xff1a; 思考&#xff1a; 参考代码1&#xff1a; 参考代码2&#xff1a; 题2 无重复字符的最长子串&#xff1a; 思考&#xff1a; 参考代码1&#xff1a; 参考代码2&#xff1a; 题3 最大连续1的个数 III&#xff1a; 思考&am…

一分钟在Cherry Studio和VSCode集成火山引擎veimagex-mcp

MCP的出现打通了AI模型和外部数据库、网页API等资源&#xff0c;成倍提升工作效率。近期火山引擎团队推出了 MCP Server SDK&#xff1a; veimagex-mcp。本文介绍如何在Cherry Studio 和VSCode平台集成 veimagex-mcp。 什么是MCP MCP&#xff08;Model Context Protocol&…

Tomcat与纯 Java Socket 实现远程通信的区别

Servlet 容器​​&#xff08;如 Tomcat&#xff09; 是一个管理 Servlet 生命周期的运行环境&#xff0c;主要功能包括&#xff1a; ​​协议解析​​&#xff1a;自动处理 HTTP 请求/响应的底层协议&#xff08;如报文头解析、状态码生成&#xff09;&#xff1b; ​​线程…

为什么企业建站或独立站选用WordPress

与大多数组织相比&#xff0c;企业业务更需要保持可扩展和可靠的网络存在&#xff0c;以保持竞争力。为此&#xff0c;许多大型企业的 IT 领导者历来寻求昂贵的网络解决方案&#xff0c;这些方案需要签订专有支持合同来保证质量。不过&#xff0c;还有另一种方法。WordPress问世…

镜头内常见的马达类型(私人笔记)

① 螺杆式马达 驱动来源&#xff1a;机身内马达。镜头尾部有一个接收“螺杆”的接口&#xff0c;通过机械传动带动镜头对焦组。缺点&#xff1a;慢、吵、不能用于无机身马达的相机。✅ 典型镜头&#xff1a;尼康 AF、AF-D 系列&#xff1b;美能达老镜头。尼康传统的AF镜头通过…

从代码学习深度学习 - 语义分割和数据集 PyTorch版

文章目录 前言什么是语义分割?图像分割和实例分割Pascal VOC2012 语义分割数据集Pascal VOC2012 语义分割数据集介绍基本信息语义分割部分特点数据格式评价指标应用价值数据集获取使用提示辅助工具代码 (`utils_for_huitu.py`)读取数据预处理数据自定义语义分割数据集类读取数…

4G物联网模块实现废气处理全流程数据可视化监控配置

一、项目背景 随着工业化进程的加速&#xff0c;工业废气的排放对环境造成了严重影响&#xff0c;废气处理厂应运而生。然而&#xff0c;废气处理厂中的设备众多且分散&#xff0c;传统的人工巡检和数据记录方式效率低下&#xff0c;难以及时发现问题。为了实现对废气处理设备…

电商平台如何做好DDoS 攻防战?

一、新型 DDoS 攻击技术演进分析 1.1 电商平台面临的四类攻击范式 graph LR A[DDoS攻击] --> B{网络层} A --> C{应用层} B --> D[CLDAP反射攻击<br>峰值达3.5Tbps] B --> E[QUIC协议洪水攻击] C --> F[API CC攻击<br>精准打击抢购接口] C -->…

【计算机视觉】OpenCV实战项目:Athlete-Pose-Detection 运动员姿态检测系统:基于OpenCV的实时运动分析技术

运动员姿态检测系统&#xff1a;基于OpenCV的实时运动分析技术 1. 项目概述1.1 技术背景1.2 项目特点 2. 技术架构与算法原理2.1 系统架构2.2 核心算法2.3 模型选择 3. 项目部署与运行指南3.1 环境准备硬件要求软件依赖 3.2 项目配置3.3 运行项目基本运行模式高级参数 4. 常见问…