Come posso risolvere un errore di aggiornamento del cluster Amazon EKS?

Ultimo aggiornamento: 22/12/2021

Il mio cluster Amazon Elastic Kubernetes Service (Amazon EKS) non si aggiorna. Come posso risolvere questo problema?

Breve descrizione

Per risolvere un aggiornamento del cluster Amazon EKS non riuscito, prova quanto segue:

  • Per un errore IpNotAvailable, controlla se la sottorete associata al cluster ha un numero sufficiente di indirizzi IP disponibili.
  • Per un errore SubnetNotFound, controlla se le sottoreti esistono e sono taggate correttamente.
  • Per un errore SecurityGroupNotFound, controlla se i gruppi di sicurezza associati al cluster esistono.
  • Per un errore EniLimitReached, aumenta la quota di interfaccia di rete elastica per l'account AWS.
  • Per un errore AccessDenied, verifica di disporre delle autorizzazioni corrette.
  • Per un errore OperationNotPermitted, verifica che il ruolo del servizio Amazon EKS disponga delle autorizzazioni corrette.
  • Per un errore VpcIdNotFound, controlla se il VPC associato al cluster esiste.
  • Controlla se le risorse utilizzate per creare il cluster sono state eliminate.
  • Per i cluster creati con eksctl, controlla se la pila di AWS CloudFormation non è riuscita a eseguire il rollback.
  • Per problemi transitori del flusso di lavoro di back-end, aggiorna nuovamente il cluster.

Nota: i collegamenti alla console AWS nella sezione Risoluzione ti indirizzano alla regione AWS us-east-1. Se le tue risorse si trovano in un'altra regione AWS, assicurati di cambiare la regione con quella in cui risiedono le tue risorse.

Risoluzione

Controllare se le sottoreti hanno indirizzi IP disponibili (IpNotAvailable)

Per aggiornare un cluster Amazon EKS, è necessario avere tre indirizzi IP disponibili per ciascuna sottorete. Se non si dispone di un numero sufficiente di indirizzi IP disponibili, è possibile eliminare le interfacce di rete inutilizzate all'interno delle sottoreti del cluster. L'eliminazione di un'interfaccia di rete rilascia l'indirizzo IP. Per ulteriori informazioni, consulta Eliminare un'interfaccia di rete.

Per verificare la disponibilità di indirizzi IP nelle sottoreti del cluster Amazon EKS:

1.    Apri la console di Amazon EKS.

2.    Seleziona il cluster Amazon EKS.

3.    Scegli la scheda Configuration (Configurazione).

4.    Scegli la scheda Networking (Reti).

5.    In Subnets (Sottoreti), seleziona una sottorete per aprire la pagina Subnets (Sottoreti).

6.    Seleziona una sottorete e scegli la scheda Details (Dettagli).

6.    Individua gli indirizzi IPv4 disponibili per vedere quanti indirizzi IP disponibili ha la sottorete.

Dall'interfaccia a riga di comando di AWS, esegui i seguenti comandi:

1.    Individua le sottoreti associate al cluster:

$ aws eks describe-cluster --name cluster-name --region your-region

Nota: sostituisci cluster-name con il nome del cluster e your-region con la tua regione AWS.

Output:

...
   "subnetIds": [
                "subnet-6782e71e",
                "subnet-e7e761ac"
            ],
   ...

2.    Descrivi le sottoreti dell'output precedente:

aws ec2 describe-subnets --subnet-ids subet-id --region your-region

Nota: sostituisci subnet-id con l'ID della sottorete e your-region con la tua regione.

Output:

...
"AvailableIpAddressCount": 4089,
...

Se non disponi di indirizzi IP sufficienti, puoi impostare la variabile di ambiente nel daemonset aws-node su WARM_IP_TARGET:

$ kubectl set env ds aws-node -n kube-system WARM_IP_TARGET=number

Nota: sostituisci number con il numero di indirizzi IP che desideri prenotare dalle sottoreti.

WARM_IP_TARGET definisce il numero di indirizzi IP secondari che il Container Network Interface (CNI) deve prenotare per i pod. Per ulteriori informazioni su WARM_IP_TARGET e altre variabili di configurazione, consulta Quali sono le best practice per configurare il plug-in CNI di Amazon VPC per l'utilizzo di un indirizzo IP nelle sottoreti VPC con Amazon EKS?

Controllare se le sottoreti esistono e sono taggate correttamente (SubnetNotFound)

Per verificare se le sottoreti esistono, esegui il seguente comando:

aws ec2 describe-subnets --subnet-ids subet-id --region region

Nota: sostituisci subnet-id con l'ID della sottorete e region con la regione in cui si trovano le sottoreti.

Se le sottoreti non esistono, viene visualizzato il seguente errore:

An error occurred (InvalidSubnetID.NotFound) when calling the DescribeSubnets operation: The subnet ID 'subnet-id' does not exist

Per verificare se le sottoreti sono taggate correttamente:

