Domande frequenti su problemi comuni durante l'esecuzione o la scalabilità di cluster del servizio Azure Kubernetes di grandi dimensioni
Questo articolo risponde alle domande frequenti sui problemi comuni che possono verificarsi quando si eseguono o si ridimensionano cluster di grandi dimensioni in Microsoft servizio Azure Kubernetes (servizio Azure Kubernetes). Un cluster di grandi dimensioni è qualsiasi cluster eseguito su una scala di più di 500 nodi.
Viene visualizzato un errore "quota superata" durante la creazione, l'aumento o l'aggiornamento
Per risolvere questo problema, creare una richiesta di supporto nella sottoscrizione in cui si sta tentando di creare, ridimensionare o aggiornare e richiedere una quota per il tipo di risorsa corrispondente. Per altre informazioni, vedere Quote di calcolo a livello di area.
Viene visualizzato un errore "insufficientSubnetSize" quando si distribuisce un cluster del servizio Azure Kubernetes che usa la rete avanzata
Questo errore indica che una subnet in uso per un cluster non dispone più di indirizzi IP disponibili all'interno del cidr per l'assegnazione corretta delle risorse. Questo problema può verificarsi durante gli aggiornamenti, le scale out o la creazione del pool di nodi. Questo problema si verifica perché il numero di indirizzi IP gratuiti nella subnet è minore del risultato della formula seguente:
numero di nodi richiesti * valore del pool
--max-pod
di nodi
Prerequisiti
Per scalare oltre 400 nodi, è necessario usare il plug-in di rete CNI di Azure.
Per pianificare la rete virtuale e le subnet in base al numero di nodi e pod da distribuire, vedere Pianificazione degli indirizzi IP per il cluster. Per ridurre il sovraccarico della pianificazione della subnet o della ricreazione del cluster che si farebbe a causa dell'esaurimento dell'IP, vedere Allocazione IP dinamica.
Soluzione
Poiché non è possibile aggiornare l'intervallo CIDR di una subnet esistente, è necessario disporre dell'autorizzazione per creare una nuova subnet per risolvere il problema. attenersi alla seguente procedura:
Ricompilare una nuova subnet con un intervallo CIDR più ampio sufficiente per gli obiettivi operativi.
Create una nuova subnet con un nuovo intervallo non sovrapposto.
Create un nuovo pool di nodi nella nuova subnet.
Svuotare i pod dal pool di nodi precedente che si trova nella subnet precedente che verrà sostituita.
Eliminare la subnet precedente e il pool di nodi precedente.
Si verificano sporadici errori di connettività in uscita a causa dell'esaurimento delle porte SNAT
Per i cluster eseguiti su scala relativamente grande (più di 500 nodi), è consigliabile usare il gateway NAT (Managed Network Address Translation) del servizio Azure Kubernetes per una maggiore scalabilità. Il gateway NAT di Azure consente fino a 64.512 flussi di traffico UDP e TCP in uscita per indirizzo IP e un massimo di 16 indirizzi IP.
Se non si usa NAT gestito, vedere Risolvere i problemi di esaurimento e timeout della connessione SNAT (Source Network Address Translation) per comprendere e risolvere i problemi di esaurimento delle porte SNAT.
Non è possibile ridimensionare fino a 5.000 nodi usando il portale di Azure
Usare l'interfaccia della riga di comando di Azure per scalare fino a un massimo di 5.000 nodi seguendo questa procedura:
Create un numero minimo di pool di nodi nel cluster (perché il limite massimo del nodo del pool di nodi è 1.000) eseguendo il comando seguente:
az aks nodepool add --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
Aumentare i pool di nodi uno alla volta. Idealmente, impostare cinque minuti di sospensione tra scale-up consecutivi di 1.000. Eseguire il comando riportato di seguito:
az aks nodepool scale --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
L'aggiornamento è in esecuzione, ma è lento
Nella configurazione predefinita, il servizio Azure Kubernetes aumenta durante un aggiornamento eseguendo le azioni seguenti:
- Creazione di un nuovo nodo.
- Ridimensionamento del pool di nodi oltre il numero desiderato di nodi di un nodo.
Per le impostazioni di aumento massimo, un valore predefinito di un nodo significa che il servizio Azure Kubernetes crea un nuovo nodo prima di svuotare le applicazioni esistenti e sostituire un nodo con versioni precedenti. Questo nodo aggiuntivo consente al servizio Azure Kubernetes di ridurre al minimo l'interruzione del carico di lavoro.
Quando si aggiornano i cluster con molti nodi, l'aggiornamento dell'intero cluster può richiedere diverse ore se si usa il valore predefinito di max-surge
. È possibile personalizzare la max-surge
proprietà per ogni pool di nodi per abilitare un compromesso tra la velocità di aggiornamento e l'interruzione dell'aggiornamento. Aumentando il valore di picco massimo, si abilita il processo di aggiornamento per completare prima. Tuttavia, un valore elevato per l'aumento massimo potrebbe anche causare interruzioni durante il processo di aggiornamento.
Eseguire il comando seguente per aumentare o personalizzare il picco massimo per un pool di nodi esistente:
az aks nodepool update --resource-group MyResourceGroup --name mynodepool --cluster-name MyManagedCluster --max-surge 5
L'aggiornamento sta raggiungendo il limite di quota (5.000 cluster)
Per risolvere questo problema, vedere Aumentare le quote di vCPU a livello di area.
La creazione del servizio interno in più di 750 nodi è lenta o non riesce a causa di un errore di timeout
Load Balancer Standard (SLB) gli aggiornamenti del pool back-end sono un collo di bottiglia noto per le prestazioni. Stiamo lavorando a una nuova funzionalità che consentirà di creare più rapidamente servizi e SLB su larga scala. Per inviare commenti e suggerimenti su questo problema, vedere Supporto di Azure Kubernetes per il servizio di bilanciamento del carico con il pool back-end basato su IP.
Soluzione
È consigliabile ridurre il cluster a meno di 750 nodi e quindi creare un servizio di bilanciamento del carico interno per il cluster. Per creare un servizio di bilanciamento del carico interno, creare un tipo di servizio e azure-load-balancer-internal
un'annotazioneLoadBalancer
, in base alla procedura di esempio seguente.
Passaggio 1: Create un servizio di bilanciamento del carico interno
Per creare un servizio di bilanciamento del carico interno, creare un manifesto del servizio denominato internal-lb.yaml che contiene il LoadBalancer
tipo di servizio e l'annotazione azure-load-balancer-internal
, come illustrato nell'esempio seguente:
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
Passaggio 2: Distribuire il servizio di bilanciamento del carico interno
Distribuire il servizio di bilanciamento del carico interno usando il kubectl apply
comando e specificare il nome del manifesto YAML, come illustrato nell'esempio seguente:
kubectl apply -f internal-lb.yaml
Dopo aver creato il cluster, è anche possibile effettuare il provisioning di un servizio di bilanciamento del carico interno (in base a questa procedura) e mantenere in esecuzione un servizio interno con carico bilanciato. In questo modo è possibile aggiungere altri servizi al servizio di bilanciamento del carico su larga scala.
La creazione del servizio SLB su larga scala richiede ore per l'esecuzione
Gli aggiornamenti del pool back-end SLB rappresentano un collo di bottiglia noto per le prestazioni. Si sta lavorando a una nuova funzionalità che consentirà di eseguire servizi con carico bilanciato su larga scala con prestazioni notevolmente più veloci per le operazioni di creazione, aggiornamento ed eliminazione. Per inviare commenti e suggerimenti, vedere Supporto di Azure Kubernetes per il servizio di bilanciamento del carico con il pool back-end basato su IP.
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per