Aiutaci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Vuoi contribuire a questa guida per l'utente? Scegli il GitHub link Modifica questa pagina che si trova nel riquadro destro di ogni pagina. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risolvi i problemi relativi al connettore Amazon EKS
In questo argomento sono descritti alcuni degli errori più comuni che si possono verificare durante l'utilizzo del connettore Amazon EKS e sono riportate le istruzioni per risolverli in maniera temporanea o definitiva.
Risoluzione dei problemi di base
Questa sezione descrive i passaggi per diagnosticare i problemi di Amazon EKS Connector.
Verifica dello stato di Amazon EKS Connector
Per verificare lo stato del connettore Amazon EKS, digita:
kubectl get pods -n eks-connector
Ispezione dei log del connettore Amazon EKS
Il connettore Amazon EKS Pod è composto da tre contenitori. Per recuperare i registri completi per tutti questi container in modo da poterli ispezionare, eseguire i seguenti comandi:
-
connector-init
kubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector
-
connector-proxy
kubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector
-
connector-agent
kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log
Ottenimento del nome effettivo del cluster
I cluster Amazon EKS sono identificati in modo univoco clusterName
all'interno di un unico AWS account e AWS regione. Se hai più cluster connessi in Amazon EKS, puoi confermare quale cluster Amazon EKS è quello attuale Kubernetes il cluster è registrato su. Per fare ciò, inserisci quanto segue per individuare il clusterName
del cluster corrente.
kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/"
Comandi vari
I seguenti comandi sono utili per recuperare le informazioni necessarie per risolvere i problemi.
-
Usa il seguente comando per raccogliere le immagini utilizzate da Pods nel connettore Amazon EKS.
kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n'
-
Usa il comando seguente per determinare i nomi dei nodi su cui è in esecuzione il connettore Amazon EKS.
kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n'
-
Esegui il seguente comando per ottenere il tuo Kubernetes versioni client e server.
kubectl version
-
Usa il comando seguente per ottenere informazioni sui tuoi nodi.
kubectl get nodes -o wide --show-labels
Problema di Helm: 403 Forbidden
Se hai riscontrato il seguente errore durante l'esecuzione dei comandi di installazione di helm:
Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden
Puoi eseguire la riga seguente per risolvere il problema:
docker logout public.ecr.aws
Errore della console: il cluster è bloccato nello stato Pending (In sospeso)
Se il cluster rimane bloccato nello Pending
stato della console Amazon EKS dopo la registrazione, è possibile che Amazon EKS Connector non abbia AWS ancora collegato correttamente il cluster. Per un cluster registrato, lo Pending
stato indica che la connessione non è stata stabilita correttamente. Per risolvere questo problema, assicurati di aver applicato il manifesto alla destinazione Kubernetes grappolo. Se l'hai applicato al cluster ma il cluster rimane ancora nello stato Pending
, lo statefulset eks-connector
potrebbe non essere integro. Per risolvere questo problema, consulta Connettore Amazon EKS Pods stanno andando in crash looping in questo argomento.
Errore della console: User system:serviceaccount:eks-connector:eks-connector non può impersonare gli utenti delle risorse nel gruppo di API nell'ambito del cluster
Il connettore Amazon EKS utilizza Kubernetes impersonificazione dell'utenteeks-connector
di servizio deve essere concessa l'autorizzazione a impersonare il corrispondente Kubernetes utente con un ARN IAM come Kubernetes nome utente. Negli esempi seguenti, l'ARN IAM è mappato su un Kubernetes utente.
-
L'utente IAM
john
dall' AWS account111122223333
è mappato su un Kubernetes utente. Le best practice IAM consigliano di concedere le autorizzazioni ai ruoli anziché agli utenti.arn:aws: iam::111122223333:user/john
-
Il ruolo IAM
admin
dell' AWS account111122223333
è mappato su un Kubernetes utente:arn:aws: iam::111122223333:role/admin
Il risultato è un ARN del ruolo IAM, anziché l'ARN della sessione AWS STS.
Per le istruzioni per configurare ClusterRole
e ClusterRoleBinding
per concedere il privilegio dell'account di servizio eks-connector
per impersonare l'utente mappato, consulta Concedi l'accesso alla visualizzazione Kubernetes raggruppa le risorse su una console Amazon EKS. Assicurati che nel modello %IAM_ARN%
venga sostituito con l'ARN IAM del principale AWS Management Console IAM.
Errore della console: [...] è vietato: l'utente [...] non può elencare la risorsa [...] nel gruppo API nell'ambito del cluster
Consideriamo il seguente problema. Il connettore Amazon EKS ha impersonato con successo il principale AWS Management Console IAM richiedente nella destinazione. Kubernetes ammasso. Tuttavia, il preside impersonato non dispone dell'autorizzazione RBAC per Kubernetes Operazioni API.
Per risolvere questo problema, esistono due metodi per concedere le autorizzazioni ad altri utenti. Se in precedenza hai installato eks-connector tramite un grafico Helm, puoi concedere facilmente l'accesso agli utenti eseguendo il seguente comando. Sostituisci userARN1
and userARN2
con un elenco ARNs dei ruoli IAM per consentire l'accesso alla visualizzazione di Kubernetes risorse:
helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ --reuse-values \ --set 'authentication.allowedUserARNs={userARN1,userARN2}'
Oppure, in qualità di amministratore del cluster, concedi il livello appropriato di privilegi RBAC ai singoli utenti Kubernetes utenti. Per maggiori informazioni ed esempi, consulta Concedi l'accesso alla visualizzazione Kubernetes raggruppa le risorse su una console Amazon EKS.
Errore della console: Amazon EKS non può comunicare con il tuo Kubernetes server API del cluster. Per una connessione corretta, il cluster deve trovarsi nello stato ACTIVE (ATTIVO). Riprova tra qualche minuto.
Se il servizio Amazon EKS non è in grado di comunicare con il connettore Amazon EKS nel cluster di destinazione, potrebbe essere per uno dei seguenti motivi:
-
Il connettore Amazon EKS nel cluster di destinazione non è integro.
-
Connettività scadente o connessione interrotta tra il cluster di destinazione e la AWS regione.
Per risolvere questo problema, controlla Amazon EKS Connector logs (Log del connettore Amazon EKS). Se non visualizzi alcun errore relativo al connettore Amazon EKS, riprova la connessione dopo alcuni minuti. Se riscontri regolarmente una connettività ad alta latenza o intermittente per il cluster di destinazione, prendi in considerazione la possibilità di registrare nuovamente il cluster in una AWS regione più vicina a te.
Connettore Amazon EKS Pods stanno andando in crash looping
Esistono molte ragioni che possono causare un connettore Amazon EKS. Pod per inserire lo CrashLoopBackOff
stato. Questo problema riguarda probabilmente il container connector-init
. Verifica lo stato del connettore Amazon EKS Pod.
kubectl get pods -n eks-connector
Di seguito viene riportato un output di esempio:
NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s
Se l'output è simile a quello precedente, consulta la pagina Ispezione dei log del connettore Amazon EKS per risolvere il problema.
Impossibile avviare eks-connector: InvalidActivation
Quando avvii il connettore Amazon EKS per la prima volta, il connettore registra un activationId
e un activationCode
con Amazon Web Services. La registrazione potrebbe non riuscire, causando un arresto anomalo del container connector-init
con un errore simile al seguente.
F1116 20:30:47.261469 1 init.go:43] failed to initiate eks-connector: InvalidActivation:
Per risolvere questo problema, prendere in considerazione le seguenti cause e le correzioni consigliate:
-
La registrazione potrebbe non essere riuscita perché gli
activationId
eactivationCode
non sono presenti nel file manifest. In questo caso, accertati che siano i valori corretti restituiti dall'operazione APIRegisterCluster
e cheactivationCode
sia presente nel file manifesto.activationCode
Viene aggiunto a Kubernetes segreti, quindi deve esserebase64
codificato. Per ulteriori informazioni, consulta Fase 1: Registrazione del cluster. -
La registrazione potrebbe non essere riuscita perché l'attivazione è scaduta. Ciò accade perché, per motivi di sicurezza, devi attivare il connettore Amazon EKS entro tre giorni dalla registrazione del cluster. Per risolvere questo problema, assicurati che il manifesto di Amazon EKS Connector sia applicato alla destinazione. Kubernetes raggruppa prima della data e dell'ora di scadenza. Per verificare la data di scadenza dell'attivazione, richiama l'operazione API
DescribeCluster
.aws eks describe-cluster --name my-cluster
Nella risposta di esempio seguente, la data e l'ora di scadenza vengono registrate come
2021-11-12T22:28:51.101000-08:00
.{ "cluster": { "name": "my-cluster", "arn": "arn:aws: eks:region:111122223333:cluster/my-cluster", "createdAt": "2021-11-09T22:28:51.449000-08:00", "status": "FAILED", "tags": { }, "connectorConfig": { "activationId": "00000000-0000-0000-0000-000000000000", "activationExpiry": "2021-11-12T22:28:51.101000-08:00", "provider": "OTHER", "roleArn": "arn:aws: iam::111122223333:role/my-connector-role" } } }
Se
activationExpiry
è passato, annulla la registrazione del cluster e registralo di nuovo. In questo modo si genera una nuova attivazione.
Nel nodo del cluster manca la connettività in uscita
Per funzionare correttamente, Amazon EKS Connector richiede connettività in uscita a diversi AWS endpoint. Non è possibile connettere un cluster privato senza connettività in uscita a una regione di destinazione. AWS Per risolvere il problema, è necessario aggiungere la connettività in uscita necessaria. Per informazioni sui requisiti del connettore, consultare Considerazioni su Amazon EKS Connector.
Connettore Amazon EKS Pods sono in ImagePullBackOff
stato
Se si esegue il get pods
comando e Pods sono nello ImagePullBackOff
stato, non possono funzionare correttamente. Se il connettore Amazon EKS Pods sono nello ImagePullBackOff
stato, non possono funzionare correttamente. Verifica lo stato del tuo connettore Amazon EKS Pods.
kubectl get pods -n eks-connector
Di seguito viene riportato un output di esempio:
NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:ImagePullBackOff 0 4s
Il file manifesto predefinito del connettore Amazon EKS fa riferimento alle immagini di Amazon ECR Public Gallery