KubernetesPodOperator无法识别服务\u帐户\u名称

KubernetesPodOperator无法识别服务\u帐户\u名称,kubernetes,airflow,kubernetes-helm,Kubernetes,Airflow,Kubernetes Helm,我创建了一个名为my app cluster access的serviceAccount资源。然后在KubernetesPodOperator的service_account_name参数中提供该资源名称。但我一直在犯错误 HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods is forbidden: User \"system:servic

我创建了一个名为my app cluster access的serviceAccount资源。然后在KubernetesPodOperator的service_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_名称值,因为该消息仍然具有默认文本。我检查了KubernetesPodOperator源代码,看起来映射就在那里


在创建ServiceAccount资源之前,我还收到了相同的错误消息。我是否需要创建ServiceAccount资源以使用该操作员?我需要能够使用KubernetesPodOperator,但在添加ServiceAccount后,到目前为止还不能工作。我已经将in_cluster arg设置为True。

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

在您的情况下,命名空间my release name中的默认服务帐户正在尝试在默认命名空间中创建一个pod

kubectl auth can-i create pods -n default--as=system:serviceaccount:my-release-name:default
您可以检查名称空间my release name中名为default的服务帐户是否具有在默认名称空间中创建POD的权限

kubectl auth can-i create pods -n default--as=system:serviceaccount:my-release-name:default
这将返回no

因此,您可以创建一个如下所示的角色

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
无需创建新的服务帐户,上述功能即可正常工作