Parte 10: Cuestionario de análisis profundo de IPAM
Cilium 1.20.2 (estable, 2026-09-16) · 2026-10-15. Los elementos marcados [versión preliminar 1.21] provienen de v1.21.0-pre.3.
Una operación CNI ADD asigna una IP al Pod mediante
POST /ipam, pero el plugin CNI se bloquea antes de crear el endpoint. ¿Cuándo libera el agente esa IP, si no hay ningún reinicio?- A) Cuando vence el temporizador de expiración de 10 minutos establecido durante la asignación
- B) Solo cuando el agente se reinicia y restaura los endpoints
- C) Inmediatamente, porque se cerró la conexión REST
- D) Después de 180 segundos, el valor predeterminado de
--excess-ip-release-delay
Mostrar respuesta
Respuesta: A) Cuando vence el temporizador de expiración de 10 minutos establecido durante la asignación
Explicación: El plugin CNI solicita la asignación con la marca de expiración activada, así que el agente inicia un temporizador de 10 minutos (
defaults.IPAMExpiration). La creación del endpoint detiene el temporizador; si nunca sucede, el temporizador libera la IP. El valor de 180 segundos corresponde a la liberación de IP excedentes de ENI en el operador.Con los valores predeterminados de Helm 1.20.2 para cluster-pool (
10.0.0.0/8, tamaño de máscara IPv4 24), ¿cuántos nodos pueden recibir un PodCIDR de ese CIDR y cuántas direcciones contiene el bloque de cada nodo?- A) 16,384 nodos, 1,024 direcciones cada uno
- B) 256 nodos, 65,536 direcciones cada uno
- C) 65,536 nodos, 256 direcciones cada uno
- D) 65,536 nodos, 254 direcciones utilizables según la definición de la máscara
Mostrar respuesta
Respuesta: C) 65,536 nodos, 256 direcciones cada uno
Explicación: La cantidad de nodos por CIDR del pool es
2^(nodeMask - poolMask) = 2^(24 - 8) = 65,536, y cada bloque contiene2^(32 - 24) = 256direcciones. Las IP utilizables para Pods son menos porque se apartan las direcciones de red/difusión y las direcciones de router, health e ingress.En el asignador cluster-pool IPv6 de 1.20.2, ¿qué limita la diferencia entre la longitud del prefijo del pool y la máscara del nodo?
- A) La diferencia debe ser de al menos 64 bits para que cada nodo reciba un /64, independientemente del tamaño del pool
- B) La diferencia no puede superar 16 bits (
clusterSubnetMaxDiff), porque el asignador usa un mapa de bits sin comprimir - C) No hay límite, solo la máscara del nodo no puede superar /128, ya que el mapa de bits está comprimido
- D) La diferencia debe ser exactamente 8 bits, como el valor predeterminado de IPv4
Mostrar respuesta
Respuesta: B) La diferencia no puede superar 16 bits (
clusterSubnetMaxDiff), porque el asignador usa un mapa de bits sin comprimirExplicación:
pkg/ipam/cidrsetrechaza una máscara IPv6 de nodo que supere en más de 16 bits el prefijo del pool (ErrCIDRSetSubNetTooBig). IPv4 solo requiere que la máscara del nodo no supere 32. Los valores predeterminados de Helmfd00::/104con/120quedan justo en el límite de 16 bits.En IPAM de varios pools, ¿qué orden usa Cilium para elegir el pool de un Pod nuevo?
- A) Selectores CiliumPodIPPool, luego anotación del Pod, luego anotación del espacio de nombres y después el pool
default, salvo que se configurerequire-pool-match - B) Siempre el pool
default; las anotaciones y los selectores solo afectan masquerading y LB IPAM - C) Anotación del espacio de nombres, luego anotación del Pod y después
default; los selectores CiliumPodIPPool solo se usan para LB IPAM - D) Anotación del Pod (
ipv4-pool/ipv6-poolantes deip-pool), luego anotación del espacio de nombres, después selectores CiliumPodIPPool y, por último,default, salvo que se configurerequire-pool-match
Mostrar respuesta
Respuesta: D) Anotación del Pod (
ipv4-pool/ipv6-poolantes deip-pool), luego anotación del espacio de nombres, después selectores CiliumPodIPPool y, por último,default, salvo que se configurerequire-pool-matchExplicación: Las anotaciones del Pod tienen prioridad sobre las del espacio de nombres, que a su vez tienen prioridad sobre las coincidencias de
podSelector/namespaceSelector. Si no hay coincidencias, se usa el pool cuyo nombre indicaipam-default-ip-pool(valor predeterminadodefault), a menos que el Pod o su espacio de nombres tengaipam.cilium.io/require-pool-match: "true", lo que bloquea la asignación. La selección ocurre una sola vez, al crear el Pod.- A) Selectores CiliumPodIPPool, luego anotación del Pod, luego anotación del espacio de nombres y después el pool
Un Pod coincide con los selectores de dos recursos CiliumPodIPPool diferentes para la misma familia de direcciones y no tiene anotación de pool. ¿Qué sucede?
- A) La asignación falla con un error y un evento porque debe coincidir exactamente un pool por familia
- B) Se usa el pool cuyo nombre aparece primero alfabéticamente y se registra un evento
- C) El Pod recibe una dirección de cada pool coincidente y ambas se enrutan
- D) Se usa el pool
defaultpara desempatar y se ignoran los selectores
Mostrar respuesta
Respuesta: A) La asignación falla con un error y un evento porque debe coincidir exactamente un pool por familia
Explicación: La selección por selectores requiere exactamente un pool coincidente por familia. Varias coincidencias producen un error (
multiple CiliumPodIPPools match pod ...) y el Pod queda enContainerCreating. Corrígelo afinando los selectores o anotando explícitamente el Pod o el espacio de nombres.¿Qué afirmación sobre la delegación de prefijos ENI en Cilium 1.20.2 es correcta?
- A) Funciona con cualquier tipo de instancia EC2 y asigna prefijos /24, con fallback a /28 cuando la subred se llena
- B) Funciona con cualquier tipo de instancia y combina libremente asignaciones /32 y /28 en el mismo nodo, cambiando según la subred para cada Pod
- C) Requiere
ipam.mode=multi-pooly unCiliumPodIPPoolcuyos CIDR enumeren los prefijos que se delegarán - D) Solo funciona en instancias Nitro o bare metal, asigna prefijos /28, se omite si el nodo ya tiene IP secundarias /32 y recurre a /32 si la subred no tiene prefijos
Mostrar respuesta
Respuesta: D) Solo funciona en instancias Nitro o bare metal, asigna prefijos /28, se omite si el nodo ya tiene IP secundarias /32 y recurre a /32 si la subred no tiene prefijos
Explicación: El operador comprueba si hay un hipervisor Nitro o bare metal, omite el modo de prefijos en nodos que ya tienen IP secundarias (no hay modo mixto) y, ante
InsufficientPrefixesInSubnet, deja de asignar prefijos a ese nodo y usaAssignPrivateIpAddresses. La unidad es /28 (16 direcciones, /80 para IPv6). El modo ENI no usa CiliumPodIPPool.¿Cómo transfiere el asignador ENI de 1.20 al agente el estado de las interfaces EC2?
- A) El operador escribe IP individuales en
spec.ipam.pooly el agente informa el uso enstatus.ipam.used, igual que en 1.19, sin escribir el estado ENI - B) El agente llama directamente a la API de EC2 con sus propias credenciales y el operador solo recolecta ENI como basura
- C) El operador escribe ENI en
status.eni.enis; el agente los convierte en CIDR /32 y /28 enspec.ipam.pools.allocated(pooldefault) e informa la demanda enspec.ipam.pools.requested - D) Cada ENI se convierte en su propio CiliumPodIPPool, seleccionado con la anotación
ip-pooly creado por el operador
Mostrar respuesta
Respuesta: C) El operador escribe ENI en
status.eni.enis; el agente los convierte en CIDR /32 y /28 enspec.ipam.pools.allocated(pooldefault) e informa la demanda enspec.ipam.pools.requestedExplicación: En 1.20, ENI pasó al asignador de varios pools: solo el operador llama a EC2; el agente deriva CIDR asignados del inventario de ENI y vuelve a escribir la capacidad solicitada. El modelo
spec.ipam.pool/status.ipam.usedcorresponde al asignador CRD de 1.19 y 1.18. El modo ENI no usa CiliumPodIPPool ni la anotaciónip-pool.- A) El operador escribe IP individuales en
[Versión preliminar 1.21] Actualmente pasas
--aws-use-primary-addressdirectamente al operador de Cilium. ¿Qué debes hacer antes de pasar a 1.21?- A) Nada; la marca solo está obsoleta y sigue funcionando como marca del operador en 1.21
- B) Eliminarla y establecer
eni.nodeSpec.usePrimaryAddress=true(marca del agente--eni-use-primary-address) - C) Configurarla en CiliumPodIPPool para el pool predeterminado bajo
spec.ipv4.pool[] - D) Pasarla al agente como
--aws-use-primary-address, conservando el mismo nombre
Mostrar respuesta
Respuesta: B) Eliminarla y establecer
eni.nodeSpec.usePrimaryAddress=true(marca del agente--eni-use-primary-address)Explicación: La marca del operador se elimina en 1.21 para que
CiliumNode.spec.eni.use-primary-addresssea la única fuente de verdad por nodo. Los usuarios de Helm no se ven afectados porque el chart siempre conectó únicamente el valor del lado del agente. Este cambio corresponde a una versión preliminar (v1.21.0-pre.3).[Versión preliminar 1.21] ¿Para qué se usa
spec.ipv4.pool[].reservedRangesenCiliumPodIPPooldecilium.io/v2?- A) Para excluir direcciones de todos los bloques de nodo y entregarlas como IP estáticas de Service mediante pools de LB IPAM
- B) Para permitir cambiar
maskSizeen un pool activo sin volver a crear los bloques de nodo existentes - C) Para reservar direcciones para los endpoints de router, health e ingress en cada bloque de nodo
- D) Para conservar un CIDR antiguo en
cidrsde modo que los bloques de nodo existentes sigan funcionando mientras no se creen bloques nuevos allí, lo que permite migrar gradualmente a otro CIDR
Mostrar respuesta
Respuesta: D) Para conservar un CIDR antiguo en
cidrsde modo que los bloques de nodo existentes sigan funcionando mientras no se creen bloques nuevos allí, lo que permite migrar gradualmente a otro CIDRExplicación: Reservar todo el CIDR antiguo significa que Cilium conserva las asignaciones existentes, pero asigna nuevos bloques PodCIDR solo desde los otros CIDR. Después de que todos los grupos de nodos migren, se elimina el CIDR antiguo y su entrada
pool. Cadapool[].cidrdebe ser uno de los valores decidrs;maskSizepermanece inmutable.Dos recursos
CiliumLoadBalancerIPPoolcontienen bloques superpuestos. ¿Qué hace LB IPAM?- A) Marca el pool posterior como Conflicting (
cilium.io/PoolConflict) y no asigna nada desde él - B) Rechaza el segundo pool durante la admisión mediante un webhook de validación
- C) Los combina en un solo pool y asigna direcciones de la unión de sus bloques
- D) Divide el rango superpuesto equitativamente entre los dos pools según la cantidad de Service
Mostrar respuesta
Respuesta: A) Marca el pool posterior como Conflicting (
cilium.io/PoolConflict) y no asigna nada desde élExplicación: LB IPAM no combina ni rechaza pools superpuestos. El posterior se marca como Conflicting, se muestra en la columna de salida
Conflictingy en la métricalbipam_conflicting_pools(el prefijo exacto en tiempo de ejecución,cilium_ocilium_operator_, no está verificado), y no se asigna ninguna IP desde él. Editar un pool activo también puede reasignar IP de Service existentes, así que es preferible agregar un pool o establecerdisabled: true.- A) Marca el pool posterior como Conflicting (