我很想知道 Beam 数据流作业是否可以使用 kubernetes 运行。我可以看到很多 Spring 数据流作业从 kubernetes 运行,但不是 Beam 数据流。
我可以看到一个例子,如 https://github.com/sanderploegsma/beam-scheduling-kubernetes/blob/master/kubernetes/cronjob.yml
但这并没有解释如何传递 args 参数,例如
args: ["--runner=DataflowRunner --project=$peoject --gcpTempLocation=$gcptemp"]
从 https://streambench.wordpress.com/2018/06/07/set-up-the-direct-runner-for-beam/ 对此进行更多扩展
我想将这部分部署在 kubernetes 上。
beam_app_direct:
container_name: "beam_direct_app"
image: "beam_direct_app"
build:
context: .
dockerfile: ./Dockerfile-direct
environment:
- YOUR_ENV_PARAMETER=42
- ANOTHER_ENV_PARAMETER=abc
- ...
links:
- ...
# volume:
# - ./your-beam-app /usr/src/your-beam-app
command: "bash ./init.sh"
但我不知道如何部署它。
更新更多详细信息。
我的 Cronjob.yaml 文件
apiVersion: batch/v1
kind: Job
metadata:
name: "cronjob"
spec:
template:
spec:
containers:
- name: campaignjob
image: cronjob
build:
context: .
dockerfile: ./Dockerfile
command: "bash ./init.sh"
restartPolicy: Never
kubectl apply -f cronjob.yaml --validate=false
我收到以下错误。
作业“cronjob”无效: *spec.template.spec.containers:必需的值 *spec.template.spec.restartPolicy:不支持的值:“Always”:支持的值:OnFailure、Never
更新: 我很惊讶。我意识到这只是 YAML 文件错误的情况,但即使 4 天后也没有评论。我什至将此问题发送给 Google 团队,但他们要求我使用其他技术。
最佳答案
根据您提供的 github 链接,该作业必须在主节点上运行。在 GKE 中,您无权访问主节点,因为它是托管服务。
我建议使用 Google Cloud Dataflow它是为了运行您所描述的作业而构建的。
关于java - 从 Kubernetes 运行梁数据流作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51038899/