IBM Cloud Docs
Por que o status da rede mostra um erro NHC007 ?

Por que o status da rede mostra um erro NHC007 ?

Virtual Private Cloud

Quando você verifica o status da integridade do seu cluster executando o ibmcloud ks 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 em um pod de depuração, execute um pod de depuração temporário, no qual use o nome dos nós de trabalho afetados para 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 verifique se as regras de saída permitem as portas UDP 53 e TCP 53.

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

      ibmcloud is network-acls
      
      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 DNS (porta UDP/TCP 53).

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

  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.