pod或job中的数据提取器和数据推送器

时间:2018-06-11 16:37:56

标签: kubernetes pipeline pod

我正在尝试在kubernetes中编写一个数据处理单元。

对于每个流程单元都有一个非常相似的工作流程:

  1. Puller从对象存储中提取数据并将/input卷装入容器
  2. 处理器运行代码以处理卷中的数据并将数据输出到/output
  3. Pusher将/output卷中的数据再次推送到对象存储
  4. 因此,每个pod或作业必须有一个容器作为数据推送器和数据提取器,在here中由共享卷提及。但是我怎样才能使这个过程成为拉动 - >过程 - >推送顺序?

    现在我可以使用卷共享方式进行通信以使其工作:首先我可以让拉出器开始工作,让数据处理器等待,直到找到pull-finished.txt创建。然后让pusher在找到process-finished.txt时开始工作。但这可能不得不强制数据处理容器从某些图像或使用某些特定的入口点,这不是我想要的。是否有一种更优雅的方式来完成这项工作?

1 个答案:

答案 0 :(得分:0)

正如this pageSuresh 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中找到另一个很好的例子