为什么网络状态显示 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,从而无法提取工作负载所需的映像。
确保工作节点能访问互联网,并能到达外部容器注册中心。 还要检查网络策略、安全组和防火墙设置。
-
通过在受影响节点上运行的 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>
-
从调试 pod 运行
traceroute
或 ping,检查工作节点是否有对外互联网访问。traceroute <registry_address>
ping <registry_address>
-
检查是否有任何限制性网络策略和全局网络策略。
kubectl get networkpolicies --all-namespaces
kubectl get globalnetworkpolicies.crd.projectcalico.org
查找阻止从工作节点到互联网或特定注册域的出口流量的策略。
-
验证群集的安全组,确保允许出站流量。 检查每个工作节点的安全组。 确保没有规则阻止 HTTPS (TCP 端口 443)或 DNS(UDP 端口 53)。
-
检查您的基础架构(网络设备、安全组、ACL 等),必要时启用出站访问。
-
如果使用私有容器注册表,请验证 DNS 解析和身份验证是否正常。
-
应用修复程序后,等待几分钟并重新检查群集的健康状况。
-
如果问题仍然存在,请联系支持部门寻求进一步帮助。 打开 支持案例。 在案例详细信息中,请务必包含任何相关日志文件、错误信息或命令输出。