Solución de problemas de conexión a puntos de conexión fuera de la red virtual
En este artículo se describe cómo solucionar problemas de conexiones a puntos de conexión fuera de la red virtual (es decir, a través de la red pública de Internet) desde un clúster de Microsoft Azure Kubernetes Service (AKS).
Requisitos previos
La herramienta url de cliente (curl).
La herramienta kubectl de Kubernetes o una herramienta similar para conectarse al clúster. Para instalar kubectl mediante la CLI de Azure, ejecute el comando az aks install-cli .
Lista de comprobación de solución de problemas
¿El problema es persistente?
Paso 1: Solución de problemas básica
Asegúrese de que puede conectarse a puntos de conexión públicos en Internet. Para obtener instrucciones, consulte Solución de problemas básica de conexiones de clúster de AKS salientes.
Paso 2: Determinar el tipo de salida para el clúster de AKS
Para identificar el tipo de salida del clúster de AKS, ejecute el comando az aks show :
az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"
Si el tipo de salida es loadBalancer
, no hay ninguna tabla de rutas a menos que use la red kubenet . Si usa kubenet, asegúrese de que la tabla de rutas predeterminada no tenga ninguna configuración adicional que bloquee la conexión saliente a Internet. Si usa otra red, como Azure CNI, Asignación dinámica o Superposición de Azure CNI, no se crea ninguna tabla de rutas de forma predeterminada. En este caso, asegúrese de que el grupo de seguridad de red (grupo de seguridad de red) no tenga ninguna configuración personalizada que bloquee la conexión saliente a Internet.
Si el tipo de salida es userDefinedRouting
, asegúrese de que se cumplen las condiciones siguientes:
Se puede acceder al dispositivo de salida (firewall o proxy).
El dispositivo de salida permite el tráfico saliente necesario del clúster.
Para obtener la lista de FQDN permitidos para el clúster de AKS, ejecute el comando az aks egress-endpoints list :
az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
Si el tipo de salida es managedNATGateway
, compruebe si la subred de AKS está asociada a la puerta de enlace NAT mediante la ejecución del comando az network nat gateway show :
az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"
Para más información sobre cómo usar una puerta de enlace NAT junto con AKS, consulte Puerta de enlace NAT administrada.
Paso 3: Examen de la salida de curl al conectarse al pod de la aplicación
Los códigos de respuesta curl pueden ayudarle a identificar el tipo de problema. Después de que el código de respuesta esté disponible, intente comprender mejor cómo se comporta el problema. Para obtener más información sobre los códigos de estado HTTP y el comportamiento subyacente del problema, consulte la tabla siguiente.
Origen de información | Vínculo |
---|---|
Entidad de números asignados a Internet (IANA) | Registro de código de estado del Protocolo de transferencia de hipertexto (HTTP) |
Mozilla | Códigos de estado de respuesta HTTP |
Wikipedia | Lista de códigos de estado HTTP |
Los siguientes códigos de estado HTTP pueden indicar los problemas enumerados.
Código de estado HTTP | Problema | Ejemplo |
---|---|---|
4xx |
|
|
5xx |
Un problema afecta al servidor. | La aplicación está inactiva o una puerta de enlace no funciona. |
Puede intentar conectarse al punto de conexión de la aplicación mediante curl. Este es un comando de ejemplo y una salida:
# 404 error code example
$ curl -vv <host IP address>/test.index
* Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact
Paso 4: Comprobación de lo que sucede si el tráfico saliente omite temporalmente la aplicación virtual
Para realizar pruebas rápidas para determinar si el dispositivo de salida (aplicación virtual) provoca el problema, puede permitir temporalmente que todo el tráfico pase por Internet. Para configurar esta configuración, puede cambiar la dirección IP predeterminada y la ruta de puerto de a través de 0.0.0.0
/0
la aplicación virtual para pasar por Internet en su lugar.
Si el dispositivo de salida funciona bien al pasar la aplicación virtual, compruebe los registros de la aplicación virtual para ver qué paquetes se deniegan y agregue reglas de permiso en la aplicación virtual en consecuencia.
¿El problema es intermitente?
Puede experimentar problemas intermitentes de salida por muchas razones. Para solucionar problemas intermitentes de conexión saliente, pruebe los pasos siguientes:
Paso 1: Comprobación de si se agotan los recursos de pod o nodo
Ejecute los siguientes comandos para comprobar la cantidad de recursos que se usan:
kubectl top pods
kubectl top nodes
Paso 2: Comprobar si el disco del sistema operativo se usa en gran medida
Para comprobar si el disco del sistema operativo se usa en gran medida, siga estos pasos:
En Azure Portal, busque y seleccione Conjuntos de escalado de máquinas virtuales.
En la lista de conjuntos de escalado, seleccione el conjunto de escalado que se usa para el clúster de AKS.
En el panel de navegación del conjunto de escalado, vaya a la sección Supervisión y, a continuación, seleccione Métricas.
Para ver las métricas de disco del conjunto de escalado de la sección Métricas , busque los campos siguientes.
Campo Valor Ámbito Nombre de VMSS Espacio de nombres de métricas Host de máquina virtual Métricas Métrica del disco de datos y del sistema operativo
Para obtener más información sobre las métricas, consulte Métricas de disco del sistema operativo y disco de datos.
Para ver las recomendaciones de AKS sobre el uso del disco, siga estos pasos:
En Azure Portal, busque y seleccione Servicios de Kubernetes.
En la lista de servicios de Kubernetes, seleccione el nombre del clúster de AKS.
En el panel de navegación del clúster de AKS, vaya a la sección Supervisión y seleccione Recomendaciones de Advisor.
Revise las recomendaciones enumeradas sobre el uso del disco.
Si el disco del sistema operativo se usa en gran medida, considere la posibilidad de usar los siguientes remedios:
Aumente el tamaño del disco del sistema operativo.
Cambie a discos del sistema operativo efímeros.
Si estos remedios no resuelven el problema, analice el proceso que realiza operaciones intensivas de lectura y escritura en el disco. A continuación, compruebe si puede mover las acciones a un disco de datos en lugar del disco del sistema operativo.
Paso 3: Comprobar si se agota el puerto de traducción de direcciones de red de origen
Si las aplicaciones realizan muchas conexiones salientes, pueden agotar el número de puertos disponibles en la dirección IP del dispositivo saliente. Siga los diagnósticos del equilibrador de carga estándar con métricas, alertas y estado de los recursos para supervisar el uso y la asignación del puerto de traducción de direcciones de red de origen (SNAT) del equilibrador de carga existente. Supervise para comprobar o determinar el riesgo de agotamiento de puertos SNAT.
¿Alcanza o supera el número máximo de puertos SNAT asignados? En ese caso, puede comprobar la aplicación para determinar si está reutilizando las conexiones existentes. Para obtener más información, consulte Diseño de las aplicaciones para usar conexiones de forma eficaz.
Si cree que la aplicación está configurada correctamente y necesita más puertos SNAT que el número predeterminado de puertos asignados, siga estos pasos:
Aumente el número de direcciones IP públicas en el dispositivo de salida. Si el dispositivo de salida es el equilibrador de carga, puede aumentar el número de direcciones IP públicas en el equilibrador de carga.
Aumente los puertos por nodo para los nodos de trabajo de AKS.
Aviso de declinación de responsabilidades sobre la información de contacto de terceros
Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la precisión de esta información de contacto de terceros.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.