Citrix ADC Ingress Controller

Problembehandlung

In der folgenden Tabelle werden einige der häufigsten Probleme und Problemumgehungen beschrieben.

Problem Protokoll Workaround
Citrix ADC-Instanz ist nicht erreichbar 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’,)) Stellen Sie sicher, dass der Citrix ADC läuft und Sie die NSIP-Adresse anpingen können.
Falsches Benutzername-Kennwort 2019-01-10 05:03:05,958 - ERROR - [nitrointerface.py:login_logout:90] (MainThread) Nitro Exception::login_logout::errorcode=354,message=Invalid username or password  
SNIP ist nicht mit Verwaltungszugriff aktiviert 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’,)) Stellen Sie sicher, dass Sie den Verwaltungszugriff in Citrix ADC aktiviert haben (für Citrix ADC VPX Hochverfügbarkeit) und legen Sie die IP-Adresse NSIPmit aktiviertem Verwaltungszugriff fest.
Fehler beim Analysieren von Anmerkungen 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}  
Falscher Port für NITRO-Zugriff 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’,)) Prüfen Sie, ob der richtige Port für den NITRO-Zugriff angegeben ist. Standardmäßig verwendet Citrix Ingress Controller den Port 80 für die Kommunikation.
Ingress-Klasse ist falsch 2019-01-10 05:27:27,149 - INFO - [kubernetes.py:get_all_ingresses:1329] (MainThread) Unsupported Ingress class for ingress object web-ingress.default Stellen Sie sicher, dass die Eingangsdatei zu der Eingangsklasse gehört, die der Citrix Ingress Controller überwacht. Im folgenden Protokoll finden Sie Informationen zu den vom Citrix Ingress Controller abhörenden Eingangsklassen:
    Log: 2019-01-10 05:27:27,120 - DEBUG - [kubernetes.py:__init__:63] (MainThread) Ingress classes allowed:
    2019-01-10 05:27:27,120 - DEBUG - [kubernetes.py:__init__:64] (MainThread) [‘vpxclass’]
Die Kubernetes-API ist nicht erreichbar 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’,)) Prüfen Sie, ob die kubernetes_url korrekt ist. Verwenden Sie den Befehl, kubectl cluster-info um die URL-Informationen abzurufen. Stellen Sie sicher, dass der Kubernetes-Hauptknoten unter ausgeführt wird https://kubernetes_master_address:6443 und der Kubernetes-API-Server-Pod aktiv ist.
In der YAML-Datei wurde ein falscher Dienstport angegeben   Geben Sie die richtigen Portdetails in der eingehenden YAML-Datei an und wenden Sie sie erneut an, um das Problem zu beheben.
Der virtuelle Server und die Dienstgruppe für den Lastenausgleich werden erstellt, sind aber nicht verfügbar   Suchen Sie nach dem in der YAML-Datei verwendeten Dienstnamen und Port. Stellen Sie für Citrix ADC VPX sicher, --feature-node-watch dass beim trueAufrufen des Citrix Ingress Controller auf eingestellt ist.
Der virtuelle CS-Server wird nicht für Citrix ADC VPX erstellt.   Verwenden Sie die Anmerkung in der YAML-Ingress-Datei für Citrix ADC VPX. ingress.citrix.com/frontend-ip
Falsches Secret im TLS-Abschnitt der YAML-Ingress-Datei 2019-01-10 09:30:50,673 - INFO - [kubernetes.py:_get:231] (MainThread) Resource not found: /secrets/default-secret12345 namespace default Korrigieren Sie die Werte in der YAML-Datei und bewerben Sie sich erneut, um das Problem zu beheben
  2019-01-10 09:30:50,673 - INFO - [kubernetes.py:get_secret:1712] (MainThread) Failed to get secret for the app default-secret12345.default  
