【问题标题】:How do I manually trigger a kubernates job (not a cron) in k8s如何在 k8s 中手动触发 kubernetes 作业(不是 cron)
【发布时间】:2020-02-06 07:00:58
【问题描述】:

只要您执行 kubectl apply,我就有了示例 k8s 作业,该作业被触发并创建了 pod。如何控制 pod 创建?

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-timeout
spec:
  backoffLimit: 5
  activeDeadlineSeconds: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

【问题讨论】:

  • 您能否澄清一下“如何控制 pod 创建”的含义?具体控制什么?你只想运行它吗?创建一个新的 Pod?还有什么?
  • 很抱歉给您带来了困惑。我只想用手动触发器运行它

标签: kubernetes kubernetes-jobs


【解决方案1】:

如果要手动控制pod的创建,可以通过并行来实现。

文档说:

请求的并行度 (.spec.parallelism) 可以设置为任何非负值。如果未指定,则默认为 1。如果指定为 0,则 Job 将有效暂停,直到增加为止。

您可以在执行kubectl apply 时将其设置为0。配置如下所示

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-timeout
spec:
  backoffLimit: 5
  parallelism: 0
  activeDeadlineSeconds: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

您可以在决定运行时将其设置为 1。

【讨论】:

  • 哇,这有帮助,谢谢。我认为我们可以通过 kubectl patch job pi-with-timeout --type='json' -p='[{"op": "replace", "path": "/spec/parallelism", "value ":1}]'
【解决方案2】:

触发器正在运行 kubectl apply。创建作业时,它会运行。您可能正在寻找功能更全面的后台任务系统,例如 Airflow 或 Argo。

【讨论】:

  • 对于使用 web gui 的手动触发器来说,Rundeck 似乎是一个不错的选择
猜你喜欢
  • 2017-03-17
  • 2012-09-18
  • 2019-04-28
  • 1970-01-01
  • 2022-01-11
  • 2021-08-08
  • 2011-10-25
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多