我创建了一个名为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}该消息似乎表明,由于消息中仍包含default文本,因此未应用提供的service_account_name值。我检查了KubernetesPodOperator源代码,看起来映射就在那里。
在我创建ServiceAccount资源之前,我也收到了同样的错误消息。我是否需要创建一个ServiceAccount资源才能使用该操作符?我需要能够使用KubernetesPodOperator,到目前为止没有工作后添加的ServiceAccount。我已经将in_cluster参数设置为True。
发布于 2020-02-23 12:43:23
默认情况下,每个命名空间都有一个服务帐户,default服务帐户没有创建pods的权限。
在您的示例中,名称空间my-release-name中的一个default服务帐户正在尝试在default名称空间中创建一个pod。
您可以查看来自命名空间my-release-name的名为default的服务账号是否有权在default命名空间中创建pods。
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上面应该可以工作,而不需要创建新的服务帐户。
https://stackoverflow.com/questions/60359125
复制相似问题