Das feature-node-watch Argument ist angegeben, aber statische Routen werden nicht in der Citrix ADC VPX hinzugefügt ERROR - [nitrointerface.py:add_ns_route:4495] (MainThread) Nitro Exception::add_ns_route::errorcode=604,message=The gateway is not directly reachable Dieser Fehler tritt auf, wenn feature-node-watch aktiviert ist und sich der Citrix ADC VPX und der Kubernetes-Cluster nicht im selben Netzwerk befinden. Sie müssen das Argument - --feature-node-watch aus der YAML-Datei des Citrix Ingress Controller entfernen. Statische Routen funktionieren nicht, wenn sich der Citrix ADC VPX und der Kubernetes-Cluster in einem anderen Netzwerk befinden. Verwenden Sie den Citrix Node Controller, um Tunnel zwischen Citrix ADC VPX und Clusterknoten zu erstellen.
CRD-Status wurde nicht aktualisiert ERROR - [crdinfrautils.py:update_crd_status:42] (MainThread) Exception during CRD status update for negrwaddmuloccmod: 403 Client Error: Forbidden for url: https://10.96.0.1:443/apis/citrix.com/v1/namespaces/default/rewritepolicies/negrwaddmuloccmod/status Stellen Sie sicher, dass die Berechtigung zum Push des CRD-Status in der RBAC bereitgestellt wird. Die Berechtigung sollte der folgenden ähnlich sein:
    - apiGroups: [“citrix.com”] resources: [“rewritepolicies/status”, “canarycrds/status”, “authpolicies/status”, “ratelimits/status”, “listeners/status”, “httproutes/status”, “wafs/status”]
Citrix Ingress Controller-Ereignis wurde nicht aktualisiert ERROR - [clienthelper.py:post:94] (MainThread) Reuqest /events to api server is forbidden Stellen Sie sicher, dass die Berechtigung zum Aktualisieren der Citrix Ingress Controller-Pod-Ereignisse im RBAC bereitgestellt wird.
    - apiGroups: [””] resources: [“events”] verbs: [“create”]
