k8s调度优化脚本
精选
原创
©著作权归作者所有:来自51CTO博客作者A赵承胜的原创作品,请联系作者获取转载授权,否则将追究法律责任
#! /bin/bash
#对实际使用内存大于75%的机器停止调度,对实际使用内存小于65%的
关闭调度
#
获取实际内存小于或等于65%的机器
memory_lt_65=`kubectl
top nodes |awk '{if($5+0<=65) print $1}'`
#
获取实际内存大于或等于75%的机器
memory_gt_75=`kubectl
top nodes |awk '{if($5+0>=75) print $1}'`
#获取已经关闭调度的机器
SchedulingDisabled=`kubectl
get nodes |egrep -v "control-plane|master" |grep SchedulingDisabled |
awk '{print $1}'`
# 如果有关闭调度的机器,判断其内存小于或等于65%,则放开调度
if [ -n
"$SchedulingDisabled" ];then
for node in $SchedulingDisabled ;do
if [[
$memory_lt_65 =~ $node ]];then
kubectl uncordon $node
fi
done
fi
#如果有内存大于或等于75%的机器,判断其是否停止调度,如果没有,则停止调度
if [ -n
"$memory_gt_75" ];then
for node in $memory_gt_75 ;do
if [[ $SchedulingDisabled =~ $node
]];then
echo
$node is aleady cordorned
else
kubectl cordon $node
fi
done
fi