Ingress Controller de Citrix ADC

Solución de problemas

En la siguiente tabla se describen algunos de los problemas comunes y las soluciones alternativas.

Problema Registro Solución temporal
No se puede acceder a la instancia de Citrix ADC 2019-01-10 05:05:27,250 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) Exception: HTTPConnectionPool(host=’10.106.76.200’, port=80): Max retries exceeded with url: /nitro/v1/config/login (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7f4d45bd63d0>: Failed to establish a new connection: [Errno 113] No route to host’,)) Asegúrese de que Citrix ADC esté en funcionamiento y de que pueda hacer ping a la dirección NSIP.
Nombre de usuario incorrecto 2019-01-10 05:03:05 ,958 - ERROR - [nitrointerface.py: login_logout: 90] (MainThread) Excepción de Nitro:: login_logout:: errorcode=354, message = nombre de usuario o contraseña no válidos  
El SNIP no está habilitado con acceso de administración 2019-01-10 05:43:03,418 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) Exception: HTTPConnectionPool(host=’10.106.76.242’, port=80): Max retries exceeded with url: /nitro/v1/config/login (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7f302a8cfad0>: Failed to establish a new connection: [Errno 110] Connection timed out’,)) Asegúrese de haber habilitado el acceso de administración en Citrix ADC (para Citrix ADC VPX de alta disponibilidad) y configure la dirección IP, NSIP, con el acceso de administración habilitado.
Error al analizar las anotaciones 2019-01-10 05:16:10,611 - ERROR - [kubernetes.py:set_annotations_to_csapp:1040] (MainThread) set_annotations_to_csapp: Error message=No JSON object could be decodedInvalid Annotation $service_weights please fix and apply ${“frontend”:, “catalog”:95}  
Puerto incorrecto para el acceso a NITRO 2019-01-10 05:18:53,964 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) Exception: HTTPConnectionPool(host=’10.106.76.242’, port=34438): Max retries exceeded with url: /nitro/v1/config/login (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7fc592cb8b10>: Failed to establish a new connection: [Errno 111] Connection refused’,)) Compruebe si se ha especificado el puerto correcto para el acceso a NITRO. De forma predeterminada, el Citrix Ingress Controller usa el puerto 80 para la comunicación.
La clase de entrada es incorrecta 2019-01-10 05:27:27 ,149 - INFO - [kubernetes.py: get_all_ingresses:1329] (MainThread) Clase Ingress no admitida para el objeto de entrada web-ingress.default Compruebe que el archivo de entrada pertenezca a la clase de entrada que supervisa el Citrix Ingress Controller. Consulte el siguiente registro para obtener información sobre las clases de entrada escuchadas por el Citrix Ingress Controller:
    Log: 2019-01-10 05:27:27 ,120 - DEBUG - [kubernetes.py:__init__:63] (MainThread) Se permiten clases de entrada:
    2019-01-10 05:27:27 ,120 - DEPURACIÓN - [kubernetes.py: __init__:64] (MainThread) [‘vpxclass’]
No se puede acceder a la API de Kubernetes 2019-01-10 05:32:09,729 - ERROR - [kubernetes.py:_get:222] (Thread-1) Error while calling /services:HTTPSConnectionPool(host=’10.106.76.237’, port=6443): Max retries exceeded with url: /api/v1/services (Caused by NewConnectionError(‘<urllib3.connection.VerifiedHTTPSConnection object at 0x7fb3013e7dd0>: Failed to establish a new connection: [Errno 111] Connection refused’,)) Comprueba si kubernetes_url es correcto. Use el comando kubectl cluster-info para obtener la información de la URL. Asegúrese de que el nodo principal de Kubernetes se ejecute en https://kubernetes_master_address:6443 y que el pod del servidor de la API de Kubernetes esté en funcionamiento.
Se especificó un puerto de servicio incorrecto en el archivo YAML   Proporcione los detalles correctos del puerto en el archivo YAML de entrada y vuelva a aplicarlo para resolver el problema.
El servidor virtual y el grupo de servicios de equilibrio de carga se crean pero están inactivos   Compruebe el nombre del servicio y el puerto utilizados en el archivo YAML. Para Citrix ADC VPX, asegúrese de que --feature-node-watch esté configurado en true, al abrir el Citrix Ingress Controller.
El servidor virtual de CS no se crea para Citrix ADC VPX.   Use la anotación, ingress.citrix.com/frontend-ip, en el archivo YAML de entrada para Citrix ADC VPX.
Se ha proporcionado un secreto incorrecto en la sección TLS del archivo YAML de entrada 2019-01-10 09:30:50 ,673 - INFO - [kubernetes.py:_get:231] (MainThread) Recurso no encontrado: /secrets/default-secret12345 namespace default Corrija los valores del archivo YAML y vuelva a aplicarlos para resolver el problema.
  2019-01-10 09:30:50 ,673 - INFO - [kubernetes.py: get_secret:1712] (MainThread) No se pudo obtener el secreto de la aplicación default-secret12345.default  
