gpt4 book ai didi

kubernetes - 如何将参数传递给 Kubernetes 中的 Job 资源

转载 作者:行者123 更新时间:2023-12-04 12:45:23 29 4
gpt4 key购买 nike

我有一个 Job 资源文件,如下所示。我需要使用此定义运行多个实例,每个实例都有单独的参数。

apiVersion: batch/v1
kind: Job
metadata:
generateName: abc-
spec:
template:
spec:
containers:
- name: abc
image: index.docker.io/some/image:latest
imagePullPolicy: Always
imagePullSecrets:
- name: some_secret
restartPolicy: Never
backoffLimit: 4

我可以成功地运行这个工作资源 kubectl create -f my-job.yml但是,我不确定我如何传递与
命令:['arg1','arg2']

我认为用我的动态参数为每个请求更新文件只是一团糟。

我试过 kubectl patch -f my-job.yml --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/", "value": {"command": ["arg1","arg2"] } }]' ,这对于部署类型很有效,但对于作业它不起作用

我试过 sudo kubectl run explicitly-provide-name-which-i-dont-want-to --image=index.docker.io/some/image:latest --restart=Never -- arg1 arg2 ,但为此我将无法通过 imagePullSecrets .

最佳答案

这里是一个通用的答案,只是想指导您。一般来说,您表达的是需要“参数化”您的 kubernetes 部署描述符。有不同的方法,有些很简单,有些有点hacky,最后是github.com/kubernetes/helm .

就个人而言,我强烈建议您在集群上安装 Helm,然后将您的工作或任何 vanilla kubernetes 部署描述符“迁移”到 helm Chart。这最终将为您提供以不同方式和不同配置旋转作业所需的“参数化”功能。

但是,如果这听起来对你来说太过分了,我可以推荐一些我在发现 Helm 之前正在做的事情。我最终使用'bash'/'envsubst'之类的东西 - 使用占位符(例如env变量)手动模板化yaml文件的部分,然后我将yaml提供给'envsubst'之类的工具,它们正在替换占位符与来自环境的值(value)观。丑陋?是的。可维护?也许是几个简单的例子。 envsubst 示例 here .

apiVersion: batch/v1
kind: Job
metadata:
spec:
template:
spec:
containers:
- name: abc
image: index.docker.io/some/image:latest
imagePullPolicy: Always
imagePullSecrets:
- name: $SOME_ENV_VALUE
restartPolicy: Never
backoffLimit: 4

希望对您有所帮助..但如果您有时间,请认真考虑检查“Helm”。

关于kubernetes - 如何将参数传递给 Kubernetes 中的 Job 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49636717/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com