Questa pagina mostra come assegnare subnet aggiuntive a un cluster nativo di VPC. Le subnet aggiuntive assegnate a un cluster ti consentono di creare nuovi pool di nodi in cui gli indirizzi IPv4 per i nodi e i pod provengono dagli intervalli di subnet aggiuntivi.
Questa pagina è rivolta agli specialisti di networking che progettano e realizzano l'architettura di rete per la loro organizzazione. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.
Panoramica
Quando crei un nuovo cluster GKE nativo VPC, selezioni una subnet predefinita per il cluster. La subnet predefinita del cluster fornisce indirizzi IPv4 per nodi, pod e servizi, come descritto in Intervalli di indirizzi IP per i cluster VPC nativi.
Puoi assegnare fino a otto subnet aggiuntive a un cluster VPC nativo, consentendo una crescita significativa del cluster. Ogni subnet aggiuntiva appena assegnata viene chiamata subnet non predefinita.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo
gcloud components update
.
Requisiti e limitazioni
Questa sezione descrive i requisiti e le limitazioni che si applicano quando assegni e utilizzi subnet aggiuntive a un cluster. Devi soddisfare tutti i requisiti prima di assegnare subnet aggiuntive.
- Assicurati che il cluster GKE sia un cluster VPC nativo che esegue GKE versione 1.30.3-gke.1211000 o successive. I cluster basati su route e i cluster sulle reti legacy non supportano subnet aggiuntive.
- Puoi assegnare fino a otto subnet aggiuntive per cluster.
- Le subnet aggiuntive forniscono solo indirizzi IPv4 per nodi e pod. Le subnet aggiuntive non possono essere utilizzate per fornire indirizzi IPv6 per nodi o pod.
- Solo i nuovi node pool possono utilizzare le subnet aggiuntive, non quelli esistenti. Quando crei un nuovo pool di nodi e sono disponibili più subnet non predefinite, GKE seleziona la subnet migliore per il pool di nodi in base ai requisiti per gli indirizzi IP e alla disponibilità di indirizzi IP in tutte le subnet del cluster.
- Gli intervalli di indirizzi IPv4 secondari della subnet in una subnet non predefinita possono essere utilizzati solo da un singolo cluster.
- Se utilizzi il supporto multi-rete per i pod, gli intervalli di indirizzi IPv4 principali e dei pod di una subnet aggiuntiva non devono sovrapporsi a nessun intervallo CIDR configurato nella configurazione multi-rete. Le subnet aggiuntive che configuri si applicano solo alla rete predefinita. Questa limitazione significa che le interfacce di rete aggiuntive sui nodi e sui pod non possono utilizzare gli indirizzi IP forniti da queste subnet aggiuntive.
- Se il pool di indirizzi IP nella subnet predefinita è esaurito, non puoi eseguire la scalabilità automatica del cluster anche se utilizzi subnet aggiuntive.
Requisiti del bilanciatore del carico per i cluster con subnet aggiuntive
Questa sezione descrive i requisiti del bilanciatore del carico che si applicano quando utilizzi subnet aggiuntive sul cluster. Questi requisiti si applicano ogni volta che crei un servizio Ingress esterno, Gateway esterno o LoadBalancer esterno.
- Per utilizzare un servizio Ingress, Gateway o LoadBalancer esterno in un cluster con subnet aggiuntive, il cluster deve eseguire GKE versione 1.33.2-gke.4780000 o successive.
- Gli oggetti Ingress esterni che utilizzano il controller Ingress di GKE devono utilizzare il bilanciamento del carico nativo del container.
- Abilita l'impostazione secondaria di GKE per i servizi LoadBalancer interni. L'impostazione secondaria di GKE influisce solo sui servizi LoadBalancer interni nuovi. Pertanto, devi eliminare e ricreare tutti i servizi esistenti nel tuo cluster dopo aver abilitato il sottoinsieme GKE.
Per creare un bilanciatore del carico di rete passthrough esterno basato su un servizio di backend, i nuovi servizi LoadBalancer esterni devono includere l'annotazione
cloud.google.com/l4-rbs: "enabled"
. Questa annotazione influisce solo sui servizi LoadBalancer esterni nuovi e non si applica ai servizi LoadBalancer esterni esistenti. Elimina e ricrea tutti i servizi LoadBalancer esterni creati senza l'annotazionecloud.google.com/l4-rbs: "enabled"
.Il tipo di backend utilizzato (backend NEG
GCE_VM_IP
o backend del gruppo di istanze) dipende dalla versione di GKE quando crei il servizio LoadBalancer esterno. Per ulteriori informazioni, vedi Raggruppamento dei nodi.
Aggiungi una nuova subnet con un intervallo di indirizzi IPv4 del pod
Crea una nuova subnet e aggiungi un nuovo intervallo di indirizzi IPv4 secondari della subnet. La subnet deve trovarsi nella stessa regione e nella stessa rete VPC del cluster:
gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK \ --region=REGION \ --range=PRIMARY_RANGE \ --add-secondary-ranges=POD_RANGE_NAME=SECONDARY_RANGE
Sostituisci quanto segue:
SUBNET_NAME
: il nome della nuova subnet.NETWORK
: il nome della rete VPC che contiene la nuova subnet.REGION
: la regione in cui si trova la subnet.PRIMARY_RANGE
: l'intervallo IPv4 principale per la nuova subnet, in notazione CIDR. Per saperne di più, vedi Intervalli di subnet IPv4.POD_RANGE_NAME
: un nome per l'intervallo secondario.SECONDARY_RANGE
: l'intervallo IPv4 secondario in notazione CIDR. Per gli intervalli validi, vedi Intervalli di subnet IPv4.
Per saperne di più, consulta Utilizzare le subnet.
Aggiorna il cluster in modo che utilizzi la subnet aggiuntiva utilizzando gcloud CLI:
gcloud container clusters update CLUSTER_NAME \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster esistente.SUBNET_NAME
: il nome della nuova subnet che hai creato.POD_RANGE_NAME
: il nome dell'intervallo di indirizzi IPv4 secondari della subnet che vuoi utilizzare per l'intervallo di indirizzi IPv4 del pod.
Aggiungi una nuova subnet con più intervalli di indirizzi IPv4 del pod
Crea una nuova subnet nella stessa regione e rete VPC del cluster. Imposta l'intervallo di indirizzi IPv4 primario della subnet su un intervallo di indirizzi IPv4 aggiuntivo per i nodi.
Per ogni intervallo di indirizzi IPv4 di pod aggiuntivo di cui hai bisogno, aggiungi un nuovo intervallo di indirizzi IPv4 secondario della subnet alla subnet che hai creato nel passaggio precedente.
Aggiorna il cluster in modo che utilizzi la subnet aggiuntiva utilizzando gcloud CLI. L'esempio seguente aggiunge una subnet con due intervalli di indirizzi IPv4 secondari per i pod.
gcloud container clusters update CLUSTER_NAME \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_1 \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_2
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster esistente.SUBNET_NAME
: il nome della nuova subnet che hai creato.POD_RANGE_NAME_1
ePOD_RANGE_NAME_2
: i nomi degli intervalli di indirizzi IPv4 secondari della subnet che vuoi utilizzare per gli intervalli di indirizzi IPv4 dei pod.
Verifica le subnet
Per cluster: per visualizzare i dettagli di tutte le subnet associate a un cluster, esegui questo comando:
gcloud container clusters describe CLUSTER_NAME
Sostituisci CLUSTER_NAME
con il nome del cluster.
L'output è simile al seguente:
ipAllocationPolicy:
additionalIPRangesConfig:
- podIpv4RangeNames:
- pod-range-1
subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets
Per node pool: per visualizzare i dettagli di tutte le subnet associate a un pool di nodi, esegui questo comando:
gcloud container node-pools describe POOL_NAME \
--cluster=CLUSTER_NAME \
Sostituisci quanto segue:
POOL_NAME
: il nome del pool di nodi.CLUSTER_NAME
: il nome del cluster.
L'output è simile al seguente:
name: pool-1
networkConfig:
podRange: pod-range-1
subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets
Rimuovere una subnet non predefinita
La rimozione di una subnet non predefinita da un cluster indica al cluster di non utilizzare più gli intervalli della subnet in nessuno dei node pool del cluster. La rimozione ha i seguenti effetti:
- L'intervallo di indirizzi IPv4 principale della subnet non predefinita non può essere utilizzato per gli intervalli di indirizzi IPv4 dei nodi.
- Gli intervalli IPv4 secondari della subnet nella subnet non predefinita non possono essere utilizzati per gli intervalli IPv4 dei pod.
Prima di rimuovere una subnet non predefinita, devi eliminare tutti i pool di nodi che utilizzano questa subnet.
Per rimuovere una subnet non predefinita dal cluster, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \
--remove-additional-ip-ranges= subnetwork=SUBNET_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.SUBNET_NAME
: il nome della subnet che vuoi rimuovere dal cluster.
Dopo aver rimosso una subnet non predefinita dal cluster, puoi eliminarla.
Rimuovere un intervallo IPv4 secondario di subnet non predefinito
Quando rimuovi un intervallo IPv4 secondario di subnet non predefinito da un cluster, GKE indica al cluster di non utilizzare questo intervallo per gli intervalli IPv4 dei pod in nessun pool di nodi. Se l'intervallo IPv4 secondario della subnet non predefinita che rimuovi è l'unico intervallo della subnet non predefinita utilizzato da questo cluster, GKE indica anche al cluster di interrompere l'utilizzo dell'indirizzo IPv4 principale di questa subnet per gli indirizzi IPv4 dei nodi.
Prima di rimuovere un intervallo IPv4 secondario della subnet non predefinito, devi eliminare tutti i pool di nodi che utilizzano l'intervallo per gli indirizzi IPv4 dei pod.
Per rimuovere un intervallo IPv4 secondario della subnet non predefinita dal cluster, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \
--remove-additional-ip-ranges=\
subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.SUBNET_NAME
: il nome della subnet non predefinita.POD_RANGE_NAME
: il nome dell'intervallo IPv4 secondario della subnet non predefinita che vuoi rimuovere dal cluster.
Dopo aver rimosso un intervallo IPv4 secondario della subnet non predefinita dal cluster, puoi eliminare l'intervallo IPv4 secondario della subnet non predefinita.
Passaggi successivi
- Scopri di più sui cluster nativi di VPC.
- Scopri di più su come aggiungere intervalli di indirizzi IPv4 del pod.
- Scopri di più sull'ottimizzazione dell'allocazione degli indirizzi IP mediante la configurazione del numero massimo di pod per nodo.