Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso risolvere l'errore "Your current user or role does not have access to Kubernetes objects on this EKS cluster" in Amazon EKS?
Ho provato ad accedere al mio cluster Amazon Elastic Kubernetes Service (Amazon EKS). Ma ho ricevuto il messaggio di errore "Your current user or role does not have access to Kubernetes objects on this EKS cluster".
Breve descrizione
Si verifica un errore di accesso quando un'identità AWS Identity and Access Management (AWS IAM) non ha le autorizzazioni di controllo degli accessi basate sui ruoli (RBAC) per Kubernetes. Per accedere all'API Kubernetes, devi avere le autorizzazioni RBAC. Per ulteriori informazioni, consulta Using RBAC authorization (Utilizzo dell'autorizzazione RBAC) sul sito web Kubernetes. Per visualizzare le risorse Kubernetes sulla Console di gestione AWS, l'identità IAM deve essere mappata sulla ConfigMap aws-auth nel cluster Amazon EKS.
Importante: la seguente risoluzione utilizza la ConfigMap aws-auth per allinearsi all'approccio Kubernetes per accedere alle autorizzazioni RBAC. È consigliabile eseguire la migrazione delle voci della ConfigMap aws-auth esistenti per accedervi.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Se sei il creatore o l'utente amministratore del cluster, puoi utilizzare kubectl o eksctl per aggiornare la ConfigMap aws-auth. Vai alla sezione Aggiungi l'utente o il ruolo IAM alla configurazione RBAC. Altrimenti, devi ottenere il nome della risorsa Amazon (ARN) dell'identità IAM che richiede l'accesso al cluster.
Ottieni l'ARN dell'identità IAM che richiede l'accesso al cluster
Identifica l'utente o il ruolo IAM che richiede l'accesso al cluster.
Nota: l'identità IAM potrebbe essere diversa dall'identità IAM utilizzata quando esegui AWS CLI. AWS IAM Authenticator per Kubernetes non consente un percorso nel ruolo ARN utilizzato nella ConfigMap aws-auth. Per ulteriori informazioni, consulta aws-iam-authenticator sul sito web GitHub.
Se hai l'accesso AWS CLI all'utente o al ruolo IAM, esegui questo comando AWS CLI get-caller-identity:
aws sts get-caller-identity --query "Arn"
Nota: se non hai l'accesso AWS CLI, rimuovi le virgolette da Arn ed esegui il comando precedente in AWS CloudShell.
Esempio di output:
"arn:aws:iam::111122223333:role/testrole"
Se l'output del comando mostra un ARN del ruolo IAM, verifica che sia nel formato ARN corretto: arn:aws:iam::111122223333:role/example.
Se l'ARN include il ruolo assunto, devi ottenere l'ARN del ruolo IAM a cui stai concedendo le autorizzazioni RBAC. Ad esempio, il ruolo ARN assunto di arn:aws:sts::123456:assumed-role/MyRole/your_username è associato al ruolo ARN di arn:aws:sts::123456:role/MyRole.
Fornisci l'ARN all'amministratore del cluster, quindi richiedi che l'amministratore aggiunga l'ARN del ruolo alla ConfigMap aws-auth. Per la procedura di aggiunta dell'ARN alla ConfigMap aws-auth, vai alla sezione Aggiungi l'utente o il ruolo IAM alla configurazione RBAC.
Verifica che l'utente o il ruolo IAM identificato abbia le autorizzazioni per visualizzare i nodi e i carichi di lavoro di tutti i cluster nella Console di gestione AWS.
Identifica il creatore del cluster
Importante: solo l'entità IAM associata alla creazione del cluster ha accesso alle risorse del cluster. Solo il creatore del cluster può modificare la ConfigMap aws-auth e fornire l'accesso ad altre entità IAM.
Identifica il ruolo di creatore o amministratore del cluster che ha le autorizzazioni primarie per configurare il cluster. Prima di tutto, controlla la cronologia degli eventi di AWS CloudTrail per la chiamata API CreateCluster. Quindi controlla il campo UserIdentity.
Se il nome del creatore del cluster viene visualizzato come Eliminato in CloudTrail, crea un nuovo utente o ruolo IAM con lo stesso nome. La nuova identità IAM ha lo stesso ARN del creatore del cluster originale, quindi la nuova identità eredita lo stesso accesso di amministratore al cluster.
Nota: CloudTrail non fornisce il nome del creatore del cluster per i cluster che hanno più di 90 giorni.
Per ottenere l'identità IAM del creatore del cluster utilizzando AWS CLI, esegui questo comando get-caller-identity:
aws sts get-caller-identity
Esempio di output:
{ "UserId": "AIDACKCEVSQ6C2EXAMPLE", "Account": "111122223333", "Arn": "arn:aws:iam:: 111122223333:user/testuser" }
Aggiungi l'utente o il ruolo IAM alla configurazione RBAC
Se hai installato eksctl, esegui questo comando eksctl create iamidentitymapping per aggiornare la ConfigMap aws-auth:
eksctl create iamidentitymapping --cluster your_cluster_name --region=your_region --arn your_IAM_ARN --group system:masters --username admin
Nota: sostituisci your_cluster_name con il nome del tuo cluster, your_region con la tua Regione AWS e your_IAM_ARN con l'ARN del tuo utente o ruolo IAM.
Per aggiornare la ConfigMap aws-auth utilizzando kubectl, completa i seguenti passaggi:
-
Esegui questo comando per aprire la ConfigMap aws-auth nell'editor di testo predefinito:
kubectl edit configmap aws-auth -n kube-systemNota: la console mostra la ConfigMap corrente. Se non riesci a connetterti al cluster, aggiorna il file kubeconfig. L'identità IAM che crea il cluster ha sempre accesso al cluster.
-
Esegui questo comando update-kubeconfig per configurare kubectl in modo da poterti connettere al cluster:
aws eks update-kubeconfig --region region_code --name your_cluster_nameNota: sostituisci region_code con la tua Regione e your_cluster_name con il nome del tuo cluster. I comandi kubectl devono connettersi all'endpoint del server Amazon EKS. Se l'endpoint del server API è pubblico, per connettersi all'endpoint devi disporre dell'accesso a Internet. Se l'endpoint è privato, connettiti all'endpoint del server dal cloud privato virtuale (VPC) in cui è in esecuzione il cluster.
-
Nell'editor di testo che si apre, inserisci il seguente codice per aggiungere un utente IAM:
mapUsers: | - userarn: arn:aws:iam::111122223333:user/testuser username: testuser groups: - system:bootstrappers - system:nodesNota: sostituisci 111122223333 con l'ID del tuo account AWS e testuser con il tuo utente IAM.
Oppure inserisci il seguente codice per aggiungere un ruolo IAM:
mapRoles: | - rolearn: arn:aws:iam::111122223333:role/testrole username: testrole groups: - system:bootstrappers - system:nodesNota: sostituisci 111122223333 con l'ID del tuo account e testrole con il tuo ruolo IAM.
Se crei un cluster, l'identità IAM riceve automaticamente le autorizzazioni system:masters nella configurazione RBAC del cluster. Per impostazione predefinita, il gruppo system:masters è associato al ruolo del cluster cluster-admin.
Non è consigliabile utilizzare le autorizzazioni system:masters in un ambiente di produzione. Le autorizzazioni system:masters forniscono agli utenti l'accesso completo a tutte le risorse Kubernetes nel cluster. È invece consigliabile creare un ruolo che abbia accesso unicamente a un namespace specifico con le sole autorizzazioni richieste.
Verifica l'accesso al cluster
Completa i seguenti passaggi:
- Apri la console Amazon EKS.
- Nel pannello di navigazione, scegliCluster.
- Seleziona il cluster.
- Controlla la presenza di errori nelle schede Panoramica e Carichi di lavoro.
Se vedi errori, consulta Risoluzione dei problemi di IAM. Ad esempio, se hai configurato l'accesso RBAC per un namespace specifico, potresti ricevere il seguente messaggio di errore:
"Error loading Deployments : deployments.apps is forbidden: User "AIDACKCEVSQ6C2EXAMPLE" cannot list resource "deployments" in API group "apps" at the cluster scope or in the namespace "EXAMPLENAMESPACE"
Per risolvere l'errore del namespace, devi creare o aggiornare il ruolo RBAC o il ruolo del cluster con le associazioni di ruolo o di ruolo del cluster appropriate. Per ulteriori informazioni, consulta RoleBinding and ClusterRoleBinding (RoleBinding e ClusterRoleBinding) sul sito web Kubernetes.
- Argomenti
- Containers
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 3 anni fa