Rewrite-Responder-Richtlinie wurde nicht hinzugefügt ERROR - [config_dispatcher.py:__dispatch_config_pack:324] (Dispatcher) Status: 104, ErrorCode: 3081, Reason: Nitro Exception: Expression syntax error [D(10, 20).^RE_SELECT(, Offset 15] < Solche Fehler sind auf falsche Ausdrücke in Rewrite-Responder-CRDs zurückzuführen. Korrigieren Sie den Ausdruck und wenden Sie die CRD erneut an.
  ERROR - [config_dispatcher.py:__dispatch_config_pack:324] (Dispatcher) Status: 104, ErrorCode: 3098, Reason: Nitro Exception: Invalid expression data type [ent.ip.src^, Offset 13]  
Die Anwendung einer CRD ist fehlgeschlagen. Der Citrix Ingress Controller wandelt eine CRD in eine Reihe von Konfigurationen um, um den Citrix ADC gemäß der angegebenen CRD in den gewünschten Zustand zu konfigurieren. Wenn die Konfiguration fehlschlägt, wird die CRD-Instanz möglicherweise nicht auf dem Citrix ADC angewendet. 2020-07-13 08:49:07,620 - ERROR - [config_dispatcher.py:__dispatch_config_pack:256] (Dispatcher) Failed to execute config ADD_sslprofile_k8s_crd_k8service_kuard-service_default_80tcp_backend{name:k8s_crd_k8service_kuard-service_default_80_tcp_backend sslprofiletype:BackEnd tls12:enabled } from ConfigPack ‘default.k8service.kuard-service.add_spec’ Protokoll zeigt, dass der NITRO-Befehl fehlgeschlagen ist. Das gleiche Protokoll wird auch in Citrix ADC angezeigt. Überprüfen Sie den Citrix ADC ns.log und suchen Sie mit dem grep Befehl nach der Fehlerzeichenfolge, um den Citrix ADC-Befehl herauszufinden, der während der Anwendung von CRD fehlgeschlagen ist. Versuchen Sie, die CRD zu löschen, und fügen Sie sie erneut hinzu. Wenn du das Problem erneut siehst, melde es im nativen Slack-Kanal der Cloud.
  2020-07-13 08:49:07,620 - ERROR - [config_dispatcher.py:__dispatch_config_pack:257] (Dispatcher) Status: 104, ErrorCode: 1074, Reason: Nitro Exception: Invalid value [sslProfileType, value differs from existing entity and it cant be updated.]  
  2020-07-13 08:49:07,620 - INFO - [config_dispatcher.py:__dispatch_config_pack:263] (Dispatcher) Processing of ConfigPack ‘default.k8service.kuard-service.add_spec’ failed  

Problembehandlung - Integration von Prometheus und Grafana

Problem Beschreibung Workaround
Grafana-Dashboard hat keine Werte Wenn die Diagramme in den Grafana-Dashboards keine Werte aufweisen, kann Grafana keine Statistiken aus seiner Datenquelle abrufen. Prüfen Sie, ob die Prometheus-Datenquelle gespeichert ist und ordnungsgemäß funktioniert. Beim Speichern der Datenquelle nach Angabe des Namens und der IP wird eine grüne Data source is working Meldung angezeigt, dass die Datenquelle erreichbar und erkannt wurde.
    Wenn das Dashboard mit erstellt wurde sample_grafana_dashboard.json, stellen Sie sicher, dass der Name der Prometheus-Datenquelle mit dem Wort prometheus in Kleinbuchstaben beginnt.
    Sehen Sie auf der Seite Ziele von Prometheus nach, ob der erforderliche Zielexporteur im DOWN Status ist.
DOWN: Kontext-Frist überschritten Wenn die Meldung gegen eines der Exportziele von Prometheus angezeigt wird, kann Prometheus entweder keine Verbindung zum Exporteur herstellen oder nicht alle Metriken innerhalb des angegebenen Abrufs abrufen scrape_timeout. Wenn Sie den Prometheus Operator verwenden, scrape_timeout wird automatisch angepasst und der Fehler bedeutet, dass der Exporteur selbst nicht erreichbar ist.
    Wenn ein eigenständiger Prometheus-Container oder -Pod verwendet wird, erhöhen Sie die scrape_timeout Werte scrape_interval und in der /etc/prometheus/prometheus.cfg Datei, um das Zeitintervall für die Erfassung der Metriken zu verlängern.

Problembehandlung — OpenShift-Funktions-Knoten-Überwachung

Problem: Während der Verwendung von Openshift-OVN fügt CNI feature-node-watch keine richtigen Routen hinzu.

Beschreibung: Citrix Ingress Controller sucht nach Node-Anmerkungen, um die notwendigen Details zum Hinzufügen der statischen Routen abzurufen.

Problemumgehung: Führen Sie die folgenden Schritte als Problemumgehung aus.

  1. Stellen Sie sicher, dass die folgende RBAC-Berechtigung für den Citrix Ingress Controller zusammen mit route.openshift.io der Ausführung in der OpenShift-Umgebung mit OVN CNI bereitgestellt wird.

    - apiGroups: ["config.openshift.io"]
      resources: ["networks"]
      verbs: ["get", "list"]
    
  2. Citrix Ingress Controller sucht nach den folgenden zwei Anmerkungen, die von OVN hinzugefügt wurden. Stellen Sie sicher, dass sie auf den Clusterknoten vorhanden sind.

    "k8s.ovn.org/node-subnets": {\"default\":\"10.128.0.0/23\"}",
    "k8s.ovn.org/node-primary-ifaddr": "{\"ipv4\":\"x.x.x.x/24\"}"
    
  3. Wenn die Anmerkung nicht existiert, funktioniert es feature-node-watch möglicherweise nicht für OVN CNI. In diesem Fall müssen Sie die statischen Routen auf Citrix ADC VPX manuell konfigurieren.

Problem: Bei der Verwendung von Openshift-SDN CNI fügt Feature-Knoten-Watch keine richtigen Routen hinzu.

Beschreibung: Der Citrix Ingress Controller sucht nach der Host-Subnetz-CRD, um die erforderlichen Details zum Hinzufügen der statischen Routen abzurufen.

Problemumgehung: Führen Sie die folgenden Schritte als Problemumgehung aus.

  1. Stellen Sie sicher, dass die folgende RBAC-Berechtigung für den Citrix Ingress Controller zusammen mit route.openshift.io der Ausführung in der OpenShift-Umgebung mit SDN CNI bereitgestellt wird.

    - apiGroups: ["network.openshift.io"]
      resources: ["hostsubnets"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["config.openshift.io"]
      resources: ["networks"]
      verbs: ["get", "list"]
    
  2. Der Citrix Ingress Controller sucht nach der folgenden CRD und Spezifikation.

        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. Wenn das CRD nicht mit der erwarteten Spezifikation existiert, funktioniert es feature-node-watch möglicherweise nicht für Openshfit-SDN CNI. In diesem Fall müssen Sie die statischen Routen auf Citrix ADC VPX manuell konfigurieren.

Problembehandlung