每个 Flink 作业 运行 上的多个 "k8s-ha-app1-jobmanager" 配置映射

Multiple "k8s-ha-app1-jobmanager" configmaps on every Flink job run

我在 Kubernetes 上有一个 Flink session 集群,最近我从基于 ZK 的 HA 切换到 Kubernetes HA。

通读
https://cwiki.apache.org/confluence/display/FLINK/FLIP-144%3A+Native+Kubernetes+HA+for+Flink#FLIP144:NativeKubernetesHAforFlink-LeaderElection

我可以在 Flink 命名空间上观察每个资源的配置映射,如上面的文档所述:

k8s-ha-app1-00000000000000000000000000000000-jobmanager   2      4m35s  
k8s-ha-app1-dispatcher                                    2      4m38s  
k8s-ha-app1-resourcemanager                               2      4m38s  
k8s-ha-app1-restserver                                    2      4m38s

但是,我没有看到“jobmanager”资源的单个配置映射。我看到的工作一样多,每天都有 运行。这可能是一个很大的数字,因此在几天内,这意味着集群命名空间中的配置映射 激增。

jobmanager 的不同 HA 配置映射似乎在

"address": "akka.tcp://flink@flink-jobmanager:6123/user/rpc/jobmanager_XXX"

(其中 XXX 增加)
和“sessionId”值。

有人可以向我解释一下这些“jobmanager”资源是在什么基础上创建的吗? 一开始我认为可能会有预定的清理轮次,但我在文档中读到 HA 配置映射从所有者那里被剥离并且没有被删除。 我是否错过了一些设置,以便所有作业都针对同一会话 运行,或者我可以通过某种方式在作业 运行s 之后清理这些 k8s-ha-app1-XXXXXXXXXXXXXXXXXXXXX-jobmanager ?

Flink 内部工作的方式是 Dispatcher 为每个提交的作业创建一个专用的 JobMaster 组件。该组件需要领导者选举,为此它创建了一个 k8s-ha-app1-<JOB_ID>-jobmanager 配置映射。这就是为什么您看到正在创建多个 xyz-jobmanager ConfigMap 的原因。

之所以没有清理这些ConfigMap,是因为目前只有在整个集群关闭时才会发生这种情况。这是一个限制,Flink 社区已经创建了 FLINK-20695 来修复它。这个想法是在作业达到终止状态后可以删除 JobMaster 相关的 ConfigMap。

有点相关的是另一个限制,它在会话集群的情况下阻碍了正确的清理。如果集群被 SIGTERM 信号关闭,那么目前不能保证所有资源都被清理干净。有关详细信息,请参阅 FLINK-21008