【问题标题】:deployments.apps is forbidden: User "system:serviceaccount:default:default" cannot create deployments.apps in the namespacedeployments.apps 被禁止:用户“system:serviceaccount:default:default”不能在命名空间中创建 deployments.apps
【发布时间】:2022-02-03 11:52:21
【问题描述】:

网址:/apis/apps/v1/namespaces/diyclientapps/deployments

) "{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"deployments.apps 被禁止:用户 \"system:serviceaccount:default:default\" 不能 在命名空间中创建 deployments.apps \"diyclientapps\"","re​​ason":"Forbidden","details":{"group":"apps","kind":"deployments"},"code":403}

我在尝试通过 Kubernetes REST API 创建部署时遇到上述错误。

为什么?我不明白错误信息...

这发生在自定义 Kubernetes 集群上...以上在本地 Minikube 实例上正常工作。

我可以通过以下方式成功创建部署:kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080

【问题讨论】:

标签: kubernetes


【解决方案1】:

警告:这允许任何对机密具有读取权限或能够创建 pod 的用户访问超级用户凭据。

kubectl create clusterrolebinding serviceaccounts-cluster-admin \
  --clusterrole=cluster-admin \
  --group=system:serviceaccounts

https://kubernetes.io/docs/admin/authorization/rbac/

【讨论】:

  • 哇最赞!这是文档警告的原因,因为它授予所有命名空间的升级权限:|
【解决方案2】:

你可以:

  1. 使用您需要的资源创建集群角色,在本例中是在应用资源组中。
  2. 将其绑定到您的服务帐户。

例子:

kubectl create clusterrole deployer --verb=get,list,watch,create,delete,patch,update --resource=deployments.apps

kubectl create clusterrolebinding deployer-srvacct-default-binding --clusterrole=deployer --serviceaccount=default:default

【讨论】:

    【解决方案3】:

    它可能适用于 minikube,因为它为您设置了一个宽松(不安全)的政策。

    请参阅https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions,了解有关向服务帐户授予权限的信息。

    默认 RBAC 策略向控制平面组件、节点和控制器授予范围权限,但不向“kube-system”命名空间之外的服务帐户授予任何权限(除了授予所有经过身份验证的用户的发现权限)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 2019-06-30
      • 2021-02-28
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      相关资源
      最近更新 更多