我正在尝试在kubernetes中编写一个数据处理单元。
对于每个流程单元都有一个非常相似的工作流程:
/input
卷装入容器/output
卷/output
卷中的数据再次推送到对象存储因此,每个pod或作业必须有一个容器作为数据推送器和数据提取器,在here中由共享卷提及。但是我怎样才能使这个过程成为拉动 - >过程 - >推送顺序?
现在我可以使用卷共享方式进行通信以使其工作:首先我可以让拉出器开始工作,让数据处理器等待,直到找到pull-finished.txt创建。然后让pusher在找到process-finished.txt时开始工作。但这可能不得不强制数据处理容器从某些图像或使用某些特定的入口点,这不是我想要的。是否有一种更优雅的方式来完成这项工作?
答案 0 :(得分:0)
正如this page和Suresh Vishnoi的评论中已经提到的,最好的方法是使用Janos Lenart处理来自队列或输入卷的数据,并使用Jobs处理数据的连续步骤。
以下是使用Kubernetes文档中的init-containers的一个很好的例子:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
您可以在init-containers
提供的answer中找到另一个很好的例子