web-dev-qa-db-fra.com

Erreur du serveur (interdit): erreur lors de la création ..: clusterroles.rbac.authorization.k8s.io ...: tentative d'accorder des privilèges supplémentaires:

Impossible de créer des rôles de cluster. <> déjà attribué en tant que "administrateur de moteur de conteneur" et "administrateur de cluster de moteur de conteneur"

Error from server (Forbidden): error when creating "prometheus-
operator/prometheus-operator-cluster-role.yaml":
clusterroles.rbac.authorization.k8s.io "prometheus-operator"
is forbidden: attempt to grant extra privileges: [{[create]
[extensions] [thirdpartyresources] [] []} {[*]
[monitoring.coreos.com] [alertmanagers] [] []} {[*]
[monitoring.coreos.com] [prometheuses] [] []} {[*]
[monitoring.coreos.com] [servicemonitors] [] []} {[*]
[apps] [statefulsets] [] []} {[*] [] [configmaps] [] []}
{[*] [] [secrets] [] []} {[list] [] [pods] [] []} {[delete]
[] [pods] [] []} {[get] [] [services] [] []} {[create]
[] [services] [] []} {[update] [] [services] [] []} {[get]
[] [endpoints] [] []} {[create] [] [endpoints] [] []}
{[update] [] [endpoints] [] []} {[list] [] [nodes]
[] []} {[watch] [] [nodes] [] []}]
user=&{<<my_account>>@gmail.com
[system:authenticated] map[]} ownerrules=[{[create]
[authorization.k8s.io] [selfsubjectaccessreviews]
[] []} {[get] [] [] [] [/api /api/* /apis /apis/*
/healthz /swaggerapi /swaggerapi/* /version]}]
ruleResolutionErrors=[]
20
ccyang2005

Basé sur https://cloud.google.com/container-engine/docs/role-based-access-control#setting_up_role-based_access_control

En raison de la façon dont Container Engine vérifie les autorisations lorsque vous créez un rôle ou ClusterRole, vous devez d'abord créer un RoleBinding qui vous accorde toutes les autorisations incluses dans le rôle que vous souhaitez créer.

Un exemple de solution consiste à créer un RoleBinding qui donne à votre identité Google un rôle d'administrateur de cluster avant d'essayer de créer des rôles ou des clusters de rôles supplémentaires.

Il s'agit d'un problème connu dans la version bêta du contrôle d'accès basé sur les rôles dans Kubernetes et Container Engine version 1.6.

Vous devez donc associer votre compte à un rôle d'administrateur de cluster.

12
monis

J'ai le même problème sur Google Kubernetes Engine.

Selon la réponse de enj et le commentaire de ccyang2005 veuillez trouver le snipet suivant qui résout mon problème :)

Étape 1: Obtenez votre identité

gcloud info | grep Account

Vous affichera quelque chose comme Account: [[email protected]]

Étape 2: Accordez cluster-admin à votre identité actuelle

kubectl create clusterrolebinding myname-cluster-admin-binding \
  --clusterrole=cluster-admin \
  [email protected]

Sortira quelque chose comme Clusterrolebinding "myname-cluster-admin-binding" created


Après cela, vous pourrez créer des CusterRoles

44
alphayax