当前位置: 首页 > news >正文

k8s自动清理pod脚本分享

检查会遇到集群节点内存消耗超过90%,我们可以筛选一些可以进行重启的pods,如脚本中涉及svc-开头的,进行触发即重启的shell编写。此项会涉及metrics组件需要安装。

#!/bin/bash# 设置内存使用率阈值为90%
MEMORY_THRESHOLD=90# 初始化一个数组来存储需要处理的节点名
EXCEED_NODES=()# 获取所有节点的内存使用信息
NODES=$(sudo kubectl top node)# 逐行处理节点信息
while IFS= read -r line; do# 跳过表头行if [[ $line =~ ^NAME ]]; thencontinuefi# 提取节点名称和内存使用百分比NODE=$(echo "$line" | awk '{print $1}')MEMORY_PERCENT=$(echo "$line" | awk '{print $4}' | tr -d '%')# 检查是否超过阈值if [[ $MEMORY_PERCENT -gt $MEMORY_THRESHOLD ]]; thenEXCEED_NODES+=("$NODE")echo "Node $NODE memory usage is over $MEMORY_THRESHOLD%, checking for svc- prefixed Pods..."elseecho "Node $NODE is within acceptable memory usage."fi
done <<< "$(echo "$NODES" | awk '/^[^[:space:]]/ {print}')"# 特定命名空间
NAMESPACE="test"# 对于每一个超过阈值的节点,查找并重启svc-开头的Pods
for NODE in "${EXCEED_NODES[@]}"; do# 获取该节点上所有名称以svc-开头的PodsPODS=$(sudo kubectl get pods -n $NAMESPACE -o wide | grep "$NODE" | grep "^.*\ssvc-" | awk '{print $1}')# 如果有符合条件的Pods,则尝试删除它们if [ -n "$PODS" ]; thenfor POD in $PODS; dosudo kubectl delete pod $POD -n $NAMESPACEecho "Deleted Pod $NAMESPACE/$POD"doneelseecho "No svc- prefixed Pods found on Node $NODE."fi
done# 输出最终状态
if [ ${#EXCEED_NODES[@]} -eq 0 ]; thenecho "No Pods deleted, all nodes are below the threshold."
elseecho "Some Pods were deleted due to high memory usage."
fi

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • netty编程之基于websocket发送二进制数据
  • 案例精选 | 聚铭助力河北省某市公安局筑牢网络安全防护屏障
  • Python计算机视觉编程 第十章 OpenCV
  • 2024考研数学真题解析-数二:
  • 图的应用(拓扑排序)
  • Linux:Bash中的文件描述符
  • C语言 | Leetcode C语言题解之题409题最长回文串
  • 深入分析几个难以理解的Comparator源码
  • 心觉:小时候常听到的这些教导,正在禁锢你的人生,该翻身了
  • 小程序开发设计-第一个小程序:注册小程序开发账号②
  • C# 比较对象新思路,利用反射技术打造更灵活的比较工具
  • 【MYSQL表的增删改查(进阶)】
  • 【JS】path的使用说明
  • 105.游戏安全项目-基址的技术原理-分析技巧
  • Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • HTTP请求重发
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript中的对象个人分享
  • mysql 5.6 原生Online DDL解析
  • Redux系列x:源码分析
  • SQLServer插入数据
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vuex 学习笔记 01
  • windows下如何用phpstorm同步测试服务器
  • 高程读书笔记 第六章 面向对象程序设计
  • 解决iview多表头动态更改列元素发生的错误
  • 写给高年级小学生看的《Bash 指南》
  • 新手搭建网站的主要流程
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​Linux·i2c驱动架构​
  • ​插件化DPI在商用WIFI中的价值
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #define,static,const,三种常量的区别
  • #if #elif #endif
  • $.ajax,axios,fetch三种ajax请求的区别
  • $.ajax中的eval及dataType
  • (2.2w字)前端单元测试之Jest详解篇
  • (javascript)再说document.body.scrollTop的使用问题
  • (SpringBoot)第七章:SpringBoot日志文件
  • (zhuan) 一些RL的文献(及笔记)
  • (笔试题)分解质因式
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)理解angular中的module和injector,即依赖注入
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (译) 函数式 JS #1:简介
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转载)Linux 多线程条件变量同步
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)