清理k8s集群Evicted,Failed的Pod!

这篇具有很好参考价值的文章主要介绍了清理k8s集群Evicted,Failed的Pod!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:不知知道各位是如何清理的,我尝试过用阿里的任何一个面板清理,但是还要换页就很烦,所以自己就写了一个小脚本,更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工具去切换集群,估计你们也都有用过,如果没用过的小伙伴,可以去下载下,用法很简单。

然后加入定时任务,让他自己动起来

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s搭建集群报错failed to set up sandbox container “xxx“ network for pod “coredns-xxx“:networkPlugin cni fa

    今天在搭建k8s集群时发现coredns一直处于containerCreating状态,如下图所示: 到相应的node节点上查看日志去排查问题: kubectl describe pods -n kube-system coredns-66bff467f8-n7q8f 发现报错的日志如下图: 我的是因为之前部署的时候选择了calico网络插件,这次启动选的是flannel,导致node节点上

    2024年02月16日
    浏览(37)
  • k8s kubectl 启动失败Unit kubelet.service entered failed state.

    怀疑是配置文件的路径出现问题 使用命令查看具体的报错信息: 报错显示没有 /usr/local/bin/kubelet 这个文件或目录,实际ls查看是有的。 此时配置文件存在,怀疑是路径出现问题,找不到。后来检查kubelet.service文件,发现配置了 “WorkingDirectory”,给它指定了工作目录。重新

    2024年01月16日
    浏览(51)
  • kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)

    现如今是一个 万物皆上云 的时代,各种云层出不穷,但是大多数云的容器管理平台基本都是基于kubernetes的。 kubernetes 是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器—-Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布

    2024年02月03日
    浏览(42)
  • K8S集群Token过期处理方法以及Kubectl命令无法使用的问题解决

    使用Kubeadm方式部署的K8S集群,在初始化的时候生成的Token的有效期为1天,当过期之后Token就无法使用了,也就意味着,在Node节点执行 kubeadm join 命令加入K8S集群时就会失败,可以通过下面的方法重新生成Token。 1)创建Token

    2024年02月16日
    浏览(37)
  • K8S集群中Pod与Pod之间网络故障排查思路

    在K8S集群中,可能会出现Pod与Pod之间无法通信的现象,也就是说Pod无法跨Node主机进行通信,Pod与Pod之间网络不通讯会导致无法请求Pod中的服务,Apiserver也可能会无法获取Pod的运行状态,产生一系列问题。 Pod与Pod之间网络不通讯,很有可能是网络组件产生了异常导致的。 排查

    2024年01月16日
    浏览(40)
  • k8s集群pod中文件导出到本地

    首先在k8s集群中先找到pod主机;  确定pod容器主机ip为192.168.1.113;等到113主机查看docker ps;发现113上没有docker命令; rpm -qa |grep contain; top; ps  aux |grep docker ; 查询主机上实现docker的方式;    crictl ps;查询pod容器;  容器中没有tar命令的话可以尝试:在主机上 crictl  cp  容器

    2024年02月11日
    浏览(30)
  • k8s集群pod和node状态监控

    curl -L -O https://raw.githubusercontent.com/gjeanmart/kauri-content/master/spring-boot-simple/k8s/kube-state-metrics.yml 修改namespace为dev(default也行,但是后面的metricbeat安装也需要修改namespace为default)。 kubectl create -f kube-state-metrics.yml curl -L -O https://raw.githubusercontent.com/elastic/beats/7.6/deploy/kubernetes/metr

    2024年04月09日
    浏览(43)
  • k8s Failed to create pod sandbox错误处理

    错误信息: Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image \\\"k8s.gcr.io/pause:3.2\\\": failed to pull image \\\"k8s.gcr.io/pause:3.2\\\": failed to pull and unpack image \\\"k8s.gcr.io/pause:3.2\\\": failed to resolve reference \\\"k8s.gcr.io/pause:3.2\\\": failed to do request: Head \\\"https://k8s.gcr.io/v2/pause/manifests/3.2\\\": dial

    2024年02月16日
    浏览(103)
  • K8s错误处理:Failed to create pod sandbox

    K8s创建Pod时,使用kubectl describe命令查看Pod事件,发现在拉取镜像前出现报错,报错内容为: 该文件为DNS配置文件,一般由systemd-resolved服务管理,不能由用户修改。那些指点的人说把Master里的复制一份到Node中的人,实际上是行不通的。 如果你的systemd-resolved服务状态是active的

    2024年02月12日
    浏览(45)
  • K8S集群中Pod资源处于ImagePullBackOff状态排查思路

    ImagePullBackOff状态表示容器的镜像拉取失败,可能存在以下几点原因: 拉取镜像时间较长导致超时,从而导致镜像拉取失败,部署完Docker后,一定要添加上阿里云的镜像加速器,否则拉取镜像是非常慢的,很容易就会导致镜像拉取失败。 镜像配置有误,指定的镜像在公有仓库

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包