Kubectl 从 cronjob 创建作业并覆盖 args
Kubectl create job from cronjob and override args
Kubectl
允许您根据现有的 cron 创建临时作业。
这很好用,但在文档中没有关于在创建作业时传递参数的规范。
示例:
kubectl -n my-namespace create job --from=cronjob/myjob my-job-clone
有什么方法可以在创建时将争论传递给这个工作吗?
好的结果是 kubectl
不允许您使用 --from
并在同一子句中指定命令。
你会得到如下错误cannot specify --from and command
。
例如:
kubectl create job --from=cronjob/my-job.yaml my-job-test -- node run.js --date '2021-04-04'
error: cannot specify --from and command
简而言之,您不能使用现有的 cron 模板并指定命令。
最接近的做法是使用 --image
标志并手动传入文件所需的图像,然后指定命令和参数。
kubectl create job --image=<YOUR IMAGE NAME> my-job-test -- node run.js --date '2021-04-04'
job.batch/my-job-test created
虽然 kubectl
目前不允许您使用 --from 标志并在同一子句中指定命令,但您可以通过从干 运行 获取 yaml 来解决此限制并使用 yq
对其应用补丁。
例如:
# get the original yaml file
kubectl create job myjob --from cronjob/mycronjob --dry-run=client --output yaml > original.yaml
# generate a patch with your new arguments
yq new 'spec.template.spec.containers[0].args[+]' '{INSERT NEW ARGS HERE}' > patch.yaml
# apply the patch
yq merge --arrays update patch.yaml original.yaml > final.yaml
# create job from the final yaml
kubectl create -f final.yaml
Kubectl
允许您根据现有的 cron 创建临时作业。
这很好用,但在文档中没有关于在创建作业时传递参数的规范。
示例:
kubectl -n my-namespace create job --from=cronjob/myjob my-job-clone
有什么方法可以在创建时将争论传递给这个工作吗?
好的结果是 kubectl
不允许您使用 --from
并在同一子句中指定命令。
你会得到如下错误cannot specify --from and command
。
例如:
kubectl create job --from=cronjob/my-job.yaml my-job-test -- node run.js --date '2021-04-04'
error: cannot specify --from and command
简而言之,您不能使用现有的 cron 模板并指定命令。
最接近的做法是使用 --image
标志并手动传入文件所需的图像,然后指定命令和参数。
kubectl create job --image=<YOUR IMAGE NAME> my-job-test -- node run.js --date '2021-04-04'
job.batch/my-job-test created
虽然 kubectl
目前不允许您使用 --from 标志并在同一子句中指定命令,但您可以通过从干 运行 获取 yaml 来解决此限制并使用 yq
对其应用补丁。
例如:
# get the original yaml file
kubectl create job myjob --from cronjob/mycronjob --dry-run=client --output yaml > original.yaml
# generate a patch with your new arguments
yq new 'spec.template.spec.containers[0].args[+]' '{INSERT NEW ARGS HERE}' > patch.yaml
# apply the patch
yq merge --arrays update patch.yaml original.yaml > final.yaml
# create job from the final yaml
kubectl create -f final.yaml