KubernetesPodOperator无法识别service_account_name

问题描述 投票:0回答:1

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

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个回答
0
投票

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

在您的情况下,名称空间default中的my-release-name服务帐户正在尝试在default名称空间中创建容器。

您可以检查名称空间default中名为my-release-name的服务帐户是否具有在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

以上操作无需创建新的服务帐户。

© www.soinside.com 2019 - 2024. All rights reserved.