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? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. 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 con i EKS cluster e i nodi Amazon
Questo capitolo descrive alcuni errori comuni che potresti riscontrare durante l'utilizzo di Amazon EKS e come aggirarli. Se hai bisogno di risolvere EKS aree Amazon specifiche, consulta gli argomenti separati Risoluzione dei problemi relativi a IAM e Risoluzione dei problemi per l'ADOTutilizzo dei EKS componenti aggiuntivi
Per altre informazioni sulla risoluzione dei problemi, consulta i contenuti del Knowledge Center su Amazon Elastic Kubernetes Service su re:POST
Capacità insufficiente
Se ricevi il seguente errore durante il tentativo di creare un EKS cluster Amazon, significa che una delle zone di disponibilità che hai specificato non ha una capacità sufficiente per supportare un cluster.
Cannot create cluster 'example-cluster' because region-1d, the targeted Availability Zone, does not currently have sufficient capacity to support the cluster. Retry and choose from these Availability Zones: region-1a, region-1b, region-1c
Riprova a creare il cluster con le sottoreti del cluster ospitate nelle zone di disponibilità restituite da VPC questo messaggio di errore.
Esistono zone di disponibilità in cui un cluster non può risiedere. Confronta le zone di disponibilità in cui si trovano le tue sottoreti con l'elenco delle zone di disponibilità nella sezione Requisiti e considerazioni sulla Considerazioni e requisiti relativi alle sottoreti sottorete.
Impossibile aggiungere i nodi al cluster
Ci sono diversi motivi comuni che impediscono l'aggiunta dei nodi di lavoro al cluster:
-
Se i nodi sono nodi gestiti, Amazon EKS aggiunge voci al
aws-auth
ConfigMap
momento della creazione del gruppo di nodi. Se la voce è stata rimossa o modificata, è necessario aggiungerla nuovamente. Per ulteriori informazioni, digitaeksctl create iamidentitymapping --help
nel terminale. Puoi visualizzare leaws-auth
ConfigMap
voci correntimy-cluster
sostituendo il seguente comando con il nome del cluster e quindi eseguendo il comando modificato:eksctl get iamidentitymapping --cluster
my-cluster
. The ARN of the role that you specify can’t include a path other than/
. For example, if the name of your role isdevelopment/apps/my-role
, you’d need to change it tomy-role
when specifying the ARN for the role. Make sure that you specify the node IAM role ARN (not the instance profile ARN).Se i nodi sono autogestiti e non hai creato voci di Grant IAM accesso degli utenti a Kubernetes con voci di EKS accesso accesso per il IAM ruolo ARN del nodo, esegui gli stessi comandi elencati per i nodi gestiti. Se hai creato una voce di accesso per il IAM ruolo ARN for your node, è possibile che non sia configurata correttamente nella voce di accesso. Assicuratevi che il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN) sia specificato come principale ARN nella
aws-auth
ConfigMap
voce o nella voce di accesso. Per ulteriori informazioni sulle voci di accesso, consulta la sezione Grant IAM accesso degli utenti a Kubernetes con voci di EKS accesso. -
Il AWS CloudFormation modello ClusterNamenel tuo nodo non corrisponde esattamente al nome del cluster a cui desideri che i nodi si uniscano. Il passaggio di un valore errato a questo campo comporta una configurazione errata del
/var/lib/kubelet/kubeconfig
file del nodo e i nodi non entreranno a far parte del cluster. -
Il nodo non è taggato come appartenente al cluster. Ai nodi deve essere applicato il tag seguente, dove
my-cluster
viene sostituito con il nome del cluster.Chiave Valore kubernetes.io/cluster/
my-cluster
owned
-
I nodi potrebbero non essere in grado di accedere al cluster utilizzando un indirizzo IP pubblico. Assicurarsi che ai nodi implementati nelle sottoreti pubbliche venga assegnato un indirizzo IP pubblico. In caso contrario, puoi associare un indirizzo IP elastico a un nodo dopo l'avvio. Per ulteriori informazioni, consulta Associazione di un indirizzo IP elastico a un'istanza o a un'interfaccia di rete in esecuzione. Se nella sottorete pubblica non è impostata l'assegnazione degli indirizzi IP pubblici alle istanze implementate, è consigliabile abilitare l'impostazione. Per ulteriori informazioni, consulta Modifica dell'attributo di assegnazione degli indirizzi IPv4 pubblici per la sottorete. Se il nodo viene distribuito in una sottorete privata, alla sottorete deve essere assegnato un percorso verso un NAT gateway a cui è assegnato un indirizzo IP pubblico.
-
L' AWS STSendpoint per la AWS regione in cui stai distribuendo i nodi non è abilitato per il tuo account. Per abilitare la regione, vedi Attivazione e disattivazione AWS STS in una regione. AWS
-
Il nodo non ha una DNS voce privata, pertanto il
kubelet
registro contiene un errore.node "" not found
Assicurati che il VPC luogo in cui viene creato il nodo abbia valori impostati perdomain-name
edomain-name-servers
comeOptions
in aDHCP options set
. I valori predefiniti sonodomain-name:<region>.compute.internal
edomain-name-servers:AmazonProvidedDNS
. Per ulteriori informazioni, consulta i set di DHCP opzioni nella Amazon VPC User Guide. -
Se i nodi del gruppo di nodi gestiti non si connettono al cluster entro 15 minuti, verrà emesso un problema di integrità pari a NodeCreationFailure "" e lo stato della console verrà impostato
Create failed
su. In Windows AMIsche hanno tempi di avvio lenti, questo problema può essere risolto utilizzando l'avvio rapido.
Per identificare e risolvere i problemi più comuni che impediscono ai nodi worker di unirsi a un cluster, puoi utilizzare il runbook AWSSupport-TroubleshootEKSWorkerNode
. Per ulteriori informazioni, vedere il riferimento
AWSSupport-TroubleshootEKSWorkerNode
al runbook di riferimento di AWS Systems Manager Automation.
Accesso negato o non autorizzato (kubectl
)
Se ricevi uno dei seguenti errori durante l'esecuzione dei kubectl
comandi, significa che non hai kubectl
configurato correttamente per Amazon EKS o le credenziali per il IAM principale (ruolo o utente) che stai utilizzando non sono mappate a un Kubernetes nome utente con autorizzazioni sufficienti per Kubernetes oggetti sul tuo EKS cluster Amazon.
-
could not get token: AccessDenied: Access denied
-
error: You must be logged in to the server (Unauthorized)
-
error: the server doesn’t have a resource type "svc"
Questo potrebbe essere dovuto a uno dei seguenti fattori:
-
Il cluster è stato creato con le credenziali per un IAM principale ed
kubectl
è configurato per utilizzare le credenziali per un principale diversoIAM. Per risolvere il problema, aggiorna il filekube config
affinché vengano utilizzate le credenziali con cui è stato creato il cluster. Per ulteriori informazioni, consulta Connect kubectl a un EKS cluster creando un file kubeconfig. -
Se il cluster soddisfa i requisiti minimi di piattaforma nella sezione Prerequisiti di Grant IAM accesso degli utenti a Kubernetes con voci di EKS accesso Concedi IAM agli utenti l'accesso a Kubernetes con le voci di EKS accesso, non esiste una voce di accesso con il tuo principale. IAM Se esiste, non dispone dei dati necessari Kubernetes i nomi dei gruppi sono stati definiti o non è associata la politica di accesso appropriata. Per ulteriori informazioni, consulta Grant IAM accesso degli utenti a Kubernetes con voci di EKS accesso.
-
Se il tuo cluster non soddisfa i requisiti minimi di piattaforma in Grant IAM accesso degli utenti a Kubernetes con voci di EKS accesso Concedi IAM agli utenti l'accesso a Kubernetes con le voci di EKS accesso, non esiste una voce con il tuo IAM principale in.
aws-auth
ConfigMap
Se esiste, non è mappato su Kubernetes nomi di gruppi associati a KubernetesRole
oClusterRole
con le autorizzazioni necessarie. Per ulteriori informazioni sull' Kubernetes oggetti di autorizzazione basati sul ruolo (RBAC), vedere Utilizzo RBACdell'autorizzazione in Kubernetes documentazione. È possibile visualizzare le aws-auth
ConfigMap
voci correntimy-cluster
sostituendo il comando seguente con il nome del cluster e quindi eseguendo il comando modificato:eksctl get iamidentitymapping --cluster
my-cluster
. If an entry for with the ARN of your IAM principal isn’t in theConfigMap
, entereksctl create iamidentitymapping --help
in your terminal to learn how to create one.
Se si installa e si configura il AWS CLI, è possibile configurare IAM le credenziali utilizzate. Per ulteriori informazioni, vedere Configurazione della Guida per l'utente dell'interfaccia AWS CLI a riga di AWS comando. È inoltre possibile kubectl
configurare l'utilizzo di un IAM ruolo, se si assume un IAM ruolo di accesso Kubernetes oggetti sul tuo cluster. Per ulteriori informazioni, consulta Connect kubectl a un EKS cluster creando un file kubeconfig.
hostname doesn’t match
La versione Python del sistema deve essere 2.7.9
o successiva. In caso contrario, riceverai hostname doesn’t match
errori nelle AWS CLI chiamate verso AmazonEKS. Per ulteriori informazioni, consulta Cosa sono gli errori «il nome host non corrisponde»?
getsockopt: no route to host
Docker viene eseguito nell'172.17.0.0/16
CIDRintervallo nei EKS cluster Amazon. Ti consigliamo che le VPC sottoreti del tuo cluster non si sovrappongano a questo intervallo. In caso contrario, riceverai il seguente messaggio di errore:
Error: : error upgrading connection: error dialing backend: dial tcp 172.17.<nn>.<nn>:10250: getsockopt: no route to host
Instances failed to join the Kubernetes cluster
Se ricevi l'errore Instances failed to join the Kubernetes cluster
in AWS Management Console, assicurati che l'accesso privato agli endpoint del cluster sia abilitato o di aver configurato correttamente i CIDR blocchi per l'accesso pubblico agli endpoint. Per ulteriori informazioni, consulta Controlla l'accesso alla rete all'endpoint API del server del cluster.
Codici di errore dei gruppi di nodi gestiti
Se il tuo gruppo di nodi gestiti riscontra un problema di integrità dell'hardware, Amazon EKS restituisce un codice di errore per aiutarti a diagnosticare il problema. Questi controlli sanitari non rilevano problemi software perché si basano sui controlli EC2 sanitari di Amazon. Nel seguente elenco vengono descritti i codici di errore.
- AccessDenied
-
Amazon EKS o uno o più dei tuoi nodi gestiti non riescono ad autenticarsi o autorizzare con il Kubernetes server di cluster. API Per ulteriori informazioni sulla risoluzione di un problema comune, consulta Risoluzione di una causa comune di errori AccessDenied per i gruppi di nodi gestiti. Privata Windows AMIspuò anche causare questo codice di errore insieme al messaggio
Not authorized for images
di errore. Per ulteriori informazioni, consulta Not authorized for images. - AmiIdNotFound
-
Non siamo riusciti a trovare l'AMIID associato al tuo modello di lancio. Assicurati che AMI esista e sia condiviso con il tuo account.
- AutoScalingGroupNotFound
-
Non siamo riusciti a trovare il gruppo Auto Scaling associato al gruppo di nodi gestiti. Potresti ricreare un gruppo con dimensionamento automatico con le stesse impostazioni per procedere con il ripristino.
- ClusterUnreachable
-
Amazon EKS o uno o più dei tuoi nodi gestiti non sono in grado di comunicare con il Kubernetes APIserver di cluster. Ciò può accadere in caso di interruzioni della rete o se API i server stanno scadendo l'elaborazione delle richieste.
- Ec2 SecurityGroupNotFound
-
Non siamo riusciti a trovare il gruppo di sicurezza del cluster per il cluster. È necessario ricreare il cluster.
- Ec2 SecurityGroupDeletionFailure
-
Non è stato possibile eliminare il gruppo di sicurezza dell'accesso remoto per il gruppo di nodi gestiti. Rimuovi eventuali dipendenze dal gruppo di sicurezza.
- Ec 2 LaunchTemplateNotFound
-
Non siamo riusciti a trovare il modello di EC2 lancio di Amazon per il tuo gruppo di nodi gestito. È necessario ricreare il gruppo di nodi per procedere con il ripristino.
- Ec2 LaunchTemplateVersionMismatch
-
La versione del modello di EC2 lancio di Amazon per il tuo gruppo di nodi gestiti non corrisponde alla versione EKS creata da Amazon. Potresti riuscire a ripristinare la versione che Amazon EKS ha creato per il ripristino.
- IamInstanceProfileNotFound
-
Non siamo riusciti a trovare il profilo di IAM istanza per il tuo gruppo di nodi gestiti. Potresti ricreare un profilo dell'istanza con le stesse impostazioni per il ripristino.
- IamNodeRoleNotFound
-
Non siamo riusciti a trovare il IAM ruolo per il tuo gruppo di nodi gestiti. Potresti riuscire a ricreare un IAM ruolo con le stesse impostazioni da ripristinare.
- AsgInstanceLaunchFailures
-
Il gruppo con dimensionamento automatico sta riscontrando errori nel tentativo di avviare le istanze.
- NodeCreationFailure
-
Le istanze avviate non sono in grado di registrarsi nel EKS cluster Amazon. Le cause più comuni di questo errore sono le autorizzazioni insufficienti per i IAM ruoli dei IAMRuolo EKS del nodo Amazon nodi o la mancanza di accesso a Internet in uscita per i nodi. I nodi devono soddisfare uno dei requisiti seguenti:
-
Devono essere in grado di accedere a Internet utilizzando un indirizzo IP pubblico. Il gruppo di sicurezza associato alla sottorete in cui si trova il nodo deve consentire la comunicazione. Per ulteriori informazioni, consulta Considerazioni e requisiti relativi alle sottoreti e Visualizza i requisiti EKS dei gruppi di sicurezza Amazon per i cluster.
-
I tuoi nodi VPC devono soddisfare i requisiti di Implementa cluster privati con accesso limitato a Internet Deploy private cluster con accesso limitato a Internet.
-
- InstanceLimitExceeded
-
Il tuo AWS account non è in grado di avviare altre istanze del tipo di istanza specificato. Potresti richiedere un aumento del limite di EC2 istanze Amazon per il ripristino.
- InsufficientFreeAddresses
-
Una o più sottoreti associate al tuo gruppo di nodi gestiti non hanno abbastanza indirizzi IP disponibili per i nuovi nodi.
- InternalFailure
-
Questi errori sono in genere causati da un problema EKS sul lato server di Amazon.
La causa più comune degli errori AccessDenied
durante l'esecuzione di operazioni su gruppi di nodi gestiti è la mancanza di eks:node-manager
ClusterRole
o ClusterRoleBinding
. Amazon EKS configura queste risorse nel tuo cluster come parte dell'onboarding con gruppi di nodi gestiti e sono necessarie per la gestione dei gruppi di nodi.
Il ClusterRole
può cambiare nel tempo, ma dovrebbe essere simile all'esempio seguente:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:node-manager rules: - apiGroups: - '' resources: - pods verbs: - get - list - watch - delete - apiGroups: - '' resources: - nodes verbs: - get - list - watch - patch - apiGroups: - '' resources: - pods/eviction verbs: - create
Il ClusterRoleBinding
può cambiare nel tempo, ma dovrebbe essere simile all'esempio seguente:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:node-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:node-manager subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: eks:node-manager
Verifica che il eks:node-manager
ClusterRole
esista.
kubectl describe clusterrole eks:node-manager
Se presente, confrontare l'output con il precedente esempio ClusterRole
.
Verifica che il eks:node-manager
ClusterRoleBinding
esista.
kubectl describe clusterrolebinding eks:node-manager
Se presente, confrontare l'output con il precedente esempio ClusterRoleBinding
.
Se hai identificato un elemento mancante o danneggiato ClusterRole
o ClusterRoleBinding
la causa di un AcessDenied
errore durante la richiesta di operazioni gestite sui gruppi di nodi, puoi ripristinarlo. Salva nel computer i seguenti contenuti in un file denominato eks-node-manager-role.yaml
.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:node-manager rules: - apiGroups: - '' resources: - pods verbs: - get - list - watch - delete - apiGroups: - '' resources: - nodes verbs: - get - list - watch - patch - apiGroups: - '' resources: - pods/eviction verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:node-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:node-manager subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: eks:node-manager
Applica il file.
kubectl apply -f eks-node-manager-role.yaml
Riprova l'operazione per il gruppo di nodi per verificare se il problema è stato risolto.
Not authorized for images
Una potenziale causa di un messaggio di Not authorized for images
errore è l'utilizzo di un Amazon privato EKS Windows AMIlanciare Windows gruppi di nodi gestiti. Dopo aver rilasciato nuovi Windows AMIs, AWS rende privati AMIs i file più vecchi di 4 mesi, il che li rende non più accessibili. Se il gruppo di nodi gestito utilizza un nodo privato Windows AMI, valuta la possibilità di Aggiorna un gruppo di nodi gestiti per il tuo cluster aggiornare il gruppo di nodi gestiti di Windows. Sebbene non possiamo garantire di poter fornire l'accesso a AMIs ciò che è stato reso privato, puoi richiedere l'accesso inviando un ticket a AWS Support. Per ulteriori informazioni, consulta Patches nella Amazon EC2 User Guide.
Il nodo è in NotReady
stato
Se il nodo entra in uno NotReady
stato, è probabile che ciò indichi che il nodo non è integro e non è disponibile per programmarne uno nuovo Pods. Ciò può verificarsi per vari motivi, ad esempio la mancanza di risorse sufficienti per il nodoCPU, di memoria o di spazio su disco disponibile.
EKSOttimizzato per Amazon Windows AMIs, non è prevista alcuna prenotazione per le risorse di elaborazione specificate di default nella kubelet
configurazione. Per evitare problemi relativi alle risorse, puoi riservare le risorse di calcolo per i processi di sistema fornendo loro i kubelet
valori di configurazione per kube-reserved-KubeletExtraArgs
comando nello script bootstrap. Per ulteriori informazioni, vedete Reserve Compute Resources for
CNIstrumento di raccolta dei registri
Il Amazon VPC CNI plugin for Kubernetes dispone di un proprio script di risoluzione dei problemi disponibile sui nodi all'indirizzo/opt/cni/bin/aws-cni-support.sh
. È possibile utilizzare lo script per raccogliere i registri diagnostici per i casi di supporto e per la risoluzione dei problemi generali.
Utilizza il comando seguente per eseguire lo script sul nodo:
sudo bash /opt/cni/bin/aws-cni-support.sh
Nota
Se lo script non è presente in quella posizione, l'esecuzione del CNI contenitore non è riuscita. Puoi scaricare manualmente lo script ed eseguirlo con il comando seguente:
curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.sh sudo bash eks-log-collector.sh
Lo script raccoglie le seguenti informazioni di diagnostica: La CNI versione che hai distribuito può essere precedente alla versione dello script.
This is version 0.6.1. New versions can be found at https://github.com/awslabs/amazon-eks-ami Trying to collect common operating system logs... Trying to collect kernel logs... Trying to collect mount points and volume information... Trying to collect SELinux status... Trying to collect iptables information... Trying to collect installed packages... Trying to collect active system services... Trying to collect Docker daemon information... Trying to collect kubelet information... Trying to collect L-IPAMD information... Trying to collect sysctls information... Trying to collect networking information... Trying to collect CNI configuration information... Trying to collect running Docker containers and gather container data... Trying to collect Docker daemon logs... Trying to archive gathered information... Done... your bundled logs are located in /var/log/eks_i-0717c9d54b6cfaa19_2020-03-24_0103-UTC_0.6.1.tar.gz
Le informazioni di diagnostica vengono raccolte e archiviate in:
/var/log/eks_i-0717c9d54b6cfaa19_2020-03-24_0103-UTC_0.6.1.tar.gz
Rete runtime container non pronta
Potresti visualizzare un errore Container runtime network not ready
ed errori di autorizzazione analoghi al seguente:
4191 kubelet.go:2130] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized 4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized 4191 kubelet_node_status.go:106] Unable to register node "ip-10-40-175-122.ec2.internal" with API server: Unauthorized 4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized
Questo può verificarsi per uno dei seguenti motivi:
-
O non ne hai uno
aws-auth
ConfigMap
nel tuo cluster o non include voci per il IAM ruolo con cui hai configurato i tuoi nodi.Per risolvere il problema, visualizza le voci esistenti nel tuo file
ConfigMap
my-cluster
sostituendo il seguente comando con il nome del cluster e quindi eseguendo il comando modificato:eksctl get iamidentitymapping --cluster
my-cluster
. If you receive an error message from the command, it might be because your cluster doesn’t have anaws-auth
ConfigMap
. The following command adds an entry to theConfigMap
. If theConfigMap
doesn’t exist, the command also creates it. Replace111122223333
with the AWS account ID for the IAM role andmyAmazonEKSNodeRole
with the name of your node’s role.eksctl create iamidentitymapping --cluster my-cluster \ --arn arn:aws: iam::111122223333:role/myAmazonEKSNodeRole --group system:bootstrappers,system:nodes \ --username system:node:{{EC2PrivateDNSName}}
Il ARN ruolo specificato non può includere un percorso diverso da
/
. Ad esempio, se il nome del tuo ruolo èdevelopment/apps/my-role
, dovresti cambiarlo inmy-role
quando specifichi il ARN ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).percorso diverso da
/
. Ad esempio, se il nome del tuo ruolo èdevelopment/apps/my-role
, dovresti cambiarlo inmy-role
quando specifichi il ARN ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).diverso da
/
. Ad esempio, se il nome del tuo ruolo èdevelopment/apps/my-role
, dovresti cambiarlo inmy-role
quando specifichi il ARN ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN)./
. Ad esempio, se il nome del tuo ruolo èdevelopment/apps/my-role
, dovresti cambiarlo inmy-role
quando specifichi il ARN ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).. Ad esempio, se il nome del tuo ruolo è
development/apps/my-role
, dovresti cambiarlo inmy-role
quando specifichi il ARN ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).development/apps/my-role
, dovresti cambiarlomy-role
quando specifichi ARN il ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN)., dovresti cambiarlo
my-role
quando specifichi ARN il ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).my-role
quando si specifica ARN il ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).quando si specifica ARN il ruolo. Assicurati di specificare il IAM ruolo del nodo ARN (non il profilo dell'istanzaARN).
-
I tuoi nodi autogestiti si trovano in un cluster con una versione della piattaforma alla versione minima elencata nei prerequisiti nell'argomento Grant IAM accesso degli utenti a Kubernetes con voci di EKS accesso Concedi IAM agli utenti l'accesso a Kubernetes con voci di EKS accesso, ma non è elencata una voce
aws-auth
ConfigMap
(vedi articolo precedente) per il IAM ruolo del nodo o non esiste una voce di accesso per il ruolo. Per risolvere il problema, visualizza le voci di accesso esistentimy-cluster
sostituendo il comando seguente con il nome del cluster e quindi eseguendo il comando modificato:aws eks list-access-entries --cluster-name
my-cluster
. The following command adds an access entry for the node’s IAM role. Replace111122223333
with the AWS account ID for the IAM role andmyAmazonEKSNodeRole
with the name of your node’s role. If you have a Windows node, replaceEC2_Linux
withEC2_Windows
. Make sure that you specify the node IAM role ARN (not the instance profile ARN).aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws: iam::111122223333:role/myAmazonEKSNodeRole --type EC2_Linux
TLShandshake (timeout)
Quando un nodo non è in grado di stabilire una connessione all'endpoint del API server pubblico, è possibile che venga visualizzato un errore simile al seguente.
server.go:233] failed to run Kubelet: could not init cloud provider "aws": error finding instance i-1111f2222f333e44c: "error listing AWS instances: \"RequestError: send request failed\\ncaused by: Post net/http: TLS handshake timeout\""
Il kubelet
processo verrà riavviato e testato continuamente l'endpoint del API server. L'errore può verificarsi anche temporaneamente durante qualsiasi procedura che esegue un aggiornamento in sequenza del cluster nel piano di controllo, ad esempio una modifica della configurazione o un aggiornamento della versione.
Per risolvere il problema, controlla la tabella di routing e i gruppi di sicurezza per assicurarti che il traffico proveniente dai nodi possa raggiungere l'endpoint pubblico.
InvalidClientTokenId
Se utilizzi IAM ruoli per gli account di servizio per un Pod oppure DaemonSet distribuito in un cluster in una AWS regione della Cina e non ho impostato la variabile di AWS_DEFAULT_REGION
ambiente nelle specifiche, Pod oppure DaemonSet potrebbe ricevere il seguente errore:
An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation: The security token included in the request is invalid
Per risolvere il problema, è necessario aggiungere la variabile di AWS_DEFAULT_REGION
ambiente al Pod oppure DaemonSet spec, come illustrato nell'esempio seguente Pod spec.
apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: AWS_DEFAULT_REGION value: "region-code"
I gruppi di nodi devono corrispondere Kubernetes versione prima dell'aggiornamento del piano di controllo
Prima di aggiornare un piano di controllo a uno nuovo Kubernetes versione, la versione secondaria dei nodi gestiti e Fargate nel cluster deve essere la stessa della versione corrente del piano di controllo. Amazon EKS update-cluster-version
API rifiuta le richieste finché non esegui l'upgrade di tutti i nodi EKS gestiti da Amazon alla versione corrente del cluster. Amazon EKS fornisce APIs l'aggiornamento dei nodi gestiti. Per informazioni sull'aggiornamento di un gruppo di nodi gestiti Kubernetes versione, vedi. Aggiorna un gruppo di nodi gestiti per il tuo cluster Per aggiornare la versione di un nodo Fargate, elimina il pod è rappresentato dal nodo e ridistribuisci il pod dopo aver aggiornato il piano di controllo. Per ulteriori informazioni, consulta Aggiorna il cluster esistente alla nuova versione di Kubernetes.
All'avvio di molti nodi, si verificano errori Too Many Requests
Se avvii più nodi contemporaneamente, potresti visualizzare un messaggio di errore nei log di esecuzione dei dati EC2 degli utenti di Amazon che diceToo Many Requests
. Ciò può verificarsi perché il piano di controllo è sovraccarico di chiamate describeCluster
. Il sovraccarico si traduce in limitazione (della larghezza di banda della rete), nodi che non eseguono lo script bootstrap e nodo che non vengono aggiunti al cluster.
Assicurati che --apiserver-endpoint
--b64-cluster-ca
, e --dns-cluster-ip
gli argomenti vengano passati allo script di bootstrap del nodo. Quando si includono questi argomenti, non è necessario che lo script bootstrap effettui una describeCluster
chiamata, il che aiuta a prevenire il sovraccarico del piano di controllo. Per ulteriori informazioni, consulta Fornisci i dati utente per passare argomenti al bootstrap.sh file incluso in un programma EKS ottimizzato per Amazon Linux/Bottlerocket AMI.
HTTP401 risposta di errore non autorizzata su Kubernetes APIrichieste del server
Questi errori vengono visualizzati se Pod’s il token dell'account di servizio è scaduto in un cluster.
I tuoi EKS cluster Amazon Kubernetes APIil server rifiuta le richieste con token più vecchi di 90 giorni. In precedenza Kubernetes nelle versioni, i token non avevano una scadenza. Di conseguenza, i client che si basano su questi token devono aggiornarli entro un'ora. Per evitare che Kubernetes APIil server respinga la tua richiesta a causa di un token non valido, la SDK versione del client Kubernetes
-
Go versione
0.15.7
e successive -
Python versione
12.0.0
e successive -
Java versione
9.0.0
e successive -
JavaScript versione e successive
0.10.3
-
Ramo
master
di Ruby -
Haskell versione
0.3.0.0
-
C# versione
7.0.5
e successive
Puoi identificare tutti gli esistenti Pods nel tuo cluster che utilizzano token obsoleti. Per ulteriori informazioni, consulta Token dell'account di servizio.
EKSLa versione della piattaforma Amazon è inferiore a più di due versioni rispetto alla versione attuale della piattaforma
Ciò può accadere quando Amazon EKS non è in grado di aggiornare automaticamente la versione della Visualizza le versioni EKS della piattaforma Amazon per ogni versione di Kubernetes piattaforma del cluster. Sebbene ci siano molte cause, di seguito riportiamo quelle più comuni. Se uno di questi problemi riguarda il tuo cluster, potrebbe continuare a funzionare, ma la sua versione della piattaforma semplicemente non verrà aggiornata da AmazonEKS.
Problema
Il IAM ruolo del EKSIAMRuolo del cluster Amazon cluster è stato eliminato: questo ruolo è stato specificato al momento della creazione del cluster. Puoi visualizzare quale ruolo è stato specificato con il seguente comando. Sostituisci my-cluster
con il nome del cluster.
aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2
Di seguito viene riportato un output di esempio:
eksClusterRole
Soluzione
Crea un nuovo IAM ruolo EKSIAMRuolo del cluster Amazon del cluster con lo stesso nome.
Problema
Una sottorete specificata durante la creazione del cluster è stata eliminata: le sottoreti da utilizzare con il cluster sono state specificate durante la creazione del cluster. Puoi visualizzare le sottoreti specificate con il seguente comando. Sostituisci my-cluster
con il nome del cluster.
aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.subnetIds
Di seguito viene riportato un output di esempio:
[ "subnet-EXAMPLE1", "subnet-EXAMPLE2" ]
Soluzione
Verifica se la sottorete IDs esiste nel tuo account.
vpc_id=$(aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.vpcId --output text) aws ec2 describe-subnets --filters "Name=vpc-id,Values=$vpc_id" --query "Subnets[*].SubnetId"
Di seguito viene riportato un output di esempio:
[ "subnet-EXAMPLE3", "subnet-EXAMPLE4" ]
Se la IDs sottorete restituita nell'output non corrisponde alla sottorete specificata al momento della creazione del cluster, se desideri IDs che Amazon EKS aggiorni il cluster, devi modificare le sottoreti utilizzate dal cluster. Questo perché se hai specificato più di due sottoreti al momento della creazione del cluster, Amazon seleziona EKS casualmente le sottoreti che hai specificato per creare nuove interfacce di rete elastiche. Queste interfacce di rete consentono al piano di controllo di comunicare con i nodi. Amazon EKS non aggiornerà il cluster se la sottorete selezionata non esiste. Non hai alcun controllo su quale delle sottoreti che hai specificato al momento della creazione del cluster in cui Amazon EKS sceglie di creare una nuova interfaccia di rete.
Quando avvii un Kubernetes l'aggiornamento della versione per il cluster, l'aggiornamento può non riuscire per lo stesso motivo.
Problema
Un gruppo di sicurezza specificato durante la creazione del cluster è stato eliminato: se hai specificato i gruppi di sicurezza durante la creazione del cluster, puoi visualizzarli IDs con il seguente comando. Sostituisci my-cluster
con il nome del cluster.
aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.securityGroupIds
Di seguito viene riportato un output di esempio:
[ "sg-EXAMPLE1" ]
Se []
viene restituito, significa che non è stato specificato alcun gruppo di sicurezza al momento della creazione del cluster e il problema non è un gruppo di sicurezza mancante. Se vengono restituiti i gruppi di sicurezza, conferma che i gruppi di sicurezza sono presenti nel tuo account.
Soluzione
Verifica se questi gruppi di sicurezza esistono nel tuo account.
vpc_id=$(aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.vpcId --output text) aws ec2 describe-security-groups --filters "Name=vpc-id,Values=$vpc_id" --query "SecurityGroups[*].GroupId"
Di seguito viene riportato un output di esempio:
[ "sg-EXAMPLE2" ]
Se il gruppo di sicurezza IDs restituito nell'output non corrisponde al gruppo di sicurezza specificato al momento della creazione del cluster, se desideri IDs che Amazon EKS aggiorni il cluster, devi modificare i gruppi di sicurezza utilizzati dal cluster. Amazon EKS non aggiornerà un cluster se il gruppo di sicurezza IDs specificato al momento della creazione del cluster non esiste.
Quando avvii un Kubernetes l'aggiornamento della versione per il cluster, l'aggiornamento può non riuscire per lo stesso motivo.
-
Non hai almeno sei (anche se ne consigliamo 16) indirizzi IP disponibili in ciascuna delle sottoreti che hai specificato al momento della creazione del cluster. Se non disponi di un numero sufficiente di indirizzi IP disponibili nella sottorete, è necessario liberare gli indirizzi IP nella sottorete oppure modificare le sottoreti utilizzate dal cluster per utilizzare sottoreti con un numero sufficiente di indirizzi IP disponibili.
-
Hai abilitato la crittografia Crittografa i segreti di Kubernetes con i cluster esistenti AWS KMS dei segreti quando hai creato il cluster e la AWS KMS chiave specificata è stata eliminata. Se desideri che Amazon EKS aggiorni il cluster, devi creare un nuovo cluster
Integrità del cluster FAQs e codici di errore con percorsi di risoluzione
Amazon EKS rileva problemi con EKS i cluster e l'infrastruttura del cluster e li archivia nello stato del cluster. Grazie alle informazioni sull'integrità del cluster è possibile rilevare, risolvere e affrontare più rapidamente eventuali problemi. Ciò consente di creare ambienti applicativi più sicuri e. up-to-date Inoltre, potrebbe essere impossibile eseguire l'aggiornamento a versioni più recenti di Kubernetes o per consentire EKS ad Amazon di installare aggiornamenti di sicurezza su un cluster danneggiato a causa di problemi con l'infrastruttura o la configurazione del cluster necessarie. Amazon EKS può impiegare 3 ore per rilevare problemi o rilevare che un problema è stato risolto.
Lo stato di salute di un EKS cluster Amazon è una responsabilità condivisa tra Amazon EKS e i suoi utenti. Sei responsabile dell'infrastruttura prerequisita dei IAM ruoli e delle VPC sottoreti Amazon, nonché di altre infrastrutture necessarie, che devono essere fornite in anticipo. Amazon EKS rileva i cambiamenti nella configurazione di questa infrastruttura e del cluster.
Per accedere allo stato del cluster nella EKS console Amazon, cerca una sezione chiamata Health Issues nella scheda Panoramica della pagina dei dettagli del EKS cluster Amazon. Questi dati saranno disponibili anche richiamando l'DescribeCluster
azione EKSAPI, ad esempio dall'interno dell'interfaccia a riga di AWS comando.
- Perché dovrei usare questa funzionalità?
-
Otterrai una maggiore visibilità sullo stato del tuo EKS cluster Amazon, diagnosticherai e risolverai rapidamente eventuali problemi, senza dover dedicare tempo al debug o all'apertura di casi di supporto. AWS Ad esempio: hai eliminato accidentalmente una sottorete per il EKS cluster Amazon, Amazon EKS non sarà in grado di creare interfacce di rete tra account e Kubernetes AWS CLIcomandi come
kubectl
exec o logs.kubectl
Questi falliranno con l'errore:Error from server: error dialing backend: remote error: tls: internal error.
Ora vedrai un problema di EKS salute di Amazon che dice:subnet-da60e280 was deleted: could not create network interface
. - In che modo questa funzionalità è correlata o funziona con altri AWS servizi?
-
IAMi ruoli e le VPC sottoreti Amazon sono due esempi di infrastruttura prerequisita con cui l'integrità del cluster rileva i problemi. Se tali risorse non sono configurate correttamente, questa funzionalità restituirà informazioni dettagliate.
- Un cluster con problemi di salute comporta costi?
-
Sì, ogni EKS cluster Amazon viene fatturato ai EKS prezzi standard di Amazon. La funzionalità integrità del cluster è disponibile senza costi aggiuntivi.
- Questa funzionalità funziona con EKS i cluster Amazon su AWS Outposts?
-
Sì, vengono rilevati problemi di cluster per EKS i cluster nel AWS Cloud, inclusi i cluster estesi su Outposts e i cluster AWS locali su Outposts. AWS L'integrità del cluster non rileva problemi con Amazon EKS Anywhere o Amazon EKS Distro (EKS-D).
- Posso ricevere una notifica quando vengono rilevati nuovi problemi?
-
Sì. AWS invia un'e-mail e una notifica di Personal Health Dashboard quando vengono rilevati nuovi problemi di Cluster Health.
- La console mi avvisa in caso di problemi di salute?
-
Sì, qualsiasi cluster con problemi di integrità presenterà un banner di avviso nella parte superiore della console.
Le prime due colonne sono quelle necessarie per i valori di API risposta. Il terzo campo dell' ClusterIssueoggetto Health è resourceIds, la cui restituzione dipende dal tipo di problema.
Codice | Messaggio | ResourceIds | Cluster recuperabile? |
---|---|---|---|
SUBNET_NOT_FOUND |
Non siamo riusciti a trovare una o più sottoreti attualmente associate al tuo cluster. Chiama Amazon EKS update-cluster-config APIper aggiornare le sottoreti. |
ID sottorete |
Sì |
SECURITY_GROUP_NOT_FOUND |
Non siamo riusciti a trovare uno o più gruppi di sicurezza attualmente associati al tuo cluster. Chiama Amazon EKS update-cluster-config API per aggiornare i gruppi di sicurezza |
ID gruppo di sicurezza |
Sì |
IP_NOT_AVAILABLE |
Una o più sottoreti associate al tuo cluster non dispongono di indirizzi IP sufficienti per consentire EKS ad Amazon di eseguire operazioni di gestione del cluster. Libera indirizzi nelle sottoreti o associa diverse sottoreti al tuo cluster utilizzando Amazon. EKS update-cluster-config API |
ID sottorete |
Sì |
VPC_NOT_FOUND |
Non siamo riusciti a trovare quello VPC associato al tuo cluster. È necessario eliminare e ricreare il cluster. |
VPCL'ho fatto |
No |
ASSUME_ROLE_ACCESS_DENIED |
Il tuo cluster non utilizza Amazon EKS service-linked-role. Non potevamo assumere il ruolo associato al tuo cluster per eseguire le operazioni di EKS gestione Amazon richieste. Verifica che il ruolo esista e disponga della policy di attendibilità richiesta. |
Il IAM ruolo del cluster |
Sì |
PERMISSION_ACCESS_DENIED |
Il tuo cluster non utilizza Amazon EKS service-linked-role. Il ruolo associato al tuo cluster non concede autorizzazioni sufficienti EKS ad Amazon per eseguire le operazioni di gestione richieste. Verifica le policy associate al ruolo del cluster e controlla se vengono applicate policy di negazione separate. |
Il ruolo del cluster IAM |
Sì |
ASSUME_ROLE_ACCESS_DENIED_USING_SLR |
Non potevamo dare per scontato la gestione dei EKS cluster Amazon service-linked-role. Verifica che il ruolo esista e disponga della policy di attendibilità richiesta. |
L'Amazzonia EKS service-linked-role |
Sì |
PERMISSION_ACCESS_DENIED_USING_SLR |
La gestione dei EKS cluster Amazon service-linked-role non concede autorizzazioni sufficienti EKS ad Amazon per eseguire le operazioni di gestione richieste. Verifica le policy associate al ruolo del cluster e controlla se vengono applicate policy di negazione separate. |
L'Amazzonia EKS service-linked-role |
Sì |
OPT_IN_REQUIRED |
Il tuo account non dispone di un abbonamento EC2 al servizio Amazon. Aggiorna gli abbonamenti del tuo account nella pagina delle impostazioni dell'account. |
N/D |
Sì |
STS_REGIONAL_ENDPOINT_DISABLED |
Il STS l'endpoint regionale è disabilitato. Abilita l'endpoint per Amazon per EKS eseguire le operazioni di gestione dei cluster richieste. |
N/D |
Sì |
KMS_KEY_DISABLED |
La chiave AWS KMS associata al cluster è disabilitata. Riabilita la chiave per ripristinare il cluster. |
Il KMS Key Arn |
Sì |
KMS_KEY_NOT_FOUND |
Non siamo riusciti a trovare la AWS KMS chiave associata al tuo cluster. È necessario eliminare e ricreare il cluster. |
Il KMS Key ARN |
No |
KMS_GRANT_REVOKED |
Le concessioni per la chiave AWS KMS associata al cluster vengono revocate. È necessario eliminare e ricreare il cluster. |
Il KMS Key Arn |
No |
📝 Modifica questa pagina su GitHub