IBM Cloud Docs
为什么网络状态显示 NHC003 错误?

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

虚拟私有云 传统基础设施

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

ID       Component   Severity   Description
NHC003   Network     Warning    Some worker nodes in the cluster can not reach container image registries to pull images.

如果查看问题的详细信息,就会发现哪个工作节点无法访问哪个注册表。

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

该警告意味着某些工作节点无法访问外部容器注册表,如 Docker Hub、Quay 或 IBM Cloud Container Registry,从而无法提取工作负载所需的映像。

确保工作节点能访问互联网,并能到达外部容器注册中心。 还要检查网络策略、安全组和防火墙设置。

  1. 通过在受影响节点上运行的 pod,检查该节点是否可以访问注册表。 启动调试 pod。

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

    然后在 pod 内尝试访问容器注册表。

    wget <registry_address>
    

    如果有的话,也可以使用 curl

    curl -I <registry_address>
    
  2. 从调试 pod 运行 traceroute 或 ping,检查工作节点是否有对外互联网访问。

    traceroute <registry_address>
    
    ping <registry_address>
    
  3. 检查是否有任何限制性网络策略和全局网络策略。

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

    查找阻止从工作节点到互联网或特定注册域的出口流量的策略。

  4. 验证群集的安全组,确保允许出站流量。 检查每个工作节点的安全组。 确保没有规则阻止 HTTPS (TCP 端口 443)或 DNS(UDP 端口 53)。

  5. 检查您的基础架构(网络设备、安全组、ACL 等),必要时启用出站访问。

  6. 如果使用私有容器注册表,请验证 DNS 解析和身份验证是否正常。

  7. 应用修复程序后,等待几分钟并重新检查群集的健康状况。

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