Perché lo stato della rete mostra un errore NHC007 ?
Cloud privato virtuale
Risoluzione dei problemi relativi all'errore di controllo dello stato della rete NHC007.
Quando si controlla lo stato di salute del cluster eseguendo ibmcloud oc cluster health issues --cluster <CLUSTER_ID>, si vede un errore simile al seguente esempio.
ID Component Severity Description
NHC007 Network Warning One or more DNS resolvers are not reachable from certain worker nodes.
Se si controllano i dettagli del problema, si vedrà quali risolutori DNS non sono accessibili da quale nodo worker.
ibmcloud ks cluster health issue get --cluster <CLUSTER_ID> --issue NHC007
Questo avviso indica che il traffico DNS da alcuni nodi worker viene bloccato, forse a causa di politiche restrittive o di configurazioni di IaaS-level.
Controllate le risorse Calico HostEndpoint (HEP) e GlobalNetworkPolicy (GNP), nonché le ACL, i gruppi di sicurezza e qualsiasi altro dispositivo di rete che possa bloccare il traffico DNS in uscita.
-
Esaminare le risorse di Calico HostEndpoint (HEP) per elencare gli HEP di Calico e verificare se le configurazioni HEP possono applicare in modo errato le restrizioni alle interfacce del nodo worker.
kubectl get hostendpoints.crd.projectcalico.orgComando di esempio per descrivere un HEP specifico.
kubectl describe hostendpoints.crd.projectcalico.org <hep-name> -
Rivedere il sito Calico GlobalNetworkPolicies (PNL) per elencare i PNL.
kubectl get globalnetworkpolicies.crd.projectcalico.org -
Ispezionare i criteri specifici per le regole DNS restrittive. Concentrarsi sulle regole di
egressche riguardano la porta 53 o si applicano alle etichette/selezionatori dei nodi.kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml -
Verifica l'accessibilità del DNS da un pod di debug; avvia un pod di debug temporaneo, utilizzando il nome dei nodi worker interessati per l'
nodeName. Se il DNS fallisce in questo caso, potrebbe essere dovuto a blocchi a livello di infrastruttura.kubectl run -i --tty debug \ --image=us.icr.io/armada-master/network-alpine:latest \ --restart=Never \ --overrides=' { "apiVersion": "v1", "spec": { "nodeName": "<node-name>" } }' -- sh -
Eseguire i seguenti comandi all'interno del pod di debug.
nslookup ibm.comdig ibm.com -
Verificare gli ACL (elenchi di controllo degli accessi).
-
Nella console, navigare in VPC > Elenchi di controllo degli accessi e assicurarsi che le regole in uscita permettano sia la porta 53 di UDP che la porta 53 di TCP.
-
Nella CLI ispezionare le ACL eseguendo i seguenti comandi.
ibmcloud is network-acls ``` ```sh {: pre} ibmcloud is network-acl <acl-id> ``` -
-
Ispezionare le regole dei gruppi di sicurezza per trovare i gruppi di sicurezza associati ai nodi worker e poi eseguire per controllare le impostazioni dei gruppi di sicurezza. Assicurarsi che non vi siano regole in uscita che bloccano il traffico DNS ( UDP / TCP porta 53).
ibmcloud is security-group-rules <security-group-id> -
Rivedere l'infrastruttura (dispositivi di rete, ACL e così via) e consentire il traffico in uscita dalla porta 53 di UDP e TCP
-
Se il DNS è ancora irraggiungibile dopo aver esaminato questi elementi, contattare l'assistenza. Apri un caso di supporto. Nei dettagli del caso, assicurarsi di includere qualsiasi file di registro, messaggio di errore o output di comando pertinente.