【问题标题】:got Exec Failure: HTTP 403 when submit spark on k8s在 k8s 上提交 spark 时得到 Exec Failure: HTTP 403
【发布时间】:2019-07-15 00:52:51
【问题描述】:
  • spark 版本:v2.4.0

  • eks 信息:v1.10.11-eks

提交后,收到如下错误信息:

019-02-21 15:08:44 WARN WatchConnectionManager:185 - 执行失败:HTTP 403,状态:403 - pod 被禁止:用户“system:anonymous”无法在命名空间“spark”中观看 pod java.net.ProtocolException:预期的 HTTP 101 响应,但“403 Forbidden”

线程“main”中的异常 io.fabric8.kubernetes.client.KubernetesClientException:pod 被禁止:用户“system:anonymous”无法观看命名空间“spark”中的 pod

【问题讨论】:

  • 您需要授予指定用户对命名空间的访问权限,或者以具有该访问权限的新用户身份运行该进程。

标签: apache-spark kubernetes


【解决方案1】:

您需要为 system:anonymous 用户创建Role 以使用类似于以下 yaml 的方式在您的命名空间上观看 pod

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: spark # your namespace
  name: pod-reader # Role name will be needed for binding to user
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

然后您需要创建RoleBindging 将该角色绑定到 system:anonymous 用户,类似于下面的 yaml

# This role binding allows "system:anonymous" to read pods in the "spark" namespace.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-pods
  namespace: spark # your namespace
subjects:
- kind: User
  name: system:anonymous # Name is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role #this must be Role or ClusterRole
  name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
  apiGroup: rbac.authorization.k8s.io

Documentation 了解有关匿名请求的更多信息

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    相关资源
    最近更新 更多