我首先声明了一个使用 Flink“应用程序”模式的工作,然后尝试使用 Flink REST API 在该集群上上传一个 jar。上传 jar API 返回 404 Not Found 错误。 Flink REST API 是否只适用于会话模式并且不支持应用程序/每个作业模式
{
"errors": [
"Not found: /jars/upload"
]
}
应用模式下可以使用flink命令行提交job
$ ./bin/flink run-application \
--target kubernetes-application \
-Dkubernetes.cluster-id=my-first-application-cluster \
-Dkubernetes.container.image.ref=custom-image-name \
local:///opt/flink/usrlib/my-flink-job.jar
您应该指定
kubernetes-application
目标和集群ID。
另外session模式命令是:
# (1) Start Kubernetes session
$ ./bin/kubernetes-session.sh -Dkubernetes.cluster-id=my-first-flink-cluster
# (2) Submit example job
$ ./bin/flink run \
--target kubernetes-session \
-Dkubernetes.cluster-id=my-first-flink-cluster \
./examples/streaming/TopSpeedWindowing.jar
# (3) Stop Kubernetes session by deleting cluster deployment
$ kubectl delete deployment/my-first-flink-cluster
Rest api最初是为monitor设计的。 rest api 目前不支持应用模式提交flink job。 请求url是这样的:
{{cluster_address}}/jars/xxx.jar/run
.
当你通过rest api提交作业时,它假设你已经启动了Kubernetes session,并且集群地址固定在url中,类似于以会话模式提交作业。