直接上脚本:
#! /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
参考资料: