pod平均调度到不通的node节点
将已经部署当前应用的Node 设置为不可调度;
获取部署当前应用且包含多个该应用 POD 的POD Name,删除该 POD, k8s 自动重新调度部署该 POD 到可调度的 Node 上;
如果还有未平均分布的 Node,多次循环执行以上操作;
将所有设置为不可调度的 Node 恢复为可以调度

#!/bin/bash
## 设置 已经包含应用的Node为不可调度
for i in $(kubectl get nodes|grep Ready|awk '{print $1}') 
do
    echo $i
    check_results=$(kubectl describe node $i | grep {app_name} | awk "{print $2}"|wc -l)
    if (( $check_results > 0 )); then
       echo $check_results
       kubectl cordon $i 
    fi
done
## 删除多个 POD 部署的
for i in $(kubectl get nodes|grep Ready|awk '{print $1}')
do
    echo $i
    check_results=$(kubectl describe node $i | grep {app_name} | awk "{print $2}"|wc -l)
    if (( $check_results > 1 )); then
       echo $check_results
       check_results=$(kubectl describe node $i | grep {app_name} | awk '{print $2}'|head -1)
       echo $check_results
       kubectl delete pods $check_results --grace-period=0 --force -n {app_name}
    fi
done

## 设置 恢复Node 为可调度
for i in $(kubectl get nodes|grep Ready|awk '{print $1}') 
do
    echo $i
    kubectl uncordon $i 
done
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