我需要同意@Arghya Sadhu 提供的答案。它展示了如何Pod
使用CronJob
. 在回答之前,我想更多地关注@Chris Stryczynski 提供的评论:
目前尚不清楚容器是并行运行还是顺序运行
您尝试运行的工作负载是否:
要求是这样的:
- 第一个容器:运行 shell 脚本来完成一项工作。
- 第二个容器:运行fluentbit conf解析日志并发送。
可以用于parallel
(同时运行)或需要sequential
方法(X成功完成后,运行Y)。
如果工作负载可以并行运行,@Arghya Sadhu 提供的答案是正确的,但是如果一个工作负载依赖于另一个工作负载,我认为您应该使用initContainers
而不是 multi container Pods
。
CronJob
实现的示例initContainer
可能如下:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: ubuntu
image: ubuntu
command: [/bin/bash]
args: ["-c","cat /data/hello_there.txt"]
volumeMounts:
- name: data-dir
mountPath: /data
initContainers:
- name: echo
image: busybox
command: ["bin/sh"]
args: ["-c", "echo 'General Kenobi!' > /data/hello_there.txt"]
volumeMounts:
- name: data-dir
mountPath: "/data"
volumes:
- name: data-dir
emptyDir: {}
这CronJob
会将特定文本写入带有 的文件,initContainer
然后“主”容器将显示其结果。值得一提的是,如果initContainer
操作不成功,主容器将不会启动。
$ kubectl logs hello-1234567890-abcde
General Kenobi!
其他资源: