联系管理员

开通文章发布权限

扫码 添加微信
微信图片
电话:18888888888 QQ:

优雅清理 Kubernetes 集群中的 Evicted Pod:保障资源健康与服务稳定

要删除 Kubernetes 集群中处于 Evicted 状态的 Pod,可以按照以下步骤操作:

1. 查看 Evicted 状态的 Pod

确认当前集群中存在哪些 Evicted 的 Pod:

kubectl get pods --all-namespaces | grep "Evicted"

输出示例:

default    my-pod-123   0/1     Evicted    0          2d

2. 手动删除单个 Evicted Pod

直接通过 kubectl delete 删除指定命名空间和 Pod:

kubectl delete pod <pod-name> -n <namespace>

示例:

kubectl delete pod my-pod-123 -n default

3. 批量删除所有 Evicted Pod

通过组合命令一次性删除所有 Evicted 状态的 Pod:

方法一:使用 kubectlawk

kubectl get pods --all-namespaces | grep "Evicted" | awk '{print $1 " " $2}' | xargs -n2 kubectl delete pod -n $1 $2

方法二:使用 kubectljsonpath(推荐)

kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.status.reason=="Evicted")]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}' | xargs -n2 kubectl delete pod -n $1 $2

4. 自动化清理(可选)

如果频繁出现 Evicted Pod,可通过以下方式定期清理:

创建 CronJob 自动清理

apiVersion: batch/v1
kind: CronJob
metadata:
  name: clean-evicted-pods
spec:
  schedule: "0 0 * * *"  # 每天午夜执行
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: kubectl
            image: bitnami/kubectl:latest
            command:
            - /bin/sh
            - -c
            - 'kubectl get pods --all-namespaces -o jsonpath='\''{range .items[?(@.status.reason=="Evicted")]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'\'' | xargs -n2 kubectl delete pod -n $1 $2'
          restartPolicy: OnFailure

5. 分析 Evicted 原因

删除 Pod 后,建议排查根本原因以避免再次发生:

  1. 资源不足

    • 检查节点资源(CPU、内存、磁盘)是否不足:

      kubectl describe node <node-name>

    • 调整 Pod 的资源请求(requests/limits)。

  2. 节点问题

    • 检查节点状态是否正常:

kubectl get nodes
kubectl describe node <node-name>

- 重启异常节点或修复底层问题(如磁盘空间不足)。

  1. Pod 配置

    • 检查 Pod 的重启策略(restartPolicy)是否合理。

- 确保应用能优雅处理终止信号。

总结

  • 删除 Evicted Pod:通过 kubectl delete 或批量脚本清理。

  • 预防措施:优化资源分配、监控节点健康、调整 Pod 配置。

  • 自动化维护:使用 CronJob 定期清理,减少手动操作。

相关文章

neo4j部署手册
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
DataX和DataX-WEB 安装步骤
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、 MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
K8S集群搭建手册(集群版)
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Apollo部署手册
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

评论

快捷导航

把好文章收藏到微信

打开微信,扫码查看

关闭

还没有账号?立即注册