我有一个jar,它使用main函数来启动3个不同的作业(拓扑),我想在应用模式下使用flink kubernetes operator(版本1.4)将它部署在kubernetes集群中。我希望所有3个作业都能启动,因为我能够使用原生kubernetes部署模式(链接)。
相反,只从我的应用程序调度第一个作业,其他作业将被忽略。用于FlinkDeployment资源的简化清单如下所示
apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
name: my-flink-app
spec:
image: my-custom-flink-image-with-app
flinkVersion: v1_16
flinkConfiguration:
taskmanager.numberOfTaskSlots: "4"
serviceAccount: flink
jobManager:
resource:
memory: "1024m"
cpu: 1
taskManager:
resource:
memory: "1024m"
cpu: 1
podTemplate:
apiVersion: v1
kind: Pod
metadata:
name: task-manager-pod-template
spec:
initContainers:
- name: busybox
image: busybox:1.35.0
command: [ 'sh','-c','echo hello from task manager' ]
podTemplate:
spec:
containers:
- name: flink-main-container
env:
- name: FLINK_PARALLELISM
value: "2"
job:
jarURI: local:////opt/flink/usrlib/my-app.jar
parallelism: 2
字符串
这种行为是预期的吗?我错过了什么吗,不应该可以使用flink-kubernetes-operator启动一个具有多个作业的Flink应用程序吗?
1条答案
按热度按时间enyaitl31#
Flink Kubernetes Operator希望每个
FlinkDeployment
都是一个单独的Flink应用程序,可以独立操作(升级,保存等)。如果您想使用Kubernetes Operator,请将您的应用程序重构为3FlinkDeployments
。