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