首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过Linux Cron Job/Kubernetes cron job从k8s中删除被逐出的pod

通过Linux Cron Job/Kubernetes cron job从k8s中删除被逐出的pod,可以使用以下步骤:

  1. 创建一个脚本文件,用于删除被逐出的pod。可以使用任何你熟悉的编程语言编写脚本,比如Python、Shell等。以下是一个示例的Python脚本:
代码语言:txt
复制
import subprocess

def delete_evicted_pods():
    # 使用kubectl命令获取被逐出的pod列表
    cmd = "kubectl get pods --field-selector=status.phase=Failed -o json | jq '.items[] | select(.status.reason!=null) | .metadata.name'"
    process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()

    if process.returncode == 0:
        # 解析获取到的pod名称列表
        pod_names = stdout.decode().strip().split("\n")

        # 逐个删除被逐出的pod
        for pod_name in pod_names:
            delete_cmd = f"kubectl delete pod {pod_name}"
            subprocess.run(delete_cmd, shell=True)
    else:
        print("Failed to get evicted pods:", stderr.decode())

delete_evicted_pods()
  1. 将脚本文件保存为delete_evicted_pods.py
  2. 在Linux上设置一个Cron Job,定期执行该脚本。打开终端,输入以下命令进入Cron Job编辑模式:
代码语言:txt
复制
crontab -e
  1. 在编辑模式中,添加以下行来设置Cron Job,每小时执行一次脚本:
代码语言:txt
复制
0 * * * * python /path/to/delete_evicted_pods.py

确保将/path/to/delete_evicted_pods.py替换为实际脚本文件的路径。

  1. 保存并退出编辑模式。

现在,Linux Cron Job将每小时执行一次脚本,删除被逐出的pod。

对于Kubernetes cron job,可以使用以下步骤:

  1. 创建一个Cron Job的配置文件,比如delete-evicted-pods.yaml,内容如下:
代码语言:txt
复制
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: delete-evicted-pods
spec:
  schedule: "0 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: delete-evicted-pods
            image: <your-image>
            command: ["python", "/path/to/delete_evicted_pods.py"]
          restartPolicy: OnFailure

确保将<your-image>替换为包含脚本文件的镜像名称。

  1. 使用kubectl命令创建Cron Job:
代码语言:txt
复制
kubectl apply -f delete-evicted-pods.yaml
  1. Kubernetes将根据配置文件中的计划任务定期创建一个Job来执行脚本。

这样,Kubernetes cron job将每小时执行一次脚本,删除被逐出的pod。

请注意,以上示例脚本和配置文件仅供参考,你需要根据实际情况进行调整和修改。另外,腾讯云提供了一系列与Kubernetes相关的产品和服务,你可以根据自己的需求选择适合的产品。具体产品介绍和链接地址请参考腾讯云官方文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【重识云原生】第六章容器基础6.4.8节——CronJob

1.1 介绍        CronJob控制器以Job控制器资源为其管控对象,并借助它管理pod资源对象,Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux...的时区。         如果你的控制平面在 Pod 或是裸容器中运行了 kube-controller-manager, 那么为该容器所设置的时区将会决定 Cron Job 的控制器所使用的时区。...它指定了如何处理被 Cron Job 创建的 Job 的并发执行。...、pod一起被删除。 ...博客Kubernetes实战(八)-定时任务(Cronjob)_张志翔 ̮的博客-CSDN博客Kubernetes K8S之资源控制器Job和CronJob详解 - 踏歌行666 - 博客园7.深入k8s

