ALB Ingress Controller es un controlador de ingress para clústeres de Kubernetes que enruta el tráfico externo hacia los servicios internos. Cuando se utiliza un ALB Ingress para acceder a un servicio, ALB Ingress Controller supervisa los cambios en los recursos de endpoint asociados al servicio. Después, el controlador sincroniza el estado de los nodos de backend con el grupo de servidores de backend correspondiente y aplica estos cambios a la instancia de Application Load Balancer (ALB). Este tema describe cómo diagnosticar y resolver los eventos anómalos que pueden presentarse al usar un ALB Ingress.
Funcionamiento
Cuando se accede a un servicio mediante un ALB Ingress, ALB Ingress Controller supervisa los cambios en diversos recursos y los sincroniza con la instancia de ALB asociada. Este proceso puede fallar debido a distintos límites o errores de configuración. La siguiente figura muestra las relaciones lógicas entre los diferentes recursos y el proceso de sincronización.
Paso 1: Comprobar si hay eventos anómalos
Desde la consola: en el panel de navegación izquierdo, elija . Seleccione el namespace de destino, haga clic en el nombre del ingress correspondiente para abrir su página de detalles y, a continuación, haga clic en la pestaña Events.
-
Con kubectl:
kubectl describe ingress <ingress-name> -n <namespace>Resultado esperado:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedBuildModel 2m28s (x10 over 6m43s) ingress listener is not exist in alb, port: 443, protocol: HTTPS Normal Sync 19s (x32 over 11d) ingress Scheduled for sync Normal SuccessfullyReconciled 4s (x20 over 11d) ingress Successfully reconciled
Revise la información de los eventos relacionados con el ingress en la columna Description o en el campo Message.
Scheduled for sync: indica que el evento comenzó.Successfully reconciled: indica que la conciliación finalizó.-
Para los mensajes de tipo
Warning, consulte el paso 2 para solucionar el problema.Si no se reportan eventos anómalos, pero los cambios no surten efecto, consulte What do I do if changes to an ALB Ingress do not take effect but no anomalous events are reported?
Paso 2: Analizar y resolver eventos anómalos
A continuación se describen los eventos anómalos más comunes, junto con sus causas y soluciones.
Para evitar eventos anómalos provocados por una versión antigua del componente ALB Ingress Controller que no sea compatible con las nuevas funciones, consulte las Release notes y actualice el componente a la versión de destino antes de iniciar el diagnóstico.
Mensaje | Causa | Solución |
listener is not exist in alb, port: 80, protocol: HTTP | En ALB Ingress Controller v2.11.0 y versiones posteriores, los listeners de un ingress solo se asocian y no se crean automáticamente. Este error ocurre si se usa un listener en un ingress sin haberlo creado primero en el AlbConfig correspondiente. | Para ALB Ingress Controller v2.11.0 o versiones posteriores, cree el listener necesario para el recurso de ingress en el AlbConfig. Para obtener más información, consulte Configure an ALB listener by using an AlbConfig. |
listener is not exist in alb, port: 443, protocol: HTTPS | ||
listener not found for (80/HTTP), with ingresses 1 | En ALB Ingress Controller v2.11.0 y versiones posteriores, este error ocurre si se elimina un listener de un AlbConfig que todavía está asociado a un ingress. El mensaje de error muestra el listener faltante y la cantidad de ingresses asociados. | Para eliminar un listener, primero debe quitar todos los ingresses asociados a él. Importante Si eliminó un listener por error, debe volver a agregarlo. |
none certificate found for host | TLS está habilitado y la detección automática de certificados está activa para un dominio, pero no existe ningún certificado coincidente para ese dominio en Certificate Management Service. |
|
Secret "XXX" not found | El Ingress hace referencia a un Secret de certificado TLS que no existe en el namespace especificado. Esto afecta principalmente la configuración de HTTPS. Si falta el Secret referenciado, ALB Ingress Controller no puede completar la configuración del certificado y la actualización de la configuración del AlbConfig podría bloquearse hasta que se resuelva el problema. | Asegúrese de que el Secret del certificado exista en el mismo namespace que el Ingress y de que su nombre coincida exactamente con el valor especificado en el campo |
The param of Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal | La regla de enrutamiento contiene un parámetro de ruta no válido. |
|
The param of ServerGroupName is illegal | El nombre del grupo de servidores de backend de ALB tiene un formato no válido. | Asegúrese de que el nombre del grupo de servidores utilice el formato correcto. El controlador genera el nombre del grupo de servidores con el formato |
The specified resource sgp-vz2fb219vv792flx3u is in use | Otra instancia de ALB hace referencia al grupo de servidores de backend de ALB administrado por ACK. | Inicie sesión en la consola de Application Load Balancer. En el panel de navegación izquierdo, elija . En la página Server Group, busque el grupo de servidores de backend de destino y desvincule la instancia de ALB según sea necesario. |
Message: Invalid parameter. Check the parameter input. | Este error suele ocurrir cuando se configura incorrectamente el identificador del certificado al especificarlo en un AlbConfig. | Compruebe si se está utilizando un identificador de recurso o un identificador numérico como identificador del certificado. Debe usar el identificador de certificado especificado por CertIdentifier. |
Message: Failed to create SSL Certificate with name default-https-secret-1-b585e6 ({namespace}-{name}-{identity}). Error: The certificate has expired . | El certificado del Secret que utiliza el ingress caducó. El nombre del certificado en el mensaje de error consta de tres partes:
|
Para obtener más información sobre la configuración, consulte Configure an HTTPS certificate for encrypted communication. |
failed to createSSLCertificateWithName: XXX ErrorCode: NameRepeat Message: The name is already used. Please enter another name. | El certificado del Secret que utiliza el ingress caducó. Reutilizar el nombre del certificado caducado al cargar uno nuevo provoca un conflicto de nombres de certificados SSL. | |
invalid server group Cookie: |
| Cuando utilice el método de reescritura de cookies, debe configurar un valor de cookie. Para obtener más información sobre los parámetros, consulte Implement session persistence by using annotations. |
| ||
The quota of alb_quota_server_added_num is exceeded for resource eni-xxxx, usage 202/200 | Se alcanzó la cuota | Aumente la cuota del grupo de servidores en Quota Center. |
Preguntas frecuentes
Los cambios en ALB Ingress no surten efecto
Si el controlador no desencadena eventos de conciliación para el AlbConfig o no logra procesar los eventos de cambio, es posible que exista un vínculo incorrecto entre IngressClass y AlbConfig. Para obtener más información, consulte Use an IngressClass to associate an AlbConfig with an ingress y compruebe que el parámetro spec.parameters de IngressClass apunte al nombre correcto del objeto de recurso AlbConfig.
¿Por qué el endpoint externo (Endpoint) de un ALB Ingress está vacío o no se puede obtener la dirección, y cómo se soluciona?
Si el endpoint externo de un ALB Ingress está vacío o no se puede obtener la dirección, revise las siguientes causas comunes y aplique la acción correspondiente:
No se especificó IngressClass: asegúrese de que el recurso de Ingress especifique el valor correcto de
ingressClassName(por ejemplo,alb). SiingressClassNameno está establecido o el valor no coincide con el IngressClass administrado por ALB Ingress Controller, el controlador no procesará el Ingress y el endpoint permanecerá vacío.Asociación incorrecta de AlbConfig: compruebe si IngressClass está asociado al nombre de AlbConfig correcto y verifique que el estado del AlbConfig sea normal. Una asociación incorrecta o un AlbConfig en estado anómalo impide que se aprovisione ALB. Para obtener más información, consulte Use an IngressClass to associate an AlbConfig with an ingress.
Direcciones IP insuficientes en el vSwitch: compruebe la cantidad de direcciones IP disponibles en los vSwitches asociados al AlbConfig. Para garantizar que las funciones elásticas de ALB funcionen correctamente, reserve como mínimo 8 direcciones IP en cada vSwitch donde se despliegue la instancia de ALB. Si las direcciones IP disponibles son insuficientes, reemplace el vSwitch o amplíe su rango CIDR.
Zonas de disponibilidad insuficientes: ALB requiere alta disponibilidad y necesita vSwitches en como mínimo dos zonas de disponibilidad distintas. Si solo se configuró una zona de disponibilidad, agregue vSwitches en como mínimo otra zona de disponibilidad.
Opción de instalación del componente: si durante la instalación del componente se seleccionó None, no se crearon automáticamente ninguna instancia de ALB ni ningún AlbConfig. Debe manually create AlbConfig and IngressClass y associate an AlbConfig with an Ingress using IngressClass.