为什么网络状态显示 NHC006 错误?

经典基础设施

排查网络健康检查错误 NHC006。

当您运行 ibmcloud oc cluster health issues --cluster <CLUSTER_ID> 检查群集的健康状况时,您会看到与下面示例类似的错误。

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

如果检查问题的详细信息,就会看到哪个 DNS 解析器无法从哪个工作节点访问。

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

此警告表示某些工作节点无法连接到一个或多个 DNS 解析器。 这会导致 DNS 故障,影响工作负载通信。

  1. 检查 Calico GlobalNetworkPolicies (GNP),列出所有 GNP。

    kubectl get globalnetworkpolicies.crd.projectcalico.org
    

    运行以下命令以查看特定策略。

    kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml
    
  2. 查找任何阻止 DNS 流量的 egress 规则( UDP / TCP 端口 53)。 还要检查 selector 字段是否可能不恰当地包含工作节点。

  3. 使用调试 pod 验证工作节点的 DNS 可及性

    kubectl run  -i --tty debug \
      --image=us.icr.io/armada-master/network-alpine:latest \
      --restart=Never \
      --overrides='
    {
      "apiVersion": "v1",
      "spec": {
        "nodeName": "<node-name>"
      }
    }' -- sh
    
  4. 在调试 pod 中运行以下命令。 如果这些操作失败,DNS 可能会被策略或 IaaS-level 配置阻止。

    nslookup ibm.com
    
    dig ibm.com
    
  5. 检查您的基础设施(网络设备、ACL 等),并允许 UDP 和 TCP 端口 53 传出流量。

  6. 如果问题仍然存在,请联系支持部门寻求进一步帮助。 打开 支持案例。 在案例详细信息中,请务必包含任何相关日志文件、错误信息或命令输出。