k8s自动清理节点服务

news2024/7/5 7:56:34

要在 Kubernetes 中实现当某个节点的 CPU 或内存使用超过 90% 时清理该节点上的服务,你可以使用以下几种方法:

  1. 自定义脚本和 cron job:编写一个脚本监控节点的资源使用情况,并在超过阈值时触发清理操作。
  2. 使用 DaemonSet 运行监控容器:在每个节点上运行一个监控容器,监控资源使用情况并执行清理操作。
  3. Prometheus 和 Alertmanager:结合使用 Prometheus 和 Alertmanager 来监控资源使用情况,并在超过阈值时触发清理操作。

以下是使用自定义脚本和 cron job 实现的详细步骤:

步骤 1:编写监控和清理脚本

创建一个脚本(例如 cleanup.sh),该脚本将检查节点的 CPU 和内存使用情况,并在超过阈值时清理节点上的服务:

#!/bin/bash

# 设置阈值
CPU_THRESHOLD=90
MEM_THRESHOLD=90

# 获取节点的名称
NODE_NAME=$(hostname)

# 获取节点的 CPU 和内存使用情况
CPU_USAGE=$(kubectl top node $NODE_NAME --no-headers | awk '{print $3}' | sed 's/%//')
MEM_USAGE=$(kubectl top node $NODE_NAME --no-headers | awk '{print $5}' | sed 's/%//')

# 检查是否超过阈值
if [[ $CPU_USAGE -gt $CPU_THRESHOLD ]] || [[ $MEM_USAGE -gt $MEM_THRESHOLD ]]; then
    echo "Node $NODE_NAME CPU or Memory usage is above threshold. Cleaning up..."

    # 获取节点上的所有以 "svc" 开头的 Pod
    PODS=$(kubectl get pods --all-namespaces -o wide | grep $NODE_NAME | awk '{if ($2 ~ /^svc/) print $2" -n "$1}')

    # 删除节点上的所有以 "svc" 开头的 Pod
    for POD in $PODS; do
        kubectl delete pod $POD --grace-period=0 --force
    done
fi

步骤 2:在节点上设置 cron job

将脚本部署到每个节点上,并使用 cron job 定期运行该脚本:

  1. 将脚本复制到节点上(例如 /usr/local/bin/cleanup.sh):

    scp cleanup.sh user@node:/usr/local/bin/cleanup.sh
    
  2. 在每个节点上为脚本添加可执行权限:

    chmod +x /usr/local/bin/cleanup.sh
    
  3. 在每个节点上编辑 crontab 文件:

    crontab -e
    

    添加以下行来每 5 分钟运行一次脚本:

    */5 * * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
    

这样,脚本将每 5 分钟检查一次节点的 CPU 和内存使用情况,并在超过阈值时清理节点上的服务。

注意事项

  • 清理操作的影响:强制删除节点上的 Pod 可能会影响你的服务。确保在清理之前有足够的冗余和容错机制。
  • 权限:确保运行脚本的用户有足够的权限执行 kubectl 命令。
  • 改进:可以改进脚本,使其更智能,比如只删除特定命名空间的 Pod,或者优先删除低优先级的 Pod。

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

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

相关文章

imagesc函数 纵坐标翻转 colormap “set” “jet“

纵坐标默认上小下大 翻转: 在Matlab中,使用imagesc函数绘制的图像的纵坐标默认是从上到下递增的,即下面的值较大,上面的值较小。如果想要翻转纵坐标,使之从上到下递增,可以通过设置坐标轴的YDir属性为’n…

【Python机器学习】模型评估与改进——带交叉验证的网格搜索

虽然将数据划分为训练集、验证集、测试集的方法是可行的,也相对常用,但这种方法对数据的划分相当敏感,为了得到对泛化性能的更好估计,我们可以使用交叉验证来评估每种参数组合的性能,而不是仅将数据单次划分为训练集与…

Git入门 本地仓库 远端仓库 多分支

Git入门 Git入门本地git初始化git仓库初始化 创建远端仓库githubgitee 指定远端仓库推送至远端多分支将feature分支合并至dev分支 其他开发者 Git入门 本地git初始化 git仓库初始化 mkdir myrepo # 创建仓库文件夹 cd myrepo/ # 进入目录 git init # 初始化git仓库 (创建.g…

BMA456 运动传感器

型号简介 BMA456是博世(bosch-sensortec)的一款超小型、三轴、低重力高性能加速度传感器,配备数字接口。该传感器适用于低功耗且要求严格的消费电子应用。它可以检测手腕倾斜、按压/双击,并支持即插即用计步功能,尤其适…

让新质生产力照进现实,智慧数据基础设施需要软硬兼施

