Pod 挂在终止状态

问题描述 投票:0回答:1

我有 kubernetes CRON 作业,它调用将 git 存储库克隆到持久存储的简单脚本。作业每 15 分钟调用一次,每天或每两天调用一次,我的作业尚未完成,并且状态为“正在终止”(脚本已完成所有作业,因为我可以在日志中看到来自脚本的最终消息)。

│   Warning  FailedKillPod  14h (x94 over 2d10h)       kubelet  error killing pod: [failed to "KillContainer" for "pull-repo" with KillContainerError: "rpc error: code = DeadlineExceeded desc = an error occurs during waiting for container \"3ff92cf6a48e46345e635a5bbc8f20d334c84 │
│ 927b7e700076f9c795799029d19\" to be killed: wait container \"3ff92cf6a48e46345e635a5bbc8f20d334c84927b7e700076f9c795799029d19\": context deadline exceeded", failed to "KillPodSandbox" for "34ceec99-8a5e-45b8-a298-cdf2ae8e43df" with KillPodSandboxError: "rpc error: code = Dead │
│ lineExceeded desc = context deadline exceeded"]                                                                                                                                                                                                                                      │
│   Warning  FailedKillPod  7h20m (x110 over 2d10h)    kubelet  error killing pod: [failed to "KillContainer" for "pull-repo" with KillContainerError: "rpc error: code = DeadlineExceeded desc = context deadline exceeded", failed to "KillPodSandbox" for "34ceec99-8a5e-45b8-a298- │
│ cdf2ae8e43df" with KillPodSandboxError: "rpc error: code = DeadlineExceeded desc = failed to stop container \"3ff92cf6a48e46345e635a5bbc8f20d334c84927b7e700076f9c795799029d19\": an error occurs during waiting for container \"3ff92cf6a48e46345e635a5bbc8f20d334c84927b7e700076f9 │
│ c795799029d19\" to be killed: wait container \"3ff92cf6a48e46345e635a5bbc8f20d334c84927b7e700076f9c795799029d19\": context deadline exceeded"]                                                                                                                                       │
│   Warning  FailedKillPod  5h49m (x446 over 2d10h)    kubelet  error killing pod: [failed to "KillContainer" for "pull-repo" with KillContainerError: "rpc error: code = DeadlineExceeded desc = context deadline exceeded", failed to "KillPodSandbox" for "34ceec99-8a5e-45b8-a298- │
│ cdf2ae8e43df" with KillPodSandboxError: "rpc error: code = DeadlineExceeded desc = context deadline exceeded"]                                                                                                                                                                       │
│   Warning  Unhealthy      4m52s (x21033 over 2d10h)  kubelet  (combined from similar events): Readiness probe errored: rpc error: code = Unknown desc = failed to exec in container: failed to start exec "1498eacd7dc6dfb402d060fb64114336fb9994060c9ac718aea16c3bd92f6fd8": OCI ru │
│ ntime exec failed: exec failed: cannot exec in a stopped container: unknown

当我尝试删除此 Pod 时,我的命令也会挂起,唯一有效的方法是强制删除。 您知道这种行为的根源是什么吗?

kubernetes kubernetes-cronjob
1个回答
0
投票

请确保 cron 作业在启动新 Pod 之前清除旧 Pod 这可以使用标志spec.jobTemplate.spec.activeDeadlineSeconds来实现

因此,所有正在运行的 Pod 将被终止,作业状态将变为类型:失败,原因为 DeadlineExceeded。

下面是一个例子

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello

    spec:
      schedule: "*/10 * * * *"
      jobTemplate:
        spec:
          activeDeadlineSeconds: 60

这可确保 cron 作业在启动新 Pod 之前清除旧 Pod

© www.soinside.com 2019 - 2024. All rights reserved.