1.    Identifica le sottoreti associate al cluster completando i passaggi descritti nella sezione Controllare se sono disponibili indirizzi IP sufficienti (IpNotAvailable).

2.    Apri la console VPC.

3.    Vai alla pagina Subnet (Sottorete).

4.    Seleziona le sottoreti da associare al cluster e scegli la scheda Tags (Tag) nel riquadro Details (Dettagli).

5.    Verifica che ogni sottorete abbia i tag corretti:

Key - kubernetes.io/cluster/cluster-name

Nota: il tag precedente viene aggiunto solo alle versioni 1.18 o precedenti del cluster Amazon EKS. Per la versione 1.19 il tag non è obbligatorio. Sostituisci cluster-name con il nome del cluster.

Il valore del tag può essere condiviso o di proprietà.

Controllare se i gruppi di sicurezza associati al cluster esistono (SecurityGroupNotFound)

Per identificare i gruppi di sicurezza associati al cluster:

1.    Apri la console di Amazon EKS.

2.    Seleziona il cluster.

3.    Scegli la scheda Configuration (Configurazione).

4.    Scegli la scheda Networking (Reti).

5.    Seleziona i gruppi di sicurezza elencati in Cluster security group (Gruppo di sicurezza cluster) e Additional security groups (Gruppi di sicurezza aggiuntivi).

Se il gruppo di sicurezza esiste, la console si apre e visualizza i dettagli del gruppo di sicurezza.

Dall'AWS CLI:

1.    Individua i gruppi di sicurezza associati al cluster:

$ aws eks describe-cluster --name cluster-name --region your-region

Nota: sostituisci cluster-name con il nome del cluster e your-region con la tua regione.

Output:

...
"securityGroupIds": [       
 "sg-xxxxxxxx"
]
...

2.    Descrivi il gruppo di sicurezza dall'output precedente:

$ aws ec2 describe-security-groups --group-ids security-group-id --region your-region

Nota: sostituisci security-group-id con l'ID del tuo gruppo di sicurezza e your-region con la tua regione.

Aumentare la quota di interfaccia di rete elastica per l'account AWS (EniLimitReached)

Se hai raggiunto la quota dell'interfaccia di rete, puoi rimuovere le interfacce di rete inutilizzate o richiedere un aumento del limite.

Se le interfacce di rete sono collegate a un cluster, elimina il cluster per rimuovere l'interfaccia di rete. Se le interfacce di rete sono collegate a nodi (worker) inutilizzati, elimina il gruppo Auto Scaling per i gruppi di nodi autogestiti. Per i gruppi di nodi gestiti, elimina il gruppo di nodi dalla console di Amazon EKS. Per spostare i carichi di lavoro da un gruppo di nodi a un altro gruppo di nodi, consulta Migrazione a un nuovo gruppo di nodi.

Verifica di avere le autorizzazioni corrette (AccessDenied)

1.    Apri la console IAM.

2.    Nel pannello di navigazione, scegli Roles (Ruoli) o Users (Utenti).

3.    Seleziona il ruolo o l'utente.

4.    Verifica che l'utente o il ruolo IAM disponga delle autorizzazioni corrette.

Verificare che il ruolo di servizio disponga delle autorizzazioni corrette (OperationNotPermitted)

1.    Apri la console IAM.

2.    Nel pannello di navigazione, scegli Roles (Ruoli).

3.    Filtra per AWSServiceRoleForAmazonEKS e seleziona il ruolo.

4.    Verifica che al ruolo sia allegata la policy AmazonEKSServiceRolePolicy.

Se la policy non è allegata, consulta Aggiunta di autorizzazioni di identità IAM.

Verificare che il VPC associato al cluster esista (VpcNotFound)

1.    Apri la console di Amazon EKS.

2.    Seleziona il cluster.

3.    Scegli la scheda Configuration (Configurazione).

4.    Scegli la scheda Networking (Reti).

5.    Seleziona il collegamento ID VPC per vedere se il VPC esiste.

Se il VPC non esiste, è necessario creare un nuovo cluster.

Verificare se le risorse associate al cluster sono state eliminate

Se hai creato il cluster nella console Amazon EKS e le sottoreti utilizzate per creare il cluster sono state eliminate, il cluster non può essere aggiornato. È necessario ricreare il cluster e spostare i carichi di lavoro dal vecchio cluster a quello nuovo.

Verificare se la pila AWS CloudFormation non è riuscita a eseguire il rollback (eksctl)

Se la pila CloudFormation non è riuscita a eseguire il rollback, consulta Come posso aggiornare la pila CloudFormation se è bloccata nello stato UPDATE_ROLLBACK_FAILED?

Aggiornare nuovamente il cluster

I problemi transitori possono rendere instabili i flussi di lavoro di back-end. Se i passaggi precedenti per la risoluzione dei problemi non sono correlati al tuo problema, prova ad aggiornare nuovamente il cluster.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?