数智化时代,什么才是企业与组织最大的差异化竞争力? 答案无疑是:数据。在生成式AI技术日新月异之际,发展新质生产力已成为产业共识,越来越多的企业意识到:数据乃一切运作的基础,是企业拥抱AI浪…

【信息系统项目管理师】18年~23年案例概念型知识

文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…

Thinking--Promise解决动态挂载静态资源重复问题

Thinking系列,旨在利用10分钟的时间传达一种可落地的编程思想。 #mermaid-svg-MQ0o4hbZOvkQJra0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MQ0o4hbZOvkQJra0 .error-icon{fill:#552222;}#mermaid-s…

嵌入式Linux系统编程 — 6.3 kill、raise、alarm、pause函数向进程发送信号

目录 1 kill函数 1.1 kill函数介绍 1.2 示例程序 2 raise函数 2.1 raise函数介绍 2.2 示例程序 3 alarm函数 3.1 alarm函数介绍 3.2 示例程序 4 pause函数 4.1 pause函数介绍 4.2 示例程序 与 kill 命令相类似, Linux 系统提供了 kill()系统调用&#…

仿全民飞机大战射击网页游戏源码

仿全民飞机大战设计网页游戏源码,画质精美的飞机大战手机端游戏源码 微信扫一扫免费下载源码

搞管理千万别犯这3大禁忌,否则活该你当不了领导,切忌!

搞管理千万别犯这3大禁忌,否则活该你当不了领导,切忌! 禁忌一:不懂放权 美国总统罗斯福曾说过:“一个最好的管理者,很擅长知人善任。当下属在从事其职务时,管理者要懂得约束自己,不…

MyBatis入门案例

实施前的准备工作: 1.准备数据库表2.创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok)3.在application.properties文件中引入数据库连接信息4.创建对应的实体类Emp(实体类属性采用驼峰…

一文揭秘:CRM如何助力家居建材企业可持续发展?

01、家居建材行业业务高速发展,对数字化转型提出越来越高诉求 家居建材行业是国民经济的重要基础产业,是改善人居条件、治理生态环境和发展循环经济的重要支撑。家居建材是土木工程和建筑工程中使用材料的统称,包括天花板、瓷砖、门、窗、锁…

VGPU的使用

(作者:陈玓玏) 开源项目,欢迎star哦,https://github.com/data-infra/cube-studio 训练AI模型以及部署模型推理服务时,GPU往往是必不可少的,但当我们机器上没有足够的GPU卡可使用时&#xf…

如何选择品牌推广公司?哪家好?收费标准及评价!

不管是什么品牌,推广对公司的成败起了很关键的作用。然而,面对市面上琳琅满目的品牌推广公司,如何选择一家既熟悉又靠谱的公司,成为许多企业主面临的难题。 作为一家手工酸奶品牌的创始人,目前全国也复制了100多家门店…

PyInstaller exe文件报错

文章目录 包找不到的问题去掉黑窗口 包找不到的问题 遇到的问题 : 打包好了之后exe文件报错: 没有找到这个文件 1.当时打包的 有这个文件main.spec 打开它找到hiddenimports ,填上差的包 2, 删除build和dist 3,在当前命令行下执行pyinstaller main.spec打包生成exe 去掉黑…

Polygon链的对接及使用

Polygon(前身为Matic Network)是一个基于以太坊的侧链,旨在解决以太坊网络拥堵和高昂 gas 费的问题。Polygon 使用侧链技术将交易从以太坊主网转移到自己的侧链上,从而提高交易速度和降低 gas 费。北京木奇移动技术有限公司&#…

DFS练习

105 从前序与中序遍历序列构造二叉树 import java.util.HashMap; import java.util.Map;class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val val;} }public class Letcode105 {public TreeNode bulidTree(int[] preOrder, int[] inOrd…

【RabbitMQ实战】邮件发送(直连交换机、手动ack)

一、实现思路 二、异常情况测试现象及解决 说明:本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机制 、消费确认机制 、消息的重新投递 、消费幂等性, 二、实现思路 1.简略介绍163邮箱授权码的获取 2.编写发送邮件工具类 3.编写RabbitMQ配置文件 4.生产者发起调用…

linux内核驱动第一课(基于RK3568)

学习Linux驱动需要以下基础知识: C语言编程:掌握C语言是开发Linux驱动程序的基本要求。操作系统原理:了解操作系统的基本概念和原理,如进程管理、内存管理、中断处理等。Linux内核:熟悉Linux内核的结构和工作机制&…

DreamTech联合南大和牛津发布最强3D内容生成大模型——Direct3D

文章链接:https://arxiv.org/pdf/2405.14832 github链接:https://nju-3dv.github.io/projects/Direct3D/ 从文本和图像生成高质量的3D资产一直是一项挑战,主要是由于缺乏能够捕捉复杂几何分布的可扩展3D表示。在这项工作中,介绍…