Perché lo stato della rete mostra un errore NHC003 ?

Virtual Private Cloud Infrastruttura classica

Risoluzione dei problemi relativi all'errore di controllo dello stato della rete NHC003.

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
NHC003   Network     Warning    Some worker nodes in the cluster can not reach container image registries to pull images.

Se si controllano i dettagli del problema, si vedrà quale registro non è accessibile da quale nodo worker.

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

Questo avviso significa che alcuni nodi worker non possono accedere a registri di container esterni, come Docker Hub, Quay o IBM Cloud Container Registry, il che impedisce loro di estrarre le immagini richieste dai carichi di lavoro.

Assicurarsi che i nodi worker abbiano accesso a Internet e possano raggiungere i registri dei container esterni. Controllare anche i criteri di rete, i gruppi di sicurezza e le impostazioni del firewall.

  1. Da un pod in esecuzione sul nodo interessato, verificare se il nodo può accedere al registro. Avvia un pod di debug.

    kubectl run  -i --tty debug \
     --image=us.icr.io/armada-master/network-alpine:latest \
     --restart=Never \
     --overrides='
    {
      "apiVersion": "v1",
      "spec": {
        "nodeName": "<node-name>"
      }
    }' -- sh
    

    Quindi, all'interno del pod, provare ad accedere al registro del contenitore.

    wget <registry_address>
    

    Oppure utilizzare curl se disponibile:

    curl -I <registry_address>
    
  2. Verificare se i nodi worker hanno accesso a Internet in uscita eseguendo un traceroute o un ping dal pod di debug.

    traceroute <registry_address>
    
    ping <registry_address>
    
  3. Verificare se sono in vigore politiche di rete restrittive e politiche di rete globali.

    kubectl get networkpolicies --all-namespaces
    
     kubectl get globalnetworkpolicies.crd.projectcalico.org
    

    Cercate i criteri che bloccano il traffico in uscita dai nodi worker verso Internet o verso domini di registro specifici.

  4. Verificare i gruppi di sicurezza del cluster e assicurarsi che il traffico in uscita sia consentito. Per ogni nodo worker, controllare il gruppo di sicurezza. Assicurarsi che non vi siano regole che bloccano HTTPS ( TCP porta 443) o DNS ( UDP porta 53).

  5. Esaminare l'infrastruttura (dispositivi di rete, gruppi di sicurezza, ACL e così via) e abilitare l'accesso in uscita, se necessario.

  6. Se si utilizzano registri di contenitori privati, verificare che la risoluzione DNS e l'autenticazione funzionino.

  7. Dopo aver applicato le correzioni, attendere qualche minuto e ricontrollare lo stato del cluster.

  8. Se il problema persiste, contatta l'assistenza per ricevere ulteriore supporto. Apri un caso di supporto. Nei dettagli del caso, assicurarsi di includere qualsiasi file di registro, messaggio di errore o output di comando pertinente.