為什麼網路狀態會顯示 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.

如果檢查問題的詳細資訊,您會看到哪些登錄無法從哪些 Worker 節點存取。

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

此警告表示某些 Worker 節點無法存取外部容器註冊處,例如 Docker Hub、Quay 或 IBM Cloud Container Registry,這會使它們無法拉取工作負載所需的映像。

確保 Worker 節點能夠存取網際網路,並能夠到達外部容器註冊處。 同時檢查網路政策、安全群組和防火牆設定。

  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. 從 debug pod 執行 traceroute 或 ping,檢查 Worker 節點是否有向外的網際網路存取。

    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. 若問題仍未解決,請聯絡支援部門以獲得進一步協助。 開啟 支援個案。 在案例詳細資訊中,請務必包含任何相關的記錄檔、錯誤訊息或指令輸出。