Flink Standalone Kubernetes模式JobManager HA如何指定ConfigMap命名空间
Flink Standalone K8s HA模式指定ConfigMap存储命名空间解决方案
问题根因
报错触发的核心原因是Flink Kubernetes HA服务默认使用default命名空间存储Leader选举、集群元数据相关的ConfigMap,未主动指定实际部署的flink-namespace,导致ServiceAccount跨命名空间访问被K8s RBAC拦截。
修复步骤
- 第一步:添加命名空间指定配置
你可以选择以下任意一种方式注入配置:- 修改
flink-conf.yaml配置文件,新增以下两行:
# 集群默认部署命名空间 kubernetes.namespace: flink-namespace # HA相关ConfigMap专属存储命名空间 kubernetes.ha.config-map.namespace: flink-namespace- 直接在JobManager、TaskManager部署YAML的容器环境变量中添加配置,无需修改镜像内配置文件:
env: - name: FLINK_CONF_kubernetes_namespace value: "flink-namespace" - name: FLINK_CONF_kubernetes_ha_config_map_namespace value: "flink-namespace" - 修改
- 第二步:补全ServiceAccount对应的Role权限
Leader选举流程需要对ConfigMap进行监听操作,你当前仅配置了创建、编辑权限,需要补充get、list、watch权限,完整的Role规则参考如下:
配置完成后确认apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: flink-namespace name: flink-ha-role rules: - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list", "watch", "create", "update", "delete", "patch"] - apiGroups: [""] resources: ["pods", "services"] verbs: ["get", "list", "watch"]flink-sa已经通过RoleBinding绑定到上述Role。 - 第三步:重启Flink集群验证
重新部署JobManager和TaskManager后,即可正常在flink-namespace下创建、管理HA相关的ConfigMap。
内容的提问来源于stack exchange,提问作者danthelos
相关产品推荐
相关产品推荐