Se especifica el argumento feature-node-watch, pero las rutas estáticas no se agregan en Citrix ADC VPX ERROR - [nitrointerface.py: add_ns_route:4495] (MainThread) Excepción de Nitro: :add_ns_route: :errorcode=604, message=No se puede acceder directamente a la puerta de enlace Este error se produce cuando feature-node-watch está habilitado y el clúster de Citrix ADC VPX y Kubernetes no están en la misma red. Debe eliminar el- --feature-node-watch argumento del archivo YAML del Citrix Ingress Controller. Las rutas estáticas no funcionan cuando el clúster de Citrix ADC VPX y Kubernetes están en una red diferente. Use el controlador de nodos Citrix para crear túneles entre Citrix ADC VPX y los nodos del clúster.
Estado CRD no actualizado ERROR - [crdinfrautils.py: update_crd_status:42] (MainThread) Excepción durante la actualización del estado de CRD para negrwaddmuloccmod: Error de cliente 403: prohibido para url: https://10.96.0.1:443/apis/citrix.com/v1/namespaces/default/rewritepolicies/negrwaddmuloccmod/status Verifique que el permiso para enviar el estado de CRD se proporcione en el RBAC. El permiso debe ser similar al siguiente:
    - apiGroups: [“citrix.com”] resources: [“rewritepolicies/status”, “canarycrds/status”, “authpolicies/status”, “ratelimits/status”, “listeners/status”, “httproutes/status”, “wafs/status”]
El evento de Citrix Ingress Controller no se actualiza ERROR - [clienthelper.py:post:94] (MainThread) La solicitud de /eventos para el servidor api está prohibida Compruebe que el permiso para actualizar los eventos de pod del Citrix Ingress Controller se proporciona en el RBAC.
    - apiGroups: [””] resources: [“events”] verbs: [“create”]
