我在job.yaml
中定义了以下Kubernetes作业
apiVersion: batch/v1
kind: Job
metadata:
name: pi-$count
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
我使用下面的bash脚本来应用此功能:
for i in {1..3}
do
kubectl apply -f job.yaml
done
是否有办法在此处创建3个作业并使用环境变量pi-$count
,以便创建pi-1
、pi-2
和pi-3
?
2条答案
按热度按时间v6ylcynt1#
您可以使用
sed
替换$count
,为每个作业创建一个清单文件并应用它。例如创建一个名为
pi-job.yaml
的文件(我以您的代码为例)创建一个名为job的文件夹来存储清单文件(此目录完全是可选的),您可以使用类似下面的内容
通过执行此代码,将以pi-1、pi-2和pi-3的名称创建3个作业。但是清单文件将驻留在作业文件夹中。您需要清理它。否则,您可以向脚本中再添加一行来删除文件,如下所示
有关更多详细信息,请参阅官方k8的工作文档
ugmeyewa2#
使用sed命令替换作业计数器(COUNT)并为每个作业示例创建临时文件。您可以在部署后删除所有临时作业yaml。这样您就可以保持原始作业yaml文件的完整性以供重用。假设我正在使用名为'job.yaml'的kubernetes作业yaml。
像下面这样修改bash脚本,我将它命名为
jobrunner.sh
。运行此bash脚本,将在您的Kubernetes中创建3个作业,分别为
pi-1
、pi-2
和pi-3
。如果您希望保留临时作业文件,可以使用rm job-*.yaml
命令注解掉删除临时作业文件的最后部分。