Información sobre el recurso personalizado ClusterCIDRConfig
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
Información general
ClusterCIDRConfig es un recurso de asignación de CIDR personalizado que te permite asignar de forma dinámica más intervalos de direcciones IP a los pods.
La gestión de direcciones IP (IPAM) permite usar las subredes IP de forma eficiente y evita que se solapen los intervalos de direcciones, lo que previene conflictos e interrupciones en la red.
Kubernetes asigna CIDRs de pods por nodo, que se usan como direcciones IP de los pods que se ejecutan en ese nodo.
La implementación actual de NodeIPAM de Kubernetes tiene las siguientes limitaciones:
Todos los CIDRs de los pods se asignan a partir de un CIDR de clúster. Debes especificar todo el intervalo de direcciones IP teniendo en cuenta el clúster más grande en el momento de la creación del clúster. Esta limitación puede desperdiciar direcciones IP.
Si aumentas el tamaño del clúster, será difícil añadir más direcciones IP.
El CIDR del clúster es un intervalo grande. Puede que sea difícil encontrar un bloque contiguo de direcciones IP que satisfaga las necesidades del clúster.
Cada nodo obtiene un intervalo de IPs de tamaño fijo dentro de un clúster. Si los nodos tienen tamaños y capacidades diferentes, no puedes asignar un intervalo de pods mayor a un nodo determinado con una capacidad mayor y un intervalo menor a los nodos con una capacidad menor. Esto desperdicia muchas direcciones IP. En un clúster grande con muchos nodos, este desperdicio se acumula en todos los nodos del clúster.
Con la función ClusterCIDRConfig, puedes evitar asignar un bloque CIDR grande a un clúster, asignar el tamaño del clúster a la escala de tus pods y, por lo tanto, conservar las direcciones IP. Puedes guardar direcciones IP usando ClusterCIDRConfigs
con diferentes combinaciones de CIDR y perNodeMaskSize. El recurso ClusterCIDRConfig admite lo siguiente:
Varios bloques CIDR de IPs no contiguos para el CIDR del clúster a un nivel más granular
Afinidad de nodos de bloques CIDR
Se asignan diferentes tamaños de bloque a los nodos.
Google Distributed Cloud usa la función ClusterCIDRConfig en las siguientes funciones:
Cluster.spec.clusterNetwork.pods.cidrBlocks es un campo opcional y no está definido de forma predeterminada. Debes definirlo si alguna de las funciones de la lista anterior no lo tiene definido. Por ejemplo, es obligatorio cuando los clústeres se crean en el modo de isla IPv4 y se debe especificar, ya que se usa como CIDR de enrutamiento nativo.
En la siguiente tabla se muestra el uso del campo Cluster.spec.clusterNetwork.pods.cidrBlocks de ClusterCIDRConfig en diferentes modos de red.
Cluster.spec.clusterNetwork.pods.cidrBlocks se ignoran por completo y se pueden omitir. Los usuarios deben definir explícitamente ClusterCIDRConfigs (por nodo, por nodepool o por clúster).
Doble pila (IPv4 Island e IPv4 Flat)
Especifica el CIDR de IPv4.
No especifiques CIDR de IPv6 en
Cluster.spec.clusterNetwork.pods.cidrBlocks.
Especifica ClusterCIDRConfigs con CIDRs IPv4 e IPv6. El CIDR de IPv4 configurado en todos los ClusterCIDRConfigs debe ser el mismo que el CIDR de IPv4 de Cluster.spec.clusterNetwork.pods.cidrBlocks, incluido el valor de PerNodeMask de IPv4. Para obtener más información sobre ClusterCIDRConfig y ejemplos de cómo usarlo, consulta Ejemplos: pila dual (isla IPv4, plana IPv6).
Doble pila (IPv4 plana, IPv6 plana)
Puedes omitir Cluster.spec.clusterNetwork.pods.cidrBlocks, ya que se ignoran por completo. Debes definir explícitamente ClusterCIDRConfigs (por nodo, por grupo de nodos o por clúster) con CIDRs IPv4 e IPv6.
Configurar el recurso de asignador de CIDR personalizado ClusterCIDRConfig
ClusterCIDRConfig
Cuando configures el recurso ClusterCIDRConfig de asignador de CIDR personalizado, ten en cuenta lo siguiente:
La asignación de CIDR de pods de un ClusterCIDRConfig concreto a un nodo se basa en selectores de etiquetas. Es similar al mecanismo nodeSelector que se usa para programar pods en un nodo.
Debes configurar ClusterCIDRConfig durante el proceso de creación del clúster en el archivo YAML de configuración del clúster. Una vez que especifiques ClusterCIDRConfigs, no podrás modificar los valores más adelante.
Puedes especificar varios ClusterCIDRConfigs con CIDRs superpuestos.
Si no se encuentra ningún ClusterCIDRConfig que coincida con un nodo, el nodo permanece en el estado NotReady hasta que se crea un ClusterCIDRConfig con etiquetas coincidentes.
Si el ClusterCIDRConfig que mejor coincide no tiene más CIDRs disponibles para la asignación, se elige el siguiente mejor CIDR y los CIDRs de los pods se asignan a partir de los CIDRs disponibles.
En el caso del modelo de pila dual,
si quieres asignar CIDRs de Pod de pila dual a los nodos, haz lo siguiente:
Configura los CIDRs IPv4 e IPv6 en ClusterCIDRConfig.
Asegúrate de que todos los ClusterCIDRConfig tengan CIDRs de tipo DualStack si hay varios ClusterCIDRConfig configurados.
Asegúrate de que los CIDRs IPv4 e IPv6 configurados tengan el mismo número de direcciones IP asignables por nodo.
Por ejemplo, 32 - spec.IPv4.PerNodeMaskSize == 128 -
spec.IPv6.PerNodeMaskSize
spec.IPv4.PerNodeMaskSize = 24
spec.IPv6.PerNodeMaskSize = 120
Por lo tanto, 32 - 24 == 128 - 120, ya que la diferencia es 8.
Varios ClusterCIDRConfigs pueden coincidir con las etiquetas de nodeSelector y las etiquetas de nodo.
Reglas de asignación de ClusterCIDRConfig
Para determinar qué ClusterCIDRConfig se usa para asignar CIDRs de pods al nodo actual, sigue estas reglas para resolver los empates. Implementa estas reglas en el orden indicado. Implementa la siguiente regla solo si la regla anterior no resuelve el empate.
Elige el ClusterCIDRConfig cuyo NodeSelector coincida con el mayor número de etiquetas del nodo. Por ejemplo, {'node.kubernetes.io/instance-type':'medium', 'rack':
'rack1'} (Match Count: 2) se elige antes que {'node.kubernetes.io/instance-type': 'medium'}. (Match Count: 1).
Elige el ClusterCIDRConfig con el menor número de CIDRs de pods asignables. Por ejemplo, {CIDR: "10.0.0.0/16", PerNodeMaskSize: "16"} (1 possible Pod
CIDR) se elige antes que {CIDR: "192.168.0.0/20", PerNodeMaskSize: "22"} (4
possible Pod CIDRs).
Elige el ClusterCIDRConfig cuyo PerNodeMaskSize tenga el menor número de direcciones IP.
Por ejemplo, 27 (2^(32-27)= 32 direcciones IP) se elige antes que 25 (2^(32-25)=128 direcciones IP).
Elige el ClusterCIDRConfig cuya etiqueta NodeSelector coincidente tenga un valor alfanumérico inferior. Por ejemplo, se elige {'kubernetes.io/hostname': 'node-1'} en lugar de {'node.kubernetes.io/instance-type':'medium'}.
Elige el ClusterCIDRConfig cuyo CIDR IP tenga un valor inferior. Independientemente de si la configuración es IPv4 o DualStack, solo se comparan los CIDRs de IPv4. Por ejemplo, {CIDR: "10.0.0.0/16"} is picked over
{CIDR: "192.168.0.0/16"}.
Ejemplos de configuración
En esta sección se muestran ejemplos de configuración de Cluster y ClusterCIDRConfig para todos los modos de red.
Ejemplos: modo de isla IPv4 (predeterminado)
Configuración de clúster (predeterminada)
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)
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-10-20 (UTC)."],[],[]]