No se agregó la directiva de respuesta de reescritura ERROR - [config_dispatcher.py: __dispatch_config_pack: 324] (despachador) Estado: 104, código de error: 3081, motivo: excepción de Nitro: error de sintaxis de expresión [D (10, 20). ^RE_SELECT (, Desplazamiento 15] < Dichos errores se deben a expresiones incorrectas en los CRD de respuesta de reescritura. Corrija la expresión y vuelva a aplicar la CRD.
  ERROR - [config_dispatcher.py: __dispatch_config_pack: 324] (despachador) Estado: 104, código de error: 3098, motivo: excepción de Nitro: tipo de datos de expresión no válido [ent.ip.src^, desplazamiento 13]  
La aplicación de un CRD falló. El Citrix Ingress Controller convierte una CRD en un conjunto de configuraciones para configurar Citrix ADC en el estado deseado según la CRD especificada. Si la configuración falla, es posible que la instancia de CRD no se aplique en Citrix ADC. 2020-07-13 08:49:07 ,620 - ERROR - [config_dispatcher.py: __dispatch_config_pack: 256] (Dispatcher) Error al ejecutar config add_SSLProfile_K8s_crd_k8service_kuard-service_default_default_80tcp_backend {name:k8s_crd_k8service_kuard-service_default_80tc_tc_tc p_backend Tipo de perfil SSL: backend tls12:enabled} de ConfigPack ‘default.k8service.kuard-service.add_spec’ El registro muestra que el comando NITRO ha fallado. El mismo registro también aparece en Citrix ADC. Compruebe Citrix ADC ns.log y busque la cadena de error mediante el comando grep para averiguar el comando Citrix ADC que falló durante la aplicación de CRD. Intente eliminar la CRD y vuelva a agregarla. Si vuelves a ver el problema, infórmalo en el canal de Slack nativo de la nube.
  2020-07-13 08:49:07 ,620 - ERROR - [config_dispatcher.py: __dispatch_config_pack: 257] (despachador) Estado: 104, código de error: 1074, motivo: excepción de Nitro: valor no válido [SSLProfileType, el valor difiere de la entidad existente y no se puede actualizar.]  
  2020-07-13 08:49:07 ,620 - INFO - [config_dispatcher.py:__dispatch_config_pack:263] (Dispatcher) El procesamiento de ConfigPack ‘default.k8service.kuard-service.add_spec’ falló  

Solución de problemas: integración de Prometheus y Grafana

Problema Descripción Solución temporal
El panel de Grafana no tiene trazas Si los gráficos de los paneles de control de Grafana no tienen ningún valor trazado, entonces Grafana no puede obtener estadísticas de su origen de datos. Compruebe si la fuente de datos de Prometheus está guardada y funciona correctamente. Al guardar la fuente de datos después de proporcionar el Nombre y la IP, aparece un Data source is working mensaje en verde que indica que la fuente de datos está accesible y detectada.
    Si el panel se crea con sample_grafana_dashboard.json, asegúrese de que el nombre dado a la fuente de datos de Prometheus comience con la palabra prometheus en minúscula.
    Consulte la página Targets de Prometheus para ver si el exportador objetivo requerido se encuentra en DOWN el estado.
DOWN: Se ha superado el plazo Si el mensaje aparece en cualquiera de los destinos del exportador de Prometheus, entonces Prometheus no puede conectarse al exportador o no puede obtener todas las métricas dentro del determinado scrape_timeout. Si utiliza el operador Prometheus, scrape_timeout se ajusta automáticamente y el error significa que no se puede acceder al exportador en sí.
    Si se utiliza un contenedor o pod de Prometheus independiente, intente aumentar los scrape_timeout valores scrape_interval y en el archivo /etc/prometheus/prometheus.cfg para aumentar el intervalo de tiempo para recopilar las métricas.

Resolución de problemas: supervisión de nodos de funciones de Open

Problema: Al usar OpenShift-OVN, CNI no feature-node-watch agrega las rutas correctas.

Descripción: Citrix Ingress Controller busca anotaciones de nodo para obtener los detalles necesarios para agregar las rutas estáticas.

Solución alternativa: Realice los siguientes pasos como solución alternativa.

  1. Asegúrese de que el siguiente permiso RBAC se proporciona al Citrix Ingress Controller junto con route.openshift.io para ejecutarse en el entorno OpenShift con OVN CNI.

    - apiGroups: ["config.openshift.io"]
      resources: ["networks"]
      verbs: ["get", "list"]
    
  2. El Citrix Ingress Controller busca las siguientes dos anotaciones agregadas por OVN, asegúrese de que existan en los nodos del clúster.

    "k8s.ovn.org/node-subnets": {\"default\":\"10.128.0.0/23\"}",
    "k8s.ovn.org/node-primary-ifaddr": "{\"ipv4\":\"x.x.x.x/24\"}"
    
  3. Si la anotación no existe, feature-node-watch puede que no funcione para CNI de OVN. En ese caso, debe configurar manualmente las rutas estáticas en Citrix ADC VPX.

Problema: Al usar OpenShift-SDN CNI, la función node-watch no agrega las rutas correctas.

Descripción: El Citrix Ingress Controller busca el CRD de subred host para obtener los detalles necesarios para agregar las rutas estáticas.

Solución alternativa: Realice los siguientes pasos como solución alternativa.

  1. Asegúrese de que el siguiente permiso RBAC se proporciona al Citrix Ingress Controller junto con route.openshift.io para ejecutarse en el entorno OpenShift con SDN CNI.

    - apiGroups: ["network.openshift.io"]
      resources: ["hostsubnets"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["config.openshift.io"]
      resources: ["networks"]
      verbs: ["get", "list"]
    
  2. Citrix Ingress Controller busca la siguiente CRD y especificación.

        oc get hostsubnets.network.openshift.io <cluster node-name> -ojson
    
        { "apiVersion": "network.openshift.io/v1",
            "host": <cluster node-name, 
            "hostIP": "x.x.x.x",
            "kind": "HostSubnet",
            "metadata": {
        "annotations": {
                        ...
        },
            "subnet": "10.129.0.0/23"
        }
    
  3. Si el CRD no existe con la especificación esperada, feature-node-watch puede que no funcione para OpenSHFIT-SDN CNI. En ese caso, debe configurar manualmente las rutas estáticas en Citrix ADC VPX.

Solución de problemas