pod被驱逐追溯根因

背景

收到pod报警,看到其状态是error,新的pod又在另外一台机器上起来了。

原因分析

describe pod看到pod被驱逐

Status:           Failed
Reason:           Evicted
Message:          The node was low on resource: ephemeral-storage. Container XXXX was using 151224Ki, which exceeds its request of 0.

pod因为临时存储ephemeral-storage不足超过了node的硬驱逐策略,导致pod被驱逐。

evictionHard:memory.available: 100Minodefs.available: 10%

node节点是用华为云CCE nodepool 管理的,创建node节点时,默认100GB的数据存储SSD。

在这里插入图片描述

到这里有两个疑问

  1. df -h 的数据盘使用率不到70%。为何会超过硬限制而被驱逐呢?
  2. 这100GB 是如何分配的呢?临时存储占多少呢?

要解决这两个问题,需要分清楚pod使用存储的几种方式

  • emptyDir
  • pvc
  • localhost node的存储

这个pod用的emptyDir,也就是这个空间不足导致pod被驱逐。

根因

华为云 CCE将数据盘空间默认划分为两块

一块用于存放容器引擎 (Docker/Containerd) 工作目录、容器镜像的数据和镜像元数据;

另一块用于Kubelet组件和EmptyDir临时存储等。容器引擎空间的剩余容量将会影响镜像下载和容器的启动及运行。

  • 容器引擎和容器镜像空间(默认占90%):用于容器运行时工作目录、存储容器镜像数据以及镜像元数据。
  • Kubelet组件和EmptyDir临时存储(默认占10%):用于存储Pod配置文件、密钥以及临时存储EmptyDir等挂载数据。

容器存储的rootfs是overlayfs。容器引擎和容器镜像空间(默认占90%)都在/var/lib/docker(或者/var/lib/containerd)目录下。

在这里插入图片描述

这个就解释了签名两个疑问。

被驱逐的根因就是vgpaas-kubernetes 空间不足10%,pod被驱逐了。
在这里插入图片描述

解决

可以看到华为云将100GB的SSD做了raid,用lvm来管理存储。

控制台扩容

控制台扩容后lsblk就可以看到sdb大小已经变化了,需要扩展磁盘分区和文件系统才可以使用。

$ lsblk
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                   8:0    0   50G  0 disk
└─sda1                8:1    0   50G  0 part /
sdb                   8:16   0  160G  0 disk
├─vgpaas-dockersys  253:0    0   90G  0 lvm  /var/lib/containerd
└─vgpaas-kubernetes 253:1    0   10G  0 lvm  /mnt/paas/kubernetes/kubelet/pods/7704d6ff-d17a-4ac1-aea5-ac5d3473ac5b/volume-subpaths/ems-front/ems-front/0/mnt/paas/kubernetes/kubelet/pods/71f475b3-864d-45a1-a1c7-3ac312f1f356/volume-subpaths/ems-common-front/ems-common-front/1/mnt/paas/kubernetes/kubelet/pods/82325d8d-a562-4d6c-8fc3-415657dafeff/volume-subpaths/digital-twin-platform/digital-twin-platform/0/mnt/paas/kubernetes/kubelet/pods/e6b6e8d4-bc28-4d14-b127-cc4124b76dfa/volume-subpaths/iotdb-datanode-env/iotdb-confignode/2/mnt/paas/kubernetes/kubelet/pods/0e91bbdd-2396-4f75-b4ec-3d731178b0f4/volume-subpaths/kong-conf/proxy/9/mnt/paas/kubernetes/kubelet/pods/0e91bbdd-2396-4f75-b4ec-3d731178b0f4/volume-subpaths/header-filter/proxy/5/mnt/paas/kubernetes/kubelet/pods/0e91bbdd-2396-4f75-b4ec-3d731178b0f4/volume-subpaths/header-filter/proxy/4/mnt/paas/kubernetes/kubelet/pods/0e91bbdd-2396-4f75-b4ec-3d731178b0f4/volume-subpaths/base64-decode/proxy/3/mnt/paas/kubernetes/kubelet/pods/0e91bbdd-2396-4f75-b4ec-3d731178b0f4/volume-subpaths/base64-decode/proxy/2/mnt/paas/kubernetes/kubelet/pods/0e91bbdd-2396-4f75-b4ec-3d731178b0f4/volume-subpaths/method-rewrite/proxy/1

2.pvresize 扩容该云硬盘对应的物理卷

