En esta página, se muestra cómo resolver problemas con la pérdida de paquetes de Cloud NAT desde un clúster de Google Kubernetes Engine (GKE) nativo de la VPC con nodos privados habilitados.
Las VMs de nodo en clústeres de GKE nativos de la VPC con nodos privados no tienen direcciones IP externas. Esto significa que los clientes en Internet no se pueden conectar a las direcciones IP de los nodos. Puedes usar Cloud NAT para asignar las direcciones IP externas y los puertos que permiten que los clústeres con nodos privados establezcan conexiones públicas.
Si una VM de nodo se queda sin su asignación de puertos IP y direcciones IP externas de Cloud NAT, los paquetes se descartarán. Para evitar esto, puedes reducir la frecuencia de paquetes salientes o aumentar la asignación de puertos y direcciones IP de origen de Cloud NAT disponibles. En las siguientes secciones, se describe cómo diagnosticar y solucionar problemas de pérdida de paquetes de Cloud NAT en el contexto de clústeres de GKE con nodos privados.
Diagnostica la pérdida de paquetes
En las siguientes secciones, se explica cómo registrar paquetes descartados con Cloud Logging y diagnosticar la causa de los paquetes descartados mediante Cloud Monitoring.
Registra paquetes descartados
Puedes registrar paquetes descartados con la siguiente consulta en Cloud Logging:
resource.type="nat_gateway" resource.labels.region=REGION resource.labels.gateway_name=GATEWAY_NAME jsonPayload.allocation_status="DROPPED"
Reemplaza lo siguiente:
REGION
: es el nombre de la región en la que se encuentra el clúster.GATEWAY_NAME
: el nombre de la puerta de enlace de Cloud NAT.
Este comando muestra una lista de todos los paquetes que descartó una puerta de enlace de Cloud NAT, pero no identifica la causa.
Supervisa las causas de la pérdida de paquetes
Para identificar las causas de los paquetes descartados, consulta el observador de métricas en Cloud Monitoring. Los paquetes se descartan por uno de tres motivos:
OUT_OF_RESOURCES
ENDPOINT_INDEPENDENT_CONFLICT
NAT_ALLOCATION_FAILED
Para identificar los paquetes descartados debido a códigos de error OUT_OF_RESOURCES
o ENDPOINT_ALLOCATION_FAILED
, usa la siguiente consulta:
fetch nat_gateway metric 'router.googleapis.com/nat/dropped_sent_packets_count' filter (resource.gateway_name == GATEWAY_NAME) align rate(1m) every 1m group_by [metric.reason], [value_dropped_sent_packets_count_aggregate: aggregate(value.dropped_sent_packets_count)]
Si identificas paquetes que se descartan por estos motivos, consulta Paquetes descartados con el motivo: recursos insuficientes y Paquetes descartados con el motivo: conflicto independiente de extremo para obtener sugerencias de solución de problemas.
Para identificar los paquetes descartados debido al código de error NAT_ALLOCATION_FAILED
, usa la siguiente consulta:
fetch nat_gateway metric 'router.googleapis.com/nat/nat_allocation_failed' group_by 1m, [value_nat_allocation_failed_count_true: count_true(value.nat_allocation_failed)] every 1m
Si identificas paquetes que se descartaron por este motivo, consulta Es necesario asignar más direcciones IP.
Investiga la configuración de Cloud NAT
Si las consultas anteriores muestran resultados vacíos y los Pods de GKE no pueden comunicarse con direcciones IP externas, usa la siguiente tabla para solucionar los problemas de configuración:
Configuration | Soluciona problemas |
Cloud NAT configurado para aplicarse solo al rango de direcciones IP principal de la subred. |
Cuando Cloud NAT se configura solo para el rango de direcciones IP principal de la subred, los paquetes enviados desde el clúster hacia direcciones IP externas deben tener una dirección IP de nodo de origen. En esta configuración de Cloud NAT, haz lo siguiente:
|
Cloud NAT configurado para aplicarse solo al rango de direcciones IP secundario de la subred utilizado para las IP de Pods. |
Cuando Cloud NAT se configura solo para el rango de direcciones IP secundario de la subred que usan las IP del Pod del clúster, los paquetes enviados desde el clúster hacia direcciones IP externas deben tener una dirección IP del Pod de origen. En esta configuración de Cloud NAT, se dan las siguientes situaciones:
|
Reduce la pérdida de paquetes
Después de diagnosticar la causa de la pérdida de paquetes, considera usar las siguientes recomendaciones para reducir la probabilidad de que el problema vuelva a ocurrir en el futuro:
Configurar la puerta de enlace de Cloud NAT para usar la asignación de puerto dinámica y aumentar la cantidad máxima de puertos por VM
Si usas la asignación de puertos estática, aumenta la cantidad de puertos mínimos por VM.
Reduce la tasa de paquetes salientes de tu aplicación. Cuando una aplicación realiza varias conexiones salientes a la misma dirección IP y puerto de destino, puede consumir con rapidez todas las conexiones que Cloud NAT puede realizar a ese destino mediante la cantidad de direcciones de origen de NAT y tuplas de puertos de origen asignadas.
Para obtener detalles sobre cómo Cloud NAT usa direcciones de origen y puertos de origen para realizar conexiones, incluidos los límites de la cantidad de conexiones simultáneas a un destino, consulta Puertos y conexiones.
Para reducir la tasa de conexiones salientes desde la aplicación, reutiliza las conexiones abiertas. Los métodos comunes para reutilizar conexiones incluyen la agrupación de conexiones, la multiplexación de conexiones con protocolos como HTTP/2 o el establecimiento de conexiones persistentes reutilizadas para varias solicitudes. Para obtener más información, consulta Puertos y conexiones.
¿Qué sigue?
Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.