k8s 检测node节点内存使用率平衡调度脚本 —— 筑梦之路

直接上脚本:

#! /bin/bash

#对实际使用内存大于85%的机器停止调度,对实际使用内存小于70%的 关闭调度

# 获取实际内存小于或等于70%的机器
memory_lt_70=`kubectl top nodes |awk 'NR>1{if($5+0<=70) print $1}'`
# 获取实际内存大于或等于85%的机器
memory_gt_85=`kubectl top nodes |awk 'NR>1{if($5+0>=85) print $1}'`
#获取已经关闭调度的机器
SchedulingDisabled=`kubectl get nodes |egrep -v "control-plane|master" |grep SchedulingDisabled | awk '{print $1}'`

 # 如果有关闭调度的机器,判断其内存小于或等于70%,则放开调度
if  [ -n  "$SchedulingDisabled" ];then
    for node in $SchedulingDisabled ;do
        if [[  $memory_lt_70 =~ $node ]];then
           kubectl  uncordon $node
        fi
    done
fi
#如果有内存大于或等于85%的机器,判断其是否停止调度,如果没有,则停止调度
if  [ -n  "$memory_gt_85" ];then
    for node in $memory_gt_85 ;do
        if [[ $SchedulingDisabled =~ $node ]];then
           echo  $node is aleady cordorned
        else
           kubectl  cordon $node
        fi
    done
fi

参考资料:

一招完美解决k8s调度不均问题

你可能感兴趣的:(linux系统运维,虚拟化,云计算,kubernetes,docker,linux)