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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905771.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL的 JOIN 優化終極指南

目錄 前言序章&#xff1a;為何要有JOIN&#xff1f;——“一個好漢三個幫”的數據庫哲學 &#x1f91d;第一章&#xff1a;JOIN的“七十二變”——常見JOIN類型速覽 &#x1f3ad;第二章&#xff1a;MySQL的“紅娘秘籍”——JOIN執行原理大揭秘 &#x1f575;??♀?&#x1…

TLS 1.3黑魔法:從協議破解到極致性能調優

一、TLS協議逆向工程實驗 1.1 密碼學套件破解劇場 實驗準備&#xff1a; 靶機&#xff1a;啟用TLS 1.2的Nginx服務器 工具集&#xff1a;Wireshark OpenSSL s_client 定制Python腳本 實戰攻擊復現&#xff1a; # 強制使用弱加密套件連接 openssl s_client -connect exa…

國標GB/T 12536-90滑行試驗全解析:純電動輕卡行駛阻力模型參數精準標定

摘要 本文以國標GB/T 12536-90為核心框架&#xff0c;深度解析純電動輕卡滑行試驗的完整流程與數據建模方法&#xff0c;提供&#xff1a; 法規級試驗規范&#xff1a;從環境要求到數據采集全流程詳解行駛阻力模型精準標定&#xff1a;最小二乘法求解 ( FAv^2BvC ) 的MATLAB實…

【GaussDB遷移攻略】DRS支持CDC,解決大規模數據遷移挑戰

目錄 1 背景介紹 2 CDC的實現原理 3 DRS的CDC實現方式 4 DRS的CDC使用介紹 5 總結 1 背景介紹 隨著國內各大行業數字化轉型的加速&#xff0c;客戶的數據同步需求越來越復雜。特別是當需要將一個源數據庫的數據同時遷移到不同的目標庫場景時&#xff0c;華為云通常會創建…

PSA Certified

Arm 推出的 PSA Certified 已成為安全芯片設計領域的黃金標準。通過對安全啟動、加密服務以及更新協議等方面制定全面的要求&#xff0c;PSA Certified為芯片制造商提供了清晰的路線圖&#xff0c;使其能將安全機制深植于定制芯片解決方案的基礎架構中。作為對PSA Certified的補…

游戲引擎學習第286天:開始解耦實體行為

回顧并為今天的內容定下基調 我們目前正在進入實體系統的一個新階段&#xff0c;之前我們已經讓實體的移動系統變得更加靈活&#xff0c;現在我們想把這個思路繼續延伸到實體系統的更深層次。今天的重點&#xff0c;是重新審視我們處理實體類型&#xff08;entity type&#x…

遙感圖像非法采礦礦區識別分割數據集labelme格式1818張3類別

數據集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;僅僅包含jpg圖片和對應的json文件) 圖片數量(jpg文件個數)&#xff1a;1818 標注數量(json文件個數)&#xff1a;1818 標注類別數&#xff1a;3 標注類別名稱:["river","illegal-mining"…

python爬蟲實戰訓練

前言&#xff1a;哇&#xff0c;今天終于能訪問豆瓣了&#xff0c;前幾天爬太多次了&#xff0c;網頁都不讓我訪問了&#xff08;要登錄&#xff09;。 先來個小練習試試手吧&#xff01; 爬取豆瓣第一頁&#xff08;多頁同上篇文章&#xff09;所有電影的排名、電影名稱、星…

Go語言實現生產者-消費者問題的多種方法

Go語言實現生產者-消費者問題的多種方法 生產者-消費者問題是并發編程中的經典問題&#xff0c;涉及多個生產者生成數據&#xff0c;多個消費者消費數據&#xff0c;二者通過緩沖區&#xff08;隊列&#xff09;進行協調&#xff0c;保證數據的正確傳遞和同步。本文將從簡單到…

【Opencv】canny邊緣檢測提取中心坐標

采用opencv 對圖像中的小球通過canny邊緣檢測的方式進行提取坐標 本文介紹了如何使用OpenCV對圖像中的小球進行Canny邊緣檢測&#xff0c;并通過Zernike矩進行亞像素邊緣檢測&#xff0c;最終擬合橢圓以獲取小球的精確坐標。首先&#xff0c;圖像被轉換為灰度圖并進行高斯平滑…

藍橋杯12屆國B 123

