【发布时间】:2021-11-15 04:34:33
【问题描述】:
我在没有 Job Manager HA 的情况下以独立 Kubernetes(会话)模式运行 Apache Flink。但是我需要部署 Job Manager HA,因为只有在 HA 模式下,Flink 才能持久化(可以在 Job Manager 重启后保存 Job)。 Flink 在专用的 kubernetes 命名空间中运行,我只有命名空间的权限。
使用这篇文章启用 HA: https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/ha/kubernetes_ha/
我使用本文中的 yaml 文件: https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/#kubernetes-high-availability-services
例如,我有一个名为 flink-namespace 的 k28s 命名空间。在我创建的这个命名空间中:
- serviceAccount 名为 flink-sa
- 角色具有在此命名空间中创建/编辑配置映射的权限
所以这个 serviceAccount 有权创建/编辑配置映射,但只能在这个命名空间中。
部署后jobManager无法启动并报错:
原因:io.fabric8.kubernetes.client.KubernetesClientException: configmaps "flink-restserver-leader" 被禁止:用户 "system:serviceaccount:flink-namespace:flink-sa" 无法观看资源 "configmaps"在命名空间“default”中的 API 组“”中
意味着使用 Flink 的 serviceAccount 来管理 Configmap,尝试在命名空间“default”而不是命名空间“flink-namespace”中创建 Configmap
有人知道如何配置 flink 来管理指定命名空间中的 configmaps 吗?
【问题讨论】: