简介:不知知道各位是如何清理的,我尝试过用阿里的任何一个面板清理,但是还要换页就很烦,所以自己就写了一个小脚本,更GOOD!的是你还可以把他放到你的定时任务里面去,为啥要这么做,不得不说,咱的集群有点小垃圾,不过那也没办法,集群也不敢动,谁知道啥时候崩了,锅谁来背,哈哈!
一个简单的不能再简单的shell脚本了
#!/bin/bash
source /etc/profile
printf "\n本次操作是用来清理集群内部状态为 Evicted 和 Failed 的Pod !\n"
printf "\nA. Aliyun-product B. Aliyun-test C. k8s-Intranet\n\n"
read -p "你需要清理的集群是:" mess
if [ $mess == A ];then
cluster=Aliyun-product
elif [ $mess == B ];then
cluster=Aliyun-test
elif [ $mess == C ];then
cluster=k8s-Intranet
fi
printf "\n以切换至您需要操作的集群!\n"
/usr/local/bin/kubecm switch $cluster > /dev/null
read -p "您是否需要选择清理 (yes/no): " judge
if [ $judge == yes ];then
echo "正在清理中,请勿 ctrl+c 中断操作!"
/usr/bin/kubectl get pods --all-namespaces -o go-template='{{range .items}} {{if (or (eq .status.phase "Evicted") (eq .status.phase "Failed" ))}} {{.metadata.name}}{{" "}} {{.metadata.namespace}} {{"\n"}}{{end}} {{end}}' | while read epod namespace; do kubectl -n $namespace delete pod $epod; done; >> /root/shell/pod/log/$mess-$(date +%Y-%m-%d-%H-%M-%S).txt
logfile=$mess-$(date +%Y-%m-%d-%H-%M-%S).txt
else
echo "正在停止并退出!"
exit
fi
if [ $? != 0 ];then
printf "\n在${cluster}集群未能清理成功\n"
elif [ ! -s ${logfile} ];then
printf "\n在${cluster}集群中没有可清理的POD\n"
/usr/bin/rm -rf /root/shell/pod/log/${logfile}
else
printf "\n在${cluster}集群以清理完毕!\n"
printf "\n清理的POD保存在/root/shell/pod/log/${logfile}中\n"
fi
/usr/local/bin/kubecm switch k8s-Intranet > /dev/null
里面使用到了kubecm工具去切换集群,估计你们也都有用过,如果没用过的小伙伴,可以去下载下,用法很简单。
然后加入定时任务,让他自己动起来文章来源:https://www.toymoban.com/news/detail-828853.html
00 */6 * * * /usr/bin/echo -e "A\nyes" | /bin/sh /root/shell/Clean-up-the-Failed-Evicted-pod.sh
最后,希望多多支持,点赞,也可以稍微的评论下,让我有点存在感!哈哈哈哈!文章来源地址https://www.toymoban.com/news/detail-828853.html
到了这里,关于清理k8s集群Evicted,Failed的Pod!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!