Anthos clusters on bare metal è ora Google Distributed Cloud (solo software) per bare metal. Per ulteriori informazioni, consulta la panoramica del prodotto.
Informazioni sulla risorsa personalizzata ClusterCIDRConfig
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Panoramica
ClusterCIDRConfig è una risorsa di allocazione CIDR personalizzata che consente di allocare dinamicamente più intervalli di indirizzi IP per i pod.
La gestione degli indirizzi IP (IPAM) consente un utilizzo efficiente delle subnet IP ed evita sovrapposizioni negli intervalli di indirizzi, evitando così conflitti e interruzioni della rete.
Kubernetes assegna i CIDR dei pod per nodo, che vengono utilizzati come indirizzi IP per i pod
in esecuzione su quel nodo.
L'attuale NodeIPAM di Kubernetes presenta le seguenti limitazioni:
Tutti i CIDR dei pod vengono allocati da un CIDR del cluster. Devi specificare l'intero intervallo di indirizzi IP che rappresenta il cluster più grande al momento della creazione del cluster. Questa limitazione può comportare lo spreco di indirizzi IP.
Se aumenti le dimensioni del cluster, è difficile aggiungere altri indirizzi IP.
L'intervallo CIDR del cluster è un intervallo ampio. Potrebbe essere difficile trovare un
blocco contiguo di indirizzi IP che soddisfi le esigenze del cluster.
Ogni nodo riceve un intervallo IP di dimensioni fisse all'interno di un cluster. Se i nodi hanno dimensioni e capacità diverse, non puoi allocare un intervallo di pod più grande a un determinato nodo con una capacità maggiore e un intervallo più piccolo ai nodi con una capacità inferiore. Ciò comporta uno spreco di molti indirizzi IP. In un cluster di grandi dimensioni con molti
nodi, questo spreco si accumula su tutti i nodi del cluster.
Con la funzionalità ClusterCIDRConfig, puoi evitare di assegnare un blocco CIDR di grandi dimensioni
a un cluster, mappare le dimensioni del cluster alla scala dei pod e quindi
preservare gli indirizzi IP. Puoi salvare gli indirizzi IP utilizzando ClusterCIDRConfigs
con diverse combinazioni di CIDR e perNodeMaskSize. La risorsa ClusterCIDRConfig supporta quanto segue:
Più blocchi CIDR IP sconnessi per il CIDR del cluster a un livello più granulare
Affinità dei nodi dei blocchi CIDR
Dimensioni dei blocchi diverse allocate ai nodi
Google Distributed Cloud utilizza la funzionalità ClusterCIDRConfig nelle seguenti funzionalità:
Cluster.spec.clusterNetwork.pods.cidrBlocks è un campo facoltativo e non è definito per impostazione predefinita. Devi definirlo se nessuna delle funzionalità nell'elenco precedente lo ha definito. Ad esempio, è obbligatorio quando i cluster vengono creati in modalità isola IPv4 e deve essere specificato perché viene utilizzato come CIDR di routing nativo.
La tabella seguente elenca l'utilizzo del comportamento del campo Cluster.spec.clusterNetwork.pods.cidrBlocks di ClusterCIDRConfig per diverse modalità di rete.
Cluster.spec.clusterNetwork.pods.cidrBlocks vengono completamente ignorati e possono essere ignorati. Gli utenti devono definire esplicitamente ClusterCIDRConfigs (per nodo, per pool di nodi e/o per cluster).
Dual-stack (IPv4 Island, IPv4 Flat )
Specifica il CIDR IPv4.
Non specificare il CIDR IPv6 in
Cluster.spec.clusterNetwork.pods.cidrBlocks.
Specifica ClusterCIDRConfigs con CIDR IPv4 e IPv6. Il CIDR IPv4 configurato in tutti i ClusterCIDRConfigs deve essere uguale al CIDR IPv4 di Cluster.spec.clusterNetwork.pods.cidrBlocks, incluso il valore PerNodeMask per IPv4. Per ulteriori informazioni su ClusterCIDRConfig ed esempi di utilizzo, consulta Esempi: doppio stack (isola IPv4, IPv6 Flat)
Doppio stack (IPv4 piatto, IPv6 piatto)
Puoi saltare Cluster.spec.clusterNetwork.pods.cidrBlocks perché vengono ignorati completamente. Devi definire esplicitamente ClusterCIDRConfigs (per nodo, per node pool e/o per cluster) con i CIDR IPv4 e IPv6.
Configurazione della risorsa allocator CIDR personalizzata ClusterCIDRConfig
ClusterCIDRConfig
Quando configuri la risorsa allocator CIDR personalizzata ClusterCIDRConfig,
tieni presente i seguenti punti:
L'assegnazione del CIDR del pod da un determinato ClusterCIDRConfig a un nodo si basa su selettori di etichette. È simile al meccanismo nodeSelector utilizzato per la pianificazione dei pod su un nodo.
Devi configurare ClusterCIDRConfig durante la procedura di creazione del cluster nel file YAML di configurazione del cluster. Una volta specificato ClusterCIDRConfigs,
non puoi modificare i valori in un secondo momento.
Puoi specificare più ClusterCIDRConfigs con CIDR sovrapposti.
Se non viene trovato alcun ClusterCIDRConfig corrispondente per un nodo, il nodo rimane in stato NotReady finché non viene creato un ClusterCIDRConfig con etichette corrispondenti.
Se ClusterCIDRConfig con la corrispondenza migliore non ha altri CIDR disponibili per l'allocazione, viene scelto il CIDR migliore successivo e i CIDR dei pod vengono allocati dai CIDR disponibili.
In caso di modello dual-stack, se vuoi assegnare ai nodi gli ID di rete dei pod dual-stack:
Configura i CIDR IPv4 e IPv6 in ClusterCIDRConfig.
Assicurati che tutti i ClusterCIDRConfig abbiano CIDR DualStack, se sono configurati più
ClusterCIDRConfig.
Assicurati che entrambi i CIDR IPv4 e IPv6 configurati abbiano un numero uguale di indirizzi IP allocabili per nodo.
Ad esempio, 32 - spec.IPv4.PerNodeMaskSize == 128 -
spec.IPv6.PerNodeMaskSize
spec.IPv4.PerNodeMaskSize = 24
spec.IPv6.PerNodeMaskSize = 120
Pertanto, 32 - 24 == 128 - 120, poiché la differenza è 8.
Più ClusterCIDRConfigs possono associare le etichette del campo nodeSelector alle etichette dei nodi.
Regole di assegnazione di ClusterCIDRConfig
Per determinare quale ClusterCIDRConfig viene utilizzato per assegnare i CIDR dei pod al nodo corrente, utilizza le seguenti regole di parità. Implementa queste regole nell'ordine specificato. Implementa la regola successiva solo se la parità non viene interrotta dalla regola precedente.
Scegli ClusterCIDRConfig il cui NodeSelector corrisponde al maggior numero di etichette sul Node. Ad esempio, {'node.kubernetes.io/instance-type':'medium', 'rack':
'rack1'} (Match Count: 2) viene scelto prima di
{'node.kubernetes.io/instance-type': 'medium'}. (Match Count: 1).
Scegli ClusterCIDRConfig con il minor numero di CIDR pod allocabili. Ad esempio, {CIDR: "10.0.0.0/16", PerNodeMaskSize: "16"} (1 possible Pod
CIDR) viene scelto prima di {CIDR: "192.168.0.0/20", PerNodeMaskSize: "22"} (4
possible Pod CIDRs).
Scegli ClusterCIDRConfig per cui PerNodeMaskSize ha il minor numero di indirizzi IP.
Ad esempio, 27 (2^(32-27)= 32 indirizzi IP) scelto prima di
25 (2^(32-25)=128 indirizzi IP).
Scegli ClusterCIDRConfig la cui etichetta NodeSelector corrispondente ha un valore alfanumerico inferiore. Ad esempio, {'kubernetes.io/hostname': 'node-1'} viene scelto al posto di {'node.kubernetes.io/instance-type':'medium'}.
Scegli ClusterCIDRConfig il cui IP CIDR ha un valore inferiore. Indipendentemente dal fatto che la configurazione sia IPv4 o DualStack, vengono confrontati solo i CIDR IPv4. Ad esempio, {CIDR: "10.0.0.0/16"} is picked over
{CIDR: "192.168.0.0/16"}.
Esempi di configurazione
Questa sezione elenca esempi di configurazione per Cluster e ClusterCIDRConfig per tutte le modalità di rete.
Esempi: modalità Isola IPv4 (predefinita)
Configurazione cluster (predefinita)
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm-cluster
namespace: cluster-default
spec:
...
clusterNetwork:
# Pods specify the IP ranges from which pod networks are allocated.
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/12
... (other cluster config omitted)
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2024-12-17 UTC."],[],[]]