我创建了一个名为serviceAccount
的my-app-cluster-access
资源。然后在service_account_name
的KubernetesPodOperator
参数中提供该资源名称。但我不断收到错误
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
。
默认情况下,每个名称空间都有一个服务帐户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
以上操作无需创建新的服务帐户。