Skip to content

1. 调度不均问题

bash

#!/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

#!/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

5-10分钟执行一次