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 ]]; then
        continue
    fi
    
    # 提取节点名称和内存使用百分比
    NODE=$(echo "$line" | awk '{print $1}')
    MEMORY_PERCENT=$(echo "$line" | awk '{print $4}' | tr -d '%')
    
    # 检查是否超过阈值
    if [[ $MEMORY_PERCENT -gt $MEMORY_THRESHOLD ]]; then
        EXCEED_NODES+=("$NODE")
        echo "Node $NODE memory usage is over $MEMORY_THRESHOLD%, checking for svc- prefixed Pods..."
    else
        echo "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-开头的Pods
    PODS=$(sudo kubectl get pods -n $NAMESPACE -o wide | grep "$NODE" | grep "^.*\ssvc-" | awk '{print $1}')
    
    # 如果有符合条件的Pods,则尝试删除它们
    if [ -n "$PODS" ]; then
        for POD in $PODS; do
            sudo kubectl delete pod $POD -n $NAMESPACE
            echo "Deleted Pod $NAMESPACE/$POD"
        done
    else
        echo "No svc- prefixed Pods found on Node $NODE."
    fi
done

# 输出最终状态
if [ ${#EXCEED_NODES[@]} -eq 0 ]; then
    echo "No Pods deleted, all nodes are below the threshold."
else
    echo "Some Pods were deleted due to high memory usage."
fi
相关推荐
xht08322 分钟前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构
sszdzq13 分钟前
docker 安装 Nginx
nginx·docker·容器
jianghao202515 分钟前
realesrgan-gui跨平台使用指南:Win/Mac/Linux全支持
linux·windows·mac·跨平台软件·realesrgan-gui
Stark-C15 分钟前
专为NAS用户打造的导航页,支持Docker管理,极空间部署FlatNas
运维·docker·容器
你才是臭弟弟18 分钟前
时序数据库(社区版)TDengine TSDB(安装/Docker版本)
docker·时序数据库·tdengine
小码吃趴菜26 分钟前
服务器预约系统linux小项目-第二节课
linux·运维·服务器
路溪非溪27 分钟前
关于Linux中的日志问题
linux·arm开发·驱动开发
小王不爱笑13227 分钟前
深入浅出 Docker 核心知识点,解锁容器化技术精髓
java·spring boot·docker
linux修理工30 分钟前
ip a 命令解析与 IP 地址提取
linux·服务器·php
万象.32 分钟前
Linux网络层相关知识及报文格式
linux·网络·智能路由器