[09-12 17:11:25] root@ems-plus-uat-node3:~
$ pvdisplay--- Physical volume ---PV Name               /dev/sdbVG Name               vgpaasPV Size               100.00 GiB / not usable 4.00 MiBAllocatable           yesPE Size               4.00 MiBTotal PE              25599Free PE               1Allocated PE          25598PV UUID               L9FZIX-L2bg-Dwq6-mtme-uHZ7-EFey-dxEDr4# 扩容该云硬盘对应的物理卷
$ pvresize -v /dev/sdbResizing volume "/dev/sdb" to 335544320 sectors.Resizing physical volume /dev/sdb from 25599 to 40959 extents.Updating physical volume "/dev/sdb"Archiving volume group "vgpaas" metadata (seqno 3).Physical volume "/dev/sdb" changedCreating volume group backup "/etc/lvm/backup/vgpaas" (seqno 4).1 physical volume(s) resized or updated / 0 physical volume(s) not resized[09-12 17:11:49] root@ems-plus-uat-node3:~
$ pvdisplay--- Physical volume ---PV Name               /dev/sdbVG Name               vgpaasPV Size               <160.00 GiB / not usable 3.00 MiBAllocatable           yesPE Size               4.00 MiBTotal PE              40959Free PE               15361Allocated PE          25598PV UUID               L9FZIX-L2bg-Dwq6-mtme-uHZ7-EFey-dxEDr4

3. lvextend 扩容逻辑分区

$ lvsLV         VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdockersys  vgpaas -wi-ao---- <90.00gkubernetes vgpaas -wi-ao---- <10.00g# 对/dev/vgpaas/kubernetes 逻辑分区增加40GB,vg中剩余20GB,vgs可以看到剩余的
$ lvextend -L +40G /dev/vgpaas/kubernetesSize of logical volume vgpaas/kubernetes changed from <10.00 GiB (2559 extents) to <50.00 GiB (12799 extents).Logical volume vgpaas/kubernetes successfully resized.lvsLV         VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdockersys  vgpaas -wi-ao---- <90.00gkubernetes vgpaas -wi-ao---- <50.00gvgsVG     #PV #LV #SN Attr   VSize    VFreevgpaas   1   2   0 wz--n- <160.00g 20.00g

4. resize2fs 格式化逻辑分区

ext4的文件系统用resize2fs, xfs fs用xfs_growfs

$ df -h
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vgpaas-kubernetes  9.8G  3.6G  5.8G  39% /mnt/paas/kubernetes/kubelet$ resize2fs /dev/vgpaas/kubernetes
resize2fs 1.46.4 (18-Aug-2021)
Filesystem at /dev/vgpaas/kubernetes is mounted on /mnt/paas/kubernetes/kubelet; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 7
The filesystem on /dev/vgpaas/kubernetes is now 13106176 (4k) blocks long.$ df -HT /dev/mapper/vgpaas-kubernetes
Filesystem                    Type  Size  Used Avail Use% Mounted on
/dev/mapper/vgpaas-kubernetes ext4   53G  3.8G   47G   8% /mnt/paas/kubernetes/kubelet

参考

cce文档

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

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

相关文章

数据结构之红黑树的 “奥秘“

目录&#xff1a; 一.红黑树概念 二. 红黑树的性质 三.红黑树的实现 四.红黑树验证 五.AVL树和红黑树的比较 一.红黑树概念 1.红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何 一条从根…

YOLO配合 PYQT做自定义虚拟电子围-自定义绘制多边形虚拟电子围栏

电子围栏标注以及显示 1、目标检测&#xff1a; YOLO可以识别检测物体&#xff0c;这是众所周知的。使用YOLO来做目标检测&#xff0c;并获取坐标信息。 2、电子围栏 比如在监控中&#xff0c;指定一块区域&#xff0c;如果有目标进入&#xff0c;则发出警报&#xff0c;并提…

《基于深度半监督学习的目标检测综述》泛读

基于深度半监督学习的目标检测方法分为 1、生成式方法 2、一致性正则化方法 3、基于图的方法 4、伪标记方法和混合方法 然后基于常用数据集 对典型方法进行了性能对比&#xff0c;最后分析了其挑战和发展趋势&#xff0c;旨在为相关研究提供参考 收获就是&#xff1a; 1…

JMeter 入门之远程启动,服务模式,多机联测,负载均衡测试

本文主要介绍 JMeter 远程启动及使用多节点完成大并发测试&#xff08;负载均衡测试&#xff09;&#xff0c;主打一个压力山大&#xff0c;借用 黑神话&#xff1a;悟空 的技能来描述就是远程开大&#xff0c;释放猴子猴孙技能。 搜了一些 jmeter 的案例或教程&#xff0c;讲的…

MyBatis-Plus分页查询、分组查询

目录 准备工作1. 实体类2. Mapper类3. 分页插件4. 数据 分页查询1. 使用条件构造器2. 使用自定义sql 分组查询1. 分组结果类2. 自定义sql3. 测试类 准备工作 1. 实体类 对地址字段address使用字段类型转换器&#xff0c;将List转为字符串数组保存在数据库中 package com.exa…

