Flink中报错直接启动不了,进而导致pod里面的JM起不来了,该怎么办呢?[阿里云实时计算 Flink版]

我的部署方式是flink on native k8s,使用application模式。其中,为了对接相关平台,我flink-conf.yaml中配置的jobmanager.rpc.address,没有用原生的servicename.namespace方式,而是使用了servicename直接指定。为此,我改造了flink-1.14.0\flink-kubernetes\src\main\java\org\apache\flink\kubernetes\kubeclient\decorators\InternalServiceDecorator.java类,把其中的getNamespacedInternalServiceName方法里的namespace直接干掉了。 但是这样做之后,出现了ERROR org.apache.flink.runtime.resourcemanager.active.ActiveResourceManager [] – Fatal error occurred in ResourceManager. org.apache.flink.runtime.resourcemanager.exceptions.ResourceManagerException: Could not start the ResourceManager akka.tcp://flink@flinksqldemo-rpc:6123/user/rpc/resourcemanager_1的报错,看起来这么搞,resourcemanager直接启动不了,进而导致pod里面的JM起不来了,该怎么办呢?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 从错误信息看,出现了Could not start the ResourceManager的异常,可能是因为ResourceManager无法连接到想要通信的Pod的IP地址和端口。这可能与您在flink-conf.yaml中使用了servicename直接指定的方式有关,因为没有使用namespace方式,所以可能会导致无法正确解析出需要通信的Pod的IP地址和端口。

    为了解决这个问题,建议您恢复InternalServiceDecorator.java类中getNamespacedInternalServiceName方法里的namespace相关的逻辑,使其能够正确地获取作业管理器服务的地址。另外,可以尝试使用命名空间方式指定jobmanager.rpc.address来解决该问题,以保证ResourceManager能够正确地连接到作业管理器。

  2. 当时这个报错我排查出来是权限的问题,命名空间里面的角色不是 serviceAccount, 此回答整理自钉群“【③群】Apache Flink China社区”