題目描述 小藍發現了一個有趣的數列&#xff0c;這個數列的前幾項如下&#xff1a; 1,1,2,1,2,3,1,2,3,4,? 小藍發現&#xff0c;這個數列前 1 項是整數 1&#xff0c;接下來 2 項是整數 1 至 2&#xff0c;接下來 3 項是整數 1 至 3&#xff0c;接下來 4 項是整數 1 至 4&…

鴻蒙OSUniApp 制作動態加載的瀑布流布局#三方框架 #Uniapp

使用 UniApp 制作動態加載的瀑布流布局 前言 最近在開發一個小程序項目時&#xff0c;遇到了需要實現瀑布流布局的需求。眾所周知&#xff0c;瀑布流布局在展示不規則尺寸內容&#xff08;如圖片、商品卡片等&#xff09;時非常美觀和實用。但在實際開發過程中&#xff0c;我…

ThinkStation圖形工作站進入BIOS方法

首先視頻線需要接在獨立顯卡上&#xff0c;重新開機&#xff0c;持續按F1&#xff0c;或者顯示器出來lenovo的logo的時候按F1&#xff0c;這樣就進到bios里了。聯*想*坑&#xff0c;戴爾貴。靠。

【源碼級開發】Qwen3接入MCP,企業級智能體開發實戰!

Qwen3接入MCP智能體開發實戰&#xff08;上&#xff09; 一、MCP技術與Qwen3原生MCP能力介紹 1.智能體開發核心技術—MCP 1.1 Function calling技術回顧 如何快速開發一款智能體應用&#xff0c;最關鍵的技術難點就在于如何讓大模型高效穩定的接入一些外部工具。而在MCP技術…

Linux下載與安裝

一、YUM 1.1 什么是YUM 在CentOS系統中&#xff0c;軟件管理方式通常有三種方式&#xff1a;rpm安裝、yum安裝以及編譯&#xff08;源碼&#xff09;安裝。 編譯安裝&#xff0c;從過程上來講比較麻煩&#xff0c;包需要用戶自行下載&#xff0c;下載的是源碼包&#xff0c;需…

PostgreSQL中的全頁寫

一、概述 在PGSQL數據庫中&#xff0c;默認的頁面大小為8KB&#xff0c;但是磁盤buffer的大小為4KB&#xff0c;扇區大小為512B。這就導致在操作系統的角度看數據庫的寫操作&#xff0c;其實并不是一種原子操作。如果操作系統發生了系統級別的故障&#xff0c;此時正好操作系統…

WEB安全--Java安全--shiro550反序列化漏洞

一、前言 什么是shiro&#xff1f; shiro是一個Apache的Java安全框架 它的作用是什么&#xff1f; Apache Shiro 是一個強大且靈活的 Java 安全框架&#xff0c;用于處理身份驗證、授權、密碼管理以及會話管理等功能 二、shiro550反序列化原理 1、用戶首次登錄并勾選記住密碼…

2024 睿抗機器人開發者大賽CAIP-編程技能賽-專科組(國賽)解題報告 | 珂學家

前言 題解 2024 睿抗機器人開發者大賽CAIP-編程技能賽-專科組&#xff08;國賽&#xff09;&#xff0c;陳越姐姐出題。 國賽比省賽&#xff0c;難度增強了不少&#xff0c;題目就剩下4個題了。 涉及堆棧&#xff0c;hash表&#xff0c;優先隊列等高階數據結構的使用&#x…

15 C 語言字符類型詳解:轉義字符、格式化輸出、字符類型本質、ASCII 碼編程實戰、最值宏匯總

1 字符類型概述 在 C 語言中&#xff0c;字符類型 char 用于表示單個字符&#xff0c;例如一個數字、一個字母或一個符號。 char 類型的字面量是用單引號括起來的單個字符&#xff0c;例如 A、5 或 #。 當需要表示多個字符組成的序列時&#xff0c;就涉及到了字符串。在 C 語言…

操作系統-鎖/內存/中斷/IO

文章目錄 鎖自旋鎖互斥鎖悲觀鎖和樂觀鎖 內存管理物理/虛擬內存頁表段表虛擬內存布局寫時復制copy on writebrk&#xff0c;mmap頁面置換算法 中斷中斷分類中斷流程 網絡I/OI/O模型服務器處理并發請求 鎖 自旋鎖 自旋鎖是一種基于忙等待&#xff08;Busy-Waiting&#xff09;…