1.5K30
  • ASP.NET Core on K8S深入学习(3-2)DaemonSet与Job

    中的DaemonSet   在K8S中,就有一些默认的使用DaemonSet方式运行的系统组件,比如我们可以通过下面一句命令查看: kubectl get daemonset --namespace=kube-system...Node节点上(这里是我的K8S集群中的所有节点了),且每个节点上只有一个Pod副本。...二、Job 2.1 关于Job   对于ReplicaSet、Deployment、DaemonSet等类型的控制器而言,它希望Pod保持预期数目并且持久运行下去,除非用户明确删除,否则这些对象一直存在...PS:这里用到了一个busybox的镜像,busybox是一个软件工具箱,里边集成了Linux中几百个常用的Linux命令以及工具。...2.3 CronJob的创建与运行   我们都知道在Linux中,Cron程序可以定时执行任务,而在K8S中也提供了一个CronJob帮助我们实现定时任务。

    59610

    k8s实践(14)--scheduler调度器和pod调度策略

    二、Pod调度 在Kubernetes系统中,Pod在大部分场景下都只是容器的载体而已,通常需要通过RC、Deployment、DaemonSet、Job等对象来完成Pod的调度和自动控制功能。...,如果 Pod 正在运行,所在节点都被加入一个匹配的 Taint,则这个 Pod 会持续在这个节点上存活 3600s 后被逐出。...五、Job批处理调度 Kubernetes 从 1.2 版本开始支持批处理类型的应用,我们可以通过 Kubernetes Job 资源对象来定义并启动一个批处理任务。...六、Cronjob:定时任务 Kubernetes 从 1.5 版本开始增加了一种新类型的 Job,即类似 Linux Cron 的定时任务 Cron Job,下 1、定义定时Cronjob。...其次,需要掌握 Cron Job 的定时表达式,它基本上照搬了 Linux Cron 的表达式,区别是第1位是分钟而不是秒, 格式如下: Minutes Hours DayofMonth Month DayofWeek

    3.3K32

    Kubernetes(k8s)-CronJob介绍

    Kubernetes(k8s)中的CronJob是一个用于定时执行任务的资源对象。...CronJob类似于Linux系统中的cron作业(Linux日常运维-任务计划crontab),它允许你按照预定的时间表(基于Cron格式的表达式)运行容器。...schedule: Cron格式的字符串,定义了Job的执行时间表,也遵循和Linux任务计划一样的时间规划:分钟,小时,日期,月份,星期。...如果 Job 应该在10:00:00开始,但由于节点故障直到10:01:00才恢复,那么从10:01:00开始计算,Job 有200秒的时间窗口来启动。...如果超过了这个时间窗口 Pod 还没有启动,Kubernetes 将不再尝试启动该 Job,并将其标记为失败。 concurrencyPolicy: 定义了如何处理Job的并发执行。

    3400

    【云原生 | Kubernetes篇】Kubernetes(k8s)工作负载(九)

    、Job Kubernetes中的 Job 对象将创建一个或多个 Pod,并确保指定数量的 Pod 可以成功执行到进程正常结束: 当 Job 创建的 Pod 执行成功并正常结束时,Job 将记录成功结束的...#job超时以后 已经完成的不删,正在运行的Pod就删除#单个Pod时,Pod成功运行,Job就结束了#如果Job中定义了多个容器,则Job的状态将根据所有容器的执行状态来变化。...一个 CronJob 对象类似于 crontab (cron table) 文件中的一行记录。该对象根据 Cron 格式定义的时间计划,周期性地创建 Job 对象。...垃圾收集器如何删除从属对象当删除某个对象时,可以指定该对象的从属对象是否同时被自动删除,这种操作叫做级联删除(cascading deletion)。...级联删除有两种模式:后台(background)和前台(foreground)如果删除对象时不删除自动删除其从属对象,此时,从属对象被认为是孤儿(或孤立的 orphaned)通过参数 --cascade

    88261

    etcd自动备份与恢复

    备份 kubernetes中部署的应用的信息都存放在etcd里面,这里面的数据非常重要,需要备份,以备不时之需。定时任务的pod要和etcd在同一个node上面。...执行备份任务的Job镜像对应的etcd版本,需要和被备份的etcd版本一致,本方案也提供了etcd镜像的制作方法。...执行备份任务的Job通过调用entrypoint.sh来完成etcd的备份,而entrypoint.sh脚本通过ConfigMap挂载到Job对应的Pod中。...如果需要支持其它存储方案,只需通过ConfigMap将实现存储对接的entrypoint.sh脚本挂载到Job对应的Pod中即可。...通过volumeMounts将etcd证书信息映射到执行备份任务的Job对应的Pod目录。例如,本示例中etcd证书位于/etc/kubernetes/pki/etcd目录下。

    3.8K50

    Kubernetes Job 与 CronJob

    ~]# cat /date/date.txt Sat Dec 22 16:09:48 UTC 2018 pod 重启策略 在 Job 中,pod 的重启策略 restartPolicy 不允许被设置成...首先,Job Controller 控制的直接就是 pod; 在整个 Job 的作业过程中,Job Controller 根据实际在 Running 的 pod 数、已成功退出的 pod 数、parallelism...每个 pod 创建时,去队列里获取一个 task,完成后将其从队列里删除,直到完成了定义的 completions 数。.../job-wq-2 restartPolicy: OnFailure CronJob Kubernetes 在 v1.5 开始引入了 CronJob 对象,顾名思义,就是定时任务,类似 Linux...对象的控制器,需要定义一个 Job 的模板,即 jobTemplate 字段;另外,其定时表达式 schedule 基本上照搬了 Linux Cron 的表达式: # ┌───────────── minute

    99620

    kubectl使用技巧

    # 一、使用kubectl查询、创建、编辑和删除资源 对于刚开始使用命令行工具的开发者,最保险的方法是提出问题(读取操作),而不是发出命令(写入操作),所以从使用 get 命令开始是个不错的选择。...Kubectl get 使用 get 命令可以获取当前集群中可用的资源列表,包括: Namespace Pod Node Deployment Service ReplicaSet 每个 get 命令都能提供集群中可用资源的详细信息...我们可以用 kubectl 在集群中创建任何类型的资源,包括: Service Cronjob Deployment Job Namespace(ns) 其中,一些资源的创建需要设置配置文件、命名空间以及资源名称...虽然也可以通过命令行 standard in (STNIN) 来完成,但 apply 命令更好一些,因为它可以让你知道如何使用集群,以及要应用哪种配置文件。...Kubectl logs 虽然 describe 命令可以让你知道 Pod 内部应用程序发生的事,但 logs 命令可以提供 Kubernetes 中 Pod 的更多详细信息。

    24710

    关机了 cron job 怎么办,开机后还会再执行吗?

    为了解决这个问题,又一个辅助工具被开发出来了——anacron, ana 是 anachronistic(时间错误) 的缩写。anacron 通过文件的时间戳来追踪任务的上次运行时间。...apscheduler 中的几个概念: triggers,触发的计算引擎,apscheduler 除了支持 cron 之外,还支持 date 和 interval 两种; job store,用于记录每次的运行结果..., EVENT_JOB_EXECUTED | EVENT_JOB_ERROR) K8S 中的 cron job 在 kubernetes 中,除了 deployment 以外,我们也可以构建一次性或者定时运行的...cluster restartPolicy: OnFailure 在 K8S 中,我们可以通过 .spec.concurrencyPolicy 来控制最多有多少个实例运行。...K8S 建议每个 cron job 最好是幂等的,以免并发执行造成不可预料的结果。

    1.5K20

    Kubernetes K8S之资源控制器Job和CronJob详解

    Pod成功完成后,Job将跟踪成功完成的情况。当达到指定的成功完成次数时,任务(即Job)就完成了。删除Job将清除其创建的Pod。...一个简单的情况是创建一个Job对象,以便可靠地运行一个Pod来完成。如果第一个Pod发生故障或被删除(例如,由于节点硬件故障或节点重启),则Job对象将启动一个新的Pod。...Job对象在完成后也将保留下来,以便您查看其状态。 当我们删除Job对象时,对应的pod也会被删除。...CronJob Cron Job 创建是基于时间调度的 Jobs 一个 CronJob 对象就像 crontab (cron table) 文件中的一行。...相关阅读 1、Kubernetes K8S之资源控制器RC、RS、Deployment详解 2、Kubernetes K8S之资源控制器StatefulSets详解 3、Kubernetes K8S之资源控制器

    4.4K33

    关于 Kubernetes中Job&CronJob的一些笔记

    写在前面 ---- 学习K8s涉及到这些,整理笔记加以记忆 博文内容涉及: job的创建,参数解析,并行多work的job创建 cron job的创建 Demo个别地方使用了ansible,不影响阅读...——烽火戏诸侯《剑来》 ---- Job&CronJob Job:批处理工作计划 Kubernetes从1.2版本开始支持批处理类型的应用,我们可以通过Kubernetes Job资源对象来定义并启动一个批处理任务...当数量达到指定的成功个数阈值时,任务(即 Job)结束。删除 Job 的操作会清除所创建的全部 Pods。挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。...所生成的 pod 只能运行多久 Kubernetes从1.5版本开始增加了一种新类型的Job,即类似LinuxCron的定时任务Cron Job,下面看看如何定义和使用这种类型的Job首先,确保Kubernetes...中etcd的一些笔记 关于 Kubernetes中Pod的一些笔记

    55840

    k8s 实践经验(八)job && CronJob

    它主要用于描述Pod内容器的重启策略。在Job中只能将此属性设置为OnFailure或Never。...ttlSecondsAfterFinished 1.12版本之后,k8s提出了通过TTL自动删除Job的特性,当前仅对job生效,对 Complete 和 Failed 状态的Job都会自动删除,以后会逐步对所有的其他资源对象生效...Job pi-with-ttl 的 ttlSecondsAfterFinished 值为 100,则,在其结束 100 秒之后,将可以被自动删除 如果 ttlSecondsAfterFinished...而这个 Job 对象本身,则被自动加上了这个 Label 对应的 Selector,从而 保证了 Job 与它所管理的 Pod 之间的匹配关系。...CronJob(CJ) CronJob控制器以 Job控制器资源为其管控对象,并借助它管理pod资源对象,Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux

    72630

    CronJob

    在Kubernetes中,CronJob是一种控制器对象,用于定期运行作业。类似于Linux下的cron定时任务,它可以让用户指定一个cron表达式来定义作业的运行频率。...什么是Kubernetes CronJob?CronJob是Kubernetes的一个控制器对象,用于定期运行一组Pod。...更多的Cron表达式可以参考Linux中的cron表达式。CronJob对象的工作流程当创建一个CronJob对象时,Kubernetes将在指定的时间表达式下创建一个Job对象。...在CronJob对象中,可以使用successfulJobsHistoryLimit和failedJobsHistoryLimit字段来指定保留的成功和失败Job对象的数量。...这些字段指定了Job对象历史记录的最大数量,以及Kubernetes可以在将它们删除之前保留多少个成功或失败的Job对象。

    43110
    领券