【问题标题】:Kubernetes CronJob startup probKubernetes CronJob 启动概率
【发布时间】:2023-02-02 19:53:48
【问题描述】:

我从 Kubernetes 开始,我实现了一个运行 Java jar 的 CronJob。 它工作正常,但我观察到的是,如果由于某种原因(例如,错误的密钥)容器没有启动,pod 将无限期地坐在那里,并显示错误状态:CreateContainerConfigError。

发生这种情况时有没有办法自动杀死吊舱?

我按照下面的代码尝试使用启动探测器,但探测器甚至没有运行。

apiVersion: batch/v1
kind: CronJob
metadata:
  name: appName
  namespace: appNamespace
  labels:
    app: appName
    release: production
    tiers: backend
spec:
  jobTemplate:
    spec:
      backoffLimit: 2
      template:
        spec:
          volumes:
            - name: tmp-pod
              emptyDir: {}
          containers:
            - name: appName
              image: docker-image
              command: ["/bin/bash", "-c"]
              args:
                - |
                  touch /tmp/pod/app-started; 
                    java -XX:MaxRAMPercentage=75.0 -Djava.security.egd=file:/dev/urandom -jar /app.jar;
              volumeMounts:
                - mountPath: /tmp/pod
                  name: tmp-pod
              env:
                - name: env_var
                  value: value
              # if app is not started within 5m (30 * 10 = 300s), container will be killed.
              startupProbe:
                exec:
                  command:
                  - cat
                  - /tmp/pod/app-started
                initialDelaySeconds: 5
                periodSeconds: 10
                failureThreshold: 30
              resources:
                requests:
                  memory: "2200Mi"
                  cpu: "750m"
                limits:
                  memory: "2200Mi"
          restartPolicy: OnFailure
  schedule: "0 12 * * *"
  concurrencyPolicy: Forbid

CronJob 不支持探测吗? 或者我做错了什么?

是否有另一种方法可以杀死一段时间后无法启动的容器?

【问题讨论】:

  • 不幸的是,Cron 作业不会删除处于错误状态的 pod。它会一直部署新的 pod,直到作业成功。您可以试试TTLconnectors,它将在工作完成后立即清理工作及其资源。当你说杀死容器时,这是否意味着你想删除作业仍在运行时由作业创建的 pod?

标签: kubernetes


【解决方案1】:

我有同样的问题,kubernetes v1.23.14 似乎 kubernetes 有一个 cronjobs probs 的错误

事件:

  Normal   Started                 3m38s  kubelet                  Started container k8s-costs
  Warning  Unhealthy               3m38s  kubelet                  Startup probe failed: cat: /var/run/secrets/vault-envs: No such file or directory
  Normal   Killing                 3m37s  kubelet                  Stopping container k8s-costs

kubelet 说“正在停止容器”,但它仍在工作

因此,结果我看到 pod 成功并且一切正常,没有警报。 但真正的工作执行失败了,我们已经着火了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-09
    • 2021-12-16
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多