我正在尝试在 kubernetes 上部署 Apache Flink 1.6。按照作业管理器的教程高可用性 页。我已经有一个工作的 Zookeeper 3.10 集群,从它的日志中我可以看到它很健康,并且没有配置为 Kerberos 或 SASL。所有 ACL 规则都是让每个客户端写入和读取 znodes。当我启动集群时,一切按预期工作,每个 JobManager 和 TaskManager Pod 都成功进入运行状态,我可以从主 JobManager 的 web-ui 看到连接的任务管理器实例。但是,当我删除主作业管理器的 Pod 时,另一个 JobManager Pod 无法在集群中的任何 JobManager-UI 上选出具有以下错误消息的领导者。
{
"errors": [
"Service temporarily unavailable due to an ongoing leader election. Please refresh."
]
}
即使我重新启动此页面也没有任何变化。它卡在此错误消息上。 我的怀疑是,问题与high-availability.storageDir
选项有关。我已经在我的 k8s 集群中部署了一个工作(使用 CloudExplorer 测试(minio s3。但是 flink无法向 s3 服务器写入任何内容。在这里,您可以找到来自github-gist的每个配置。
根据日志,TaskManager
似乎无法连接到新的领导者。我假设这对于网络 UI 是相同的。日志说它尝试连接到flink-job-manager-0.flink-job-svc.flink.svc.cluster.local/10.244.3.166:44013
.我无法从日志中说flink-job-manager-1
是否绑定到此IP。但我怀疑无头服务可能会返回多个 IP,而 Flink 会选择错误的/旧的。您能否登录flink-job-manager-1
pod 并检查其 IP 地址是什么?
我认为您应该能够通过为每个JobManager
定义专用服务或改用 pod 主机名来解决此问题。