【问题标题】:KubernetesPodOperator not recognizing the service_account_nameKubernetesPodOperator 无法识别 service_account_name
【发布时间】:2020-06-07 02:12:25
【问题描述】:

我创建了一个名为 my-app-cluster-accessserviceAccount 资源。然后在KubernetesPodOperatorservice_account_name 参数中提供该资源名称。但我不断收到错误

HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods is forbidden: User \"system:serviceaccount:my-release-name:default\" cannot create resource \"pods\" in API group \"\" in the namespace \"default\"","reason":"Forbidden","details":{"kind":"pods"},"code":403}

该消息似乎表明service_account_name 的提供值未被应用,因为该消息仍然具有default 文本。我检查了KubernetesPodOperator 源代码,看起来映射在那里。

在我创建 ServiceAccount 资源之前,我也收到了同样的错误消息。我是否需要创建 ServiceAccount 资源才能使用该运算符?我需要能够使用KubernetesPodOperator,但在添加ServiceAccount 后到目前为止还没有工作。我已经将in_cluster arg 设置为True

【问题讨论】:

    标签: kubernetes airflow kubernetes-helm


    【解决方案1】:

    默认情况下,每个命名空间都有一个服务帐户 default default 服务帐户没有创建 Pod 的权限。

    在您的情况下,来自命名空间 my-release-namedefault 服务帐户正在尝试在 default 命名空间中创建一个 pod。

    您可以检查命名空间 my-release-name 中名为 default 的服务帐户是否有权在 default 命名空间中创建 pod。

    kubectl auth can-i create pods -n default--as=system:serviceaccount:my-release-name:default
    

    这将返回编号。

    所以你可以像下面这样创建一个角色

    kubectl create clusterrole pod-creator --verb=create,get,list,watch --resource=pods
    

    和一个集群角色绑定

    kubectl create clusterrolebinding pod-creator-clusterrolebinding --clusterrole=pod-creator --serviceaccount=my-release-name:default
    

    无需创建新的服务帐户即可使用上述方法。

    【讨论】:

      猜你喜欢
      • 2023-01-13
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2013-04-19
      • 2019-01-28
      • 2017-08-10
      相关资源
      最近更新 更多