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

8 minuti di lettura
0

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 a eseguire le seguenti operazioni:

  • 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 i loro tag sono assegnati 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, controlla se il ruolo di servizio Amazon EKS dispone 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 lo stack di AWS CloudFormation non è riuscito a eseguire il rollback.
  • Se si verifica un errore ResourceInUseException, attendi qualche istante prima di riprovare l'aggiornamento.
  • Per problemi transitori del flusso di lavoro di back-end, aggiorna nuovamente il cluster.

Risoluzione

Controllare se le sottoreti hanno indirizzi IP disponibili (IpNotAvailable)

Per aggiornare un cluster Amazon EKS, è necessario avere cinque indirizzi IP disponibili per ciascuna sottorete. Se non disponi di un numero sufficiente di indirizzi IP disponibili, puoi 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 Amazon EKS nella regione in cui hai creato il cluster.

2.    Seleziona Cluster dalla barra laterale. Quindi, seleziona il tuo 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).

7.    Individua gli Available IPv4 addresses (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. Ciò definisce il numero di indirizzi IP secondari che il Container Network Interface (CNI) deve prenotare per i pod:

$ 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.

È inoltre possibile utilizzare la variabile MINIMUM_IP_TARGET per controllare il numero minimo di indirizzi IP per nodo.

È una best practice utilizzare determinate variabili di configurazione per controllare quante interfacce di rete e indirizzi IP vengono mantenuti.

Controlla se le sottoreti esistono e i loro tag sono assegnati 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 controllare se le i tag delle sottoreti sono assegnati 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.    Seleziona sottorete dalla barra laterale.

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 ai cluster Amazon EKS versione 1.18 o precedente. Per i cluster creati con Kubernetes versione 1.19 e successive, il tag non è obbligatorio. Sostituisci cluster-name con il nome del cluster.

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

Se disponi di un piano di assistenza, contatta il team di supporto per aggiornare le sottoreti Amazon EKS.

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

Per identificare i gruppi di sicurezza associati al cluster:

1.    Apri la console Amazon EKS nella regione in cui hai creato il cluster.

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.

Verificare di disporre delle 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 è collegata, consulta Aggiunta di autorizzazioni di identità IAM.

Controllare se il VPC associato al cluster esiste (VpcNotFound)

1.    Apri la console Amazon EKS nella regione in cui hai creato il cluster.

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.

Verifica che le risorse associate al cluster siano 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. Devi quindi creare nuovamente il cluster e spostare i carichi di lavoro dal vecchio cluster a quello nuovo. Se disponi di un piano di assistenza, contatta il team di supporto per aggiornare le sottoreti Amazon EKS.

Controlla se lo stack di AWS CloudFormation non è riuscito a eseguire il rollback (eksctl)

Se lo stack CloudFormation non è riuscito a eseguire il rollback, consulta Come posso aggiornare lo stack CloudFormation se è bloccato nello stato UPDATE_ROLLBACK_FAILED?

Attendi qualche istante prima di avviare nuovamente l'aggiornamento del piano di controllo (control-plane) (ResourceInUseException)

Questo errore si verifica se è in corso un'operazione automatica del piano di controllo (control-plane) di Amazon EKS, ad esempio un aggiornamento della versione della piattaforma, quando si avvia un aggiornamento. Amazon EKS rileva e sostituisce automaticamente le istanze del piano di controllo (control-plane) non integre e fornisce aggiornamenti automatici delle versioni e le relative patch. Attendi il termine dell'operazione automatica prima di avviare nuovamente l'aggiornamento del piano di controllo (control-plane).

Nota: il tempo di attesa dipende da quando è iniziato l'aggiornamento automatico. Se non sai per certo quando verrà risolta l'operazione automatica, attendi un'ora prima di riprovare l'aggiornamento del piano di controllo (control-plane).

Aggiorna 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.


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa