Openshift节点Disk pressure
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-rulesnamespace: openshift-monitoring
spec:groups:- name: node-diskpressure-alertsrules:- alert: nodefsAvailableLowannotations: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.85for: 1mlabels:severity: warning- alert: nodefsInodesFreeLowannotations: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.9for: 1mlabels:severity: warning- alert: imagefsAvailableLowannotations: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.8for: 1mlabels:severity: warning- alert: imagefsInodesFreeLowannotations: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.9for: 1mlabels: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
相关文章:
Openshift节点Disk pressure
OpenShift 监控以下指标,并定义以下垃圾回收的驱逐阈值。请参阅产品文档以更改任何驱逐值。 nodefs.available 从 cadvisor 来看,该node.stats.fs.available指标表示节点文件系统(所在位置)上有多少可用(剩余…...

拉丁方分析
本文是实验设计与分析(第6版,Montgomery著傅珏生译)第4章随机化区组,拉丁方,以及有关的设计第4.2节的python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您…...
Pomelo知识框架
一、Pomelo 基础概念 Pomelo 简介 定位:分布式游戏服务器框架(网易开源)。 特点:高并发、可扩展、多进程架构、支持多种通信协议(WebSocket、TCP等)。 适用场景:MMO RPG、实时对战、社交游戏等…...

软考软件设计师中级——软件工程笔记
1.软件过程 1.1能力成熟度模型(CMM) 软件能力成熟度模型(CMM)将软件过程改进分为以下五个成熟度级别,每个级别都定义了特定的过程特征和目标: 初始级 (Initial): 软件开发过程杂乱无章…...
基于事件驱动和策略模式的差异化处理方案
一、支付成功后事件驱动 1、支付成功事件 /*** 支付成功事件** author ronshi* date 2025/5/12 14:40*/ Getter Setter public class PaymentSuccessEvent extends ApplicationEvent {private static final long serialVersionUID 1L;private ProductOrderDO productOrderDO;…...

5.5.1 WPF中的动画2-基于路径的动画
何为动画?一般只会动。但所谓会动,还不仅包括位置移动,还包括角度旋转,颜色变化,透明度增减。动画本质上是一个时间段内某个属性值(位置、颜色等)的变化。因为属性有很多数据类型,它们变化也需要多种动画类比如: BooleanAnimationBase\ ByteAnimationBase\DoubleAnima…...
计算机网络:手机和基站之间的通信原理是什么?
手机与基站之间的通信是无线通信技术的核心应用之一,涉及复杂的物理层传输、协议交互和网络管理机制。以下从技术原理、通信流程和关键技术三个层面深入解析这一过程: 一、蜂窝网络基础架构 1. 蜂窝结构设计 基本原理:将服务区域划分为多个六边形“蜂窝小区”,每个小区由*…...
PostgreSQL常用DML操作的锁类型归纳
DML锁类型分析 本文对PostgreSQL的insert、 update、 truncate、 delete等常用DML操作的锁类型进行了归纳类比: 包括是否排他、 共享、 表级、 行级等的总结。 truncate :access exclusive mode(block all read/write)、table-le…...
Apache Flink 与 Flink CDC:概念、联系、区别及版本演进解析
Apache Flink 与 Flink CDC:概念、联系、区别及版本演进解析 在实时数据处理和流式计算领域,Apache Flink 已成为行业标杆。而 Flink CDC(Change Data Capture) 作为其生态中的重要组件,为数据库的实时变更捕获提供了强大的能力。 本文将从以下几个方面进行深入讲解: 什…...
数学复习笔记 8
前言 成为一个没有感情的刷题机器就可以变得很强了。 逆矩阵的运算 随便算一下就算出来了,没啥难的。主要是用天然可交换的矩阵来算。有三个天然可交换的矩阵,某矩阵和单位阵,该矩阵和它的伴随矩阵,该矩阵和它的逆矩阵。一定要…...
FunASR:语音识别与合成一体化,企业级开发实战详解
简介 FunASR是由阿里巴巴达摩院开源的高性能语音识别工具包,它不仅提供语音识别(ASR)功能,还集成了语音端点检测(VAD)、标点恢复、说话人分离等工业级模块,形成了完整的语音处理解决方案。 FunASR支持离线和实时两种模式,能够高效处理多语言音频,并提供高精度的识别结果。…...
rust-candle学习笔记11-实现一个简单的自注意力
参考:about-pytorch 定义ScaledDotProductAttention结构体: use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …...
读入csv文件写入MySQL
### 使用 Spark RDD 读取 CSV 文件并写入 MySQL 的实现方法 #### 1. 环境准备 在使用 Spark 读取 CSV 文件并写入 MySQL 数据库之前,需要确保以下环境已配置完成: - 添加 Maven 依赖项以支持 JDBC 连接。 - 配置 MySQL 数据库连接参数,包括 …...

Andorid之TabLayout+ViewPager
文章目录 前言一、效果图二、使用步骤1.主xml布局2.activity代码3.MyTaskFragment代码4.MyTaskFragment的xml布局5.Adapter代码6.item布局 总结 前言 TabLayoutViewPager功能需求已经是常见功能了,我就不多解释了,需要的自取。 一、效果图 二、使用步骤…...
C++GO语言微服务之用户信息处理②
目录 01 03-获取用户信息-上 02 04-获取用户信息-下 03 05-更新用户名实现 01 06-中间件简介和中间件类型 02 07-中间件测试和模型分析 03 08-中间件测试案例和小结 04 09-项目使用中间件 01 03-获取用户信息-上 ## Cookie操作 ### 设置Cookie go func (c *Context) …...

26考研——中央处理器_指令流水线_流水线的冒险与处理 流水线的性能指标 高级流水线技术(5)
408答疑 文章目录 六、指令流水线流水线的冒险与处理结构冒险数据冒险延迟执行相关指令采用转发(旁路)技术load-use 数据冒险的处理 控制冒险 流水线的性能指标流水线的吞吐率流水线的加速比 高级流水线技术超标量流水线技术超长指令字技术超流水线技术 …...
Java 与 Go 语言对比
Java 和 Go (Golang) 是两种流行的编程语言,各有其设计哲学和应用场景。以下是它们的详细对比: 1. 基本特性 特性JavaGo诞生时间1995 (Sun Microsystems)2009 (Google)设计目标“Write Once, Run Anywhere”简洁、高效的系统编程语言语言类型面向对象多…...
OpenUCX 库介绍与使用指南
OpenUCX 库介绍与使用指南 OpenUCX 简介 OpenUCX (Unified Communication X) 是一个高性能、开源通信框架,专为大规模分布式计算和加速计算设计。它提供了统一的API,支持多种网络硬件和协议,包括InfiniBand、RoCE、TCP等。 主要特点 高性…...

酒店旅游类数据采集API接口之携程数据获取地方美食品列表 获取地方美餐馆列表 景点评论
携程 API 接入指南 API 地址: 调用示例: 美食列表 景点列表 景点详情 酒店详情 参数说明 通用参数说明 请谨慎传递参数,避免不必要的费用扣除。 URL 说明:https://api-gw.cn/平台/API类型/ 平台:淘宝,京…...

Lora原理及实现浅析
Lora 什么是Lora Lora的原始论文为《LoRA: Low-Rank Adaptation of Large Language Models》,翻译为中文为“大语言模型的低秩自适应”。最初是为了解决大型语言模在进行任务特定微调时消耗大量资源的问题;随后也用在了Diffusion等领域,用于…...
GitHub 趋势日报 (2025年05月13日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型,一键生成高清短视频使用…...

【设计模式】- 创建者模式
单例模型 饿汉式 静态方法创建对象 public class Singleton {// 私有构造方法private Singleton(){}private static Singleton instance new Singleton();// 提供一个外界获取的方法public static Singleton getInstance(){return instance;} }静态代码块创建对象 public …...
服务器时间发生跳变导致hghac中对应主机状态频繁切换为crash或stop
文章目录 环境症状问题原因解决方案相关文档报错编码 环境 系统平台:N/A 版本:N/A 症状 集群状态: [rootbthbj-hgywsjkjq-ip28-cen76 ~]# hghactl list Cluster: highgo-ee-cluster —---------------------—---------- | Member | Ho…...

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

牛客练习赛138(首篇万字题解???)
赛时成绩如下: 1. 小s的签到题 小s拿到了一个比赛榜单,他要用最快的速度找到签到题,但是小s脑子还是有点晕,请你帮帮小s,助力他找到签到题。 比赛榜单是一个 2 行 n 列的表格: 第一行是 n 个大写字母&#…...
Rust 中的 `String`、`str` 和 `str`:深入解析与使用指南
在 Rust 编程中,字符串是不可或缺的数据类型,但 Rust 的字符串系统与其他语言有所不同。Rust 提供了 String、str 和 &str 三种主要的字符串类型,每种类型都有其独特的用途和特点。本文将详细介绍这三种字符串类型,帮助你更好…...
深入理解高性能网络通信:从内核源码到云原生实践
深入理解高性能网络通信:从内核源码到云原生实践 (示意图:Linux网络协议栈与通信架构分层模型) 随着互联网业务规模的不断扩大,系统对网络通信性能的要求也在迅速提升。从内核事件机制的演进到云原生架构下的极致优化&…...
10 web 自动化之 yaml 数据/日志/截图
文章目录 一、yaml 数据获取二、日志获取三、截图 一、yaml 数据获取 需要安装 PyYAML 库 import yaml import os from TestPOM.common import dir_config as Dir import jsonpathclass Data:def __init__(self,keyNone,file_name"test_datas.yaml"):file_path os…...
ubuntu清除缓存
pip pip cache purgeconda conda clean -a -yapt apt cleanapt-get apt-get cleanmodelscope modelscope clear-cachehuggingface rm -rf ~/.cache/huggingface/*...
OSI 7层模型
OSI 7层模型: 1、物理层(光纤等把电脑连接起来的物理手段) 2、数据链路层(以太网,确认0和1电信号的分组方式,负责MAC地址,MAC地址用于在网络中唯一标示一个网卡,相当于网卡的身份证…...