Docker 部署 Redis (图文并茂超详细)

部署 Redis ( Docker ) [Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本 docker pull redis:7.0.12[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器 # 创建 Redis 相关目录 mkdir -p /data/redis/{conf,data,log…

探索Python中文拼音转换的奥秘:xpinyin库

文章目录 **探索Python中文拼音转换的奥秘&#xff1a;xpinyin库**背景介绍库简介安装指南函数使用示例应用场景常见问题与解决方案总结 探索Python中文拼音转换的奥秘&#xff1a;xpinyin库 背景介绍 在处理中文文本数据时&#xff0c;我们经常需要将中文字符转换为拼音。无…

【LabVIEW学习篇 - 23】:简单状态机

文章目录 简单状态机状态机的创建和了解状态机实现红绿灯 简单状态机 一个优秀的应用程序离不开好的程序框架&#xff0c;不仅要很好满足用户的功能需求&#xff0c;还要考虑到系统的稳定性、实时性、可扩展性、可维护性&#xff0c;执行效率等方面。借用一些成熟的设计框架&a…

【C++】string类的基本使用

一、string类的由来 在C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列 的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需要用户 自己管…

MBD_入门篇_23_SimulinkSinks

23.1 概述 Sink库里面是Simulink的显示或导出信号数据的模块&#xff0c;可以理解为信号的最后接收的模块&#xff0c;要么用于显示要么用于传递给更上层的系统要么终止。 Sink库里面的模块都只有输入&#xff0c;没有输出。 23.2 回顾常用模块 23.2.1 Display 用于实时仿真…

Computer Exercise

每日一练 单选题 在Word2003中&#xff0c;通过&#xff08;     D    &#xff09;不能设置字符格式。 A.格式菜单     B.格式工具栏     C.格式刷     D.常用工具栏数据库系统而言&#xff0c;主要通过权限和授权来实现安全管理&#xff0c;其中update权限表示&am…

数据库——MySQL概述

一、数据库 存储数据的仓库&#xff0c;数据是有组织的存储&#xff0c;简称database&#xff08;DB&#xff09; 二、数据库管理系统 操控和管理数据库的大型软件&#xff08;DBMS&#xff09; 三、SQL 操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库…

Leetcode面试经典150题-134.加油站

解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {/**如果只有一个加油站&#xff0c;那它本来就在那个为止&#xff0c;0就是它的编号?但是这只是你的想象&#xff0c;题目有个变态规定&#xff0c;自…

python-古籍翻译

题目描述 小理跑到外星人的图书馆去读书。有一本外星古籍&#xff0c;里面的内容是用八进制写成的&#xff1b;但小理只能处理十六进制的数据。请你帮忙写一个翻译软件&#xff0c;帮小理把八进制串翻译成十六进制串。 输入 仅一行&#xff0c;一个八进制字符串 s&#xff0…

创建Java项目,可实现main方法运行,实现对性能数据的处理

1、Android Studio无法执行Java类的main方法问题及解决方法 Android Studio无法执行Java类的main方法问题及解决方法_delegatedbuild-CSDN博客 D:\workspaces\performanceTools\.idea 文件夹下&#xff0c;gardle.xml ,添加依赖 <option name"delegatedBuild"…

QT:音视频播放器

目录 一.播放器设计 二.需要使用的控件 三.选择视频 四.播放视频 五.暂停视频 六.关闭视频 七.播放状态设置 八.切换视频(上一首) 九.切换视频(下一首) 十.设置视频滑块 十一.更新滑块显示 十二.实现效果 十三.代码设计 1.mainwindow.h 2.mainwindow.cpp 一.播放…

预警提醒并生成日志,便于后期追溯的智慧地产开源了

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 AI是新形势下数…

基于Springboot美食推荐小程序的设计与实现(源码+数据库+文档)

一.项目介绍 pc端&#xff1a; 支持用户、餐厅老板注册 支持管理员、餐厅老板登录 管理员&#xff1a; 管理员模块维护、 餐厅管理模块维护、 用户管理模块维护、 商品管…

NAT技术+代理服务器+内网穿透

NAT技术 IPv4协议中&#xff0c;会存在IP地址数量不充足的问题&#xff0c;所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的&#xff0c;而公网中的IP地址都是唯一的&#xff0c;所以NAT&#xff08;Network Address Translation&…

Pyspark下操作dataframe方法(1)

文章目录 Pyspark dataframe创建DataFrame使用Row对象使用元组与scheam使用字典与scheam注意 agg 聚合操作alias 设置别名字段设置别名设置dataframe别名 cache 缓存checkpoint RDD持久化到外部存储coalesce 设置dataframe分区数量collect 拉取数据columns 获取dataframe列 Pys…