标签: kubernetes-jobs

如何自动删除已完成的Kubernetes工作?

有没有办法自动删除已完成的工作,除了使用cronjob清理已完成的工作?

K8S工作文件规定,完成作业的预期行为是他们留在已完成的状态,直到手动删除.因为我每天通过k8s cronjobs运行成千上万的工作,我不想保持完成的工作.

cron kubernetes kubernetes-cronjob kubernetes-jobs

45
推荐指数
8
解决办法
4万
查看次数

Kubernetes - 告诉工作完成时

我正在寻找一种方法来告诉(从脚本中)Kubernetes Job完成的时间.我想从容器中取出日志并执行清理.

这样做有什么好办法?最好的方法是运行kubectl describe job <job_name>和grep 1 Succeeded或类似的东西?

kubernetes kubectl kubernetes-jobs

39
推荐指数
3
解决办法
1万
查看次数

CronJob 中的“kubectl create job”失败,并显示“错误:未知对象类型 *v1beta1.CronJob”

我有一个具有以下版本的 Kubernetes 集群:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1", GitCommit:"632ed300f2c34f6d6d15ca4cef3d3c7073412212", GitTreeState:"clean", BuildDate:"2021-08-19T15:38:26Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.13", GitCommit:"aac5f64a5218b0b1d0138a57d273a12db99390c9", GitTreeState:"clean", BuildDate:"2021-01-18T07:43:30Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.22) and server (1.16) exceeds the supported minor version skew of +/-1
Run Code Online (Sandbox Code Playgroud)

我的 Kubernetes 集群中有一个 CronJob。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
   name: abc-cronjob
   namespace: abc-namespace
...
Run Code Online (Sandbox Code Playgroud)

Kubernetes 集群识别 cron 作业的 api 资源。

$ kubectl -n abc-namespace api-resources
NAME                              SHORTNAMES   APIVERSION                        NAMESPACED   KIND
...
cronjobs                          cj           batch/v1beta1                     true …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl kubernetes-cronjob kubernetes-jobs

29
推荐指数
3
解决办法
2万
查看次数

如何作为Kubernetes工作顺序运行容器?

我正在尝试用Kubernetes工作替换我的旧作业调度程序,并想知道如何将顺序作业写为Kubernetes作业.

首先,我编写了以下脚本来执行job1并按job2书面顺序执行,但它没有按预期工作.

apiVersion: batch/v1
kind: Job
metadata:
  name: sequential
spec:
  activeDeadlineSeconds: 100
  template:
    metadata:
      name: sequential_jobs
    spec:
      containers:
      - name: job1
        image: image1
      - name: job2
        image: image2
      restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

上述工作似乎运行job1job2并行.有没有什么好的方式来运行job1job2书面订单?

追加.

我最近发现https://github.com/argoproj/argo非常适合我的用例.

kubernetes kubernetes-jobs argoproj

19
推荐指数
3
解决办法
8837
查看次数

Kubernetes - 如何只运行一次工作

我有一个基于kubernetes网站示例的工作定义.

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-timeout-6
spec:
  activeDeadlineSeconds: 30
  completions: 1
  paralleism: 1
  template:
    metadata:
      name: pi
    spec:
      containers:
      - name: pi
        image: perl
        command: ["exit", "1"]
      restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

我想运行一次这个工作,如果失败则不重启.使用comand退出1 kubernetes尝试运行新pod以获取exit 0代码,直到达到activeDeadlineSeconds超时.怎么可以避免呢?我想在kubernetes中运行构建命令来检查编译,如果编译失败,我将得到不同于0的退出代码.我不想再次运行编译.

可能吗?怎么样?

jobs kubernetes kubernetes-jobs

17
推荐指数
2
解决办法
1万
查看次数

kubectl list / 删除所有已完成的作业

我正在寻找kubectl命令来列出/删除所有已完成的作业

我试过:

kubectl get job --field-selector status.succeeded=1
Run Code Online (Sandbox Code Playgroud)

但我得到:

enfield selector "status.succeeded=1": field label "status.succeeded" not supported for batchv1.Jobter code here
Run Code Online (Sandbox Code Playgroud)

工作时--fieldSelector的可能字段是什么?

有一个更好的方法吗 ?

kubernetes google-kubernetes-engine kubectl kubernetes-pod kubernetes-jobs

16
推荐指数
3
解决办法
2万
查看次数

Pod 无限期地停留在 PodInitializing 状态

我有一个 k8s cronjob,它由一个 init 容器和一个 pod 容器组成。如果 init 容器失败,主容器中的 Pod 永远不会启动,并无限期地停留在“PodInitializing”中。

如果 init 容器失败,我的目的是让作业失败。

---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: job-name
  namespace: default
  labels:
    run: job-name
spec:
  schedule: "15 23 * * *"
  startingDeadlineSeconds: 60
  concurrencyPolicy: "Forbid"
  successfulJobsHistoryLimit: 30
  failedJobsHistoryLimit: 10
  jobTemplate:
    spec:
      # only try twice
      backoffLimit: 2
      activeDeadlineSeconds: 60
      template:
        spec:
          initContainers:
          - name: init-name
            image: init-image:1.0
          restartPolicy: Never
          containers:
          - name: some-name
            image: someimage:1.0
          restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

pod 上的 kubectl 卡住会导致:

Name:               job-name-1542237120-rgvzl
Namespace:          default
Priority:           0 …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-pod kubernetes-cronjob kubernetes-jobs

15
推荐指数
3
解决办法
3万
查看次数

Kubernetes 作业和部署之间有什么区别

我看到 Kubernetes Job&Deployment提供了非常相似的配置。两者都可以部署一个或多个具有特定配置的 Pod。所以我对这些问题很少有疑问:

  • &.spec.template中的Pod 规格是否不同?JobDeployment
  • JobcompletionsDeployment区别是什么replicas
  • 如果命令在 a 的唯一容器中运行Deployment并完成(没有服务器或守护进程进程容器),则 pod 将终止。这同样适用于a Job。那么这两种资源中的 pod 生命周期有何不同?

kubernetes kubernetes-deployment kubernetes-jobs

10
推荐指数
1
解决办法
1万
查看次数

使用命令行等待Kubernetes作业在失败/成功时完成

等待kubernetes作业完成的最佳方法是什么?我注意到很多建议可以使用:

kubectl wait --for=condition=complete job/myjob
Run Code Online (Sandbox Code Playgroud)

但我认为,只有工作成功,这才行。如果失败,我必须做类似的事情:

kubectl wait --for=condition=failure job/myjob
Run Code Online (Sandbox Code Playgroud)

有没有办法使用wait来等待两个条件?如果没有,等待工作成功或失败的最佳方法是什么?

jobs wait kubernetes kubectl kubernetes-jobs

9
推荐指数
4
解决办法
1505
查看次数

错误:升级失败:预升级挂钩失败:等待条件超时

我正在测试一个预升级挂钩,它只有一个 bash 脚本,可以打印字符串并休眠 10 分钟。当我运行 helm Upgrade 时,它​​运行了一段时间并退出并出现标题中的错误。我使用 kubectl 检查作业,它仍在运行。关于如何消除错误有什么想法吗?

谢谢

作业运行的容器中的脚本:

#!/bin/bash

echo "Sleeping for testing..."
sleep 600
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm kubernetes-jobs

9
推荐指数
1
解决办法
3万
查看次数