Por que o status da rede mostra um erro NHC007 ?

Nuvem Privada Virtual

Resolva o erro de verificação de integridade da rede “ NHC007 ”.

Quando você verifica o status da integridade do seu cluster executando o ibmcloud oc cluster health issues --cluster <CLUSTER_ID>, você vê um erro semelhante ao exemplo a seguir.

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

Se você verificar os detalhes do problema, verá quais resolvedores de DNS não podem ser acessados de qual nó de trabalho.

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

Esse aviso indica que o tráfego de DNS de determinados nós de trabalho está sendo bloqueado, possivelmente devido a políticas restritivas ou configurações do site IaaS-level.

Verifique seus recursos Calico HostEndpoint (HEP) e GlobalNetworkPolicy (GNP), bem como suas ACLs, grupos de segurança e quaisquer outros dispositivos de rede que possam bloquear o tráfego de DNS de saída.

  1. Analise os recursos do Calico HostEndpoint (HEP) para listar os HEPs do Calico e verificar se alguma configuração de HEP pode aplicar restrições incorretamente às interfaces do nó de trabalho.

    kubectl get hostendpoints.crd.projectcalico.org
    

    Exemplo de comando para descrever um HEP específico.

    kubectl describe hostendpoints.crd.projectcalico.org <hep-name>
    
  2. Acesse Calico GlobalNetworkPolicies (GNP) para listar os GNPs.

    kubectl get globalnetworkpolicies.crd.projectcalico.org
    
  3. Inspecione políticas específicas para regras restritivas de DNS. Concentre-se nas regras do site egress que afetam a porta 53 ou se aplicam a rótulos/seletores de nós.

    kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml
    
  4. Teste o acesso ao DNS a partir de um pod de depuração; execute um pod de depuração temporário, utilizando o nome dos nós de trabalho afetados em nodeName. Se o DNS falhar aqui, pode ser devido a bloqueios no nível da infraestrutura.

    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. Execute os seguintes comandos dentro do pod de depuração.

    nslookup ibm.com
    
    dig ibm.com
    
  6. Verifique as ACLs (Listas de Controle de Acesso).

    • No console, navegue até VPC > Listas de controle de acesso e garanta que as regras de saída permitam tanto a porta 53 do UDP quanto a porta 53 do TCP.

    • Na CLI, inspecione as ACLs executando os seguintes comandos.

        ibmcloud is network-acls
        ```
        ```sh {: pre}
        ibmcloud is network-acl <acl-id>
        ```
    
  7. Inspecione as regras do grupo de segurança para encontrar os grupos de segurança associados aos nós de trabalho e, em seguida, execute para verificar as configurações do grupo de segurança. Verifique se não há regras de saída bloqueando o tráfego de DNS ( UDP / TCP porta 53).

    ibmcloud is security-group-rules <security-group-id>
    
  8. Analise sua infraestrutura (dispositivos de rede, ACLs, etc.) e permita o tráfego de saída UDP e TCP porta 53

  9. Se o DNS ainda estiver inacessível após a revisão desses itens, entre em contato com o suporte. Abrir um caso de suporte. Nos detalhes do caso, certifique-se de incluir todos os arquivos de registro, mensagens de erro ou saídas de comando relevantes.