IBM Cloud Docs
Warum zeigt der Netzwerkstatus einen NHC007 Fehler an?

Warum zeigt der Netzwerkstatus einen NHC007 Fehler an?

Virtual Private Cloud

Wenn Sie den Status Ihres Clusters überprüfen, indem Sie ibmcloud ks cluster health issues --cluster <CLUSTER_ID> ausführen, erhalten Sie eine Fehlermeldung wie im folgenden Beispiel.

ID       Component   Severity   Description
NHC007   Network     Warning    One or more DNS resolvers are not reachable from certain worker nodes.

Wenn Sie die Details des Problems überprüfen, sehen Sie, auf welche DNS-Auflöser von welchem Arbeitsknoten aus nicht zugegriffen werden kann.

ibmcloud ks cluster health issue get --cluster <CLUSTER_ID> --issue NHC007

Diese Warnung weist darauf hin, dass der DNS-Verkehr von bestimmten Worker Nodes blockiert wird, möglicherweise aufgrund restriktiver Richtlinien oder IaaS-level Konfigurationen.

Überprüfen Sie Ihre Calico HostEndpoint (HEP) und GlobalNetworkPolicy (GNP) Ressourcen sowie Ihre ACLs, Sicherheitsgruppen und alle anderen Netzwerk-Appliances, die ausgehenden DNS-Verkehr blockieren können.

  1. Überprüfen Sie die Calico HostEndpoint (HEP)-Ressourcen, um Calico HEPs aufzulisten und zu prüfen, ob HEP-Konfigurationen möglicherweise fälschlicherweise Einschränkungen auf Ihre Arbeitsknotenschnittstellen anwenden.

    kubectl get hostendpoints.crd.projectcalico.org
    

    Beispielbefehl zur Beschreibung eines bestimmten HEP.

    kubectl describe hostendpoints.crd.projectcalico.org <hep-name>
    
  2. Überprüfen Sie Calico GlobalNetworkPolicies (GNP), um GNPs aufzulisten.

    kubectl get globalnetworkpolicies.crd.projectcalico.org
    
  3. Überprüfen Sie spezifische Richtlinien auf restriktive DNS-Regeln. Konzentrieren Sie sich auf egress Regeln, die Port 53 betreffen oder sich auf Knotenbeschriftungen/Selektoren beziehen.

    kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml
    
  4. Testen Sie den DNS-Zugriff von einem Debug-Pod aus, führen Sie einen temporären Debug-Pod aus, wobei Sie den Namen des betroffenen Worker-Nodes für nodeName verwenden. Wenn DNS hier versagt, kann dies an Blockaden auf Infrastrukturebene liegen.

    kubectl run  -i --tty debug \
      --image=us.icr.io/armada-master/network-alpine:latest \
      --restart=Never \
      --overrides='
    {
      "apiVersion": "v1",
      "spec": {
        "nodeName": "<node-name>"
      }
    }' -- sh
    
  5. Führen Sie die folgenden Befehle innerhalb des Debug-Pods aus.

    nslookup ibm.com
    
    dig ibm.com
    
  6. Überprüfen Sie ACLs (Access Control Lists).

    • Navigieren Sie in der Konsole zu VPC > Zugriffskontrolllisten und stellen Sie sicher, dass ausgehende Regeln sowohl UDP-Port 53 als auch TCP-Port 53 zulassen.

    • Überprüfen Sie ACLs in der CLI, indem Sie die folgenden Befehle ausführen.

      ibmcloud is network-acls
      
      ibmcloud is network-acl <acl-id>
      
  7. Überprüfen Sie die Sicherheitsgruppenregeln, um die Sicherheitsgruppen zu finden, die mit Ihren Arbeitsknoten verknüpft sind, und führen Sie diese dann aus, um die Sicherheitsgruppeneinstellungen zu überprüfen. Stellen Sie sicher, dass es keine ausgehenden Regeln gibt, die den DNS-Verkehr (UDP/TCP-Port 53) blockieren.

    ibmcloud is security-group-rules <security-group-id>
    
  8. Überprüfen Sie Ihre Infrastruktur (Netzwerkgeräte, ACLs usw.) und lassen Sie ausgehenden Datenverkehr über UDP- und TCP-Port 53 zu

  9. Wenn DNS nach Überprüfung dieser Punkte immer noch nicht erreichbar ist, wenden Sie sich an den Support. Öffnen Sie einen Supportfall. Fügen Sie den Falldetails unbedingt alle relevanten Protokolldateien, Fehlermeldungen oder Befehlsausgaben bei.