為什麼網路狀態會顯示 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 解析器無法從哪些 Worker 節點存取。

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

此警告表示某些工作節點無法連線到一個或多個 DNS 解析器。 這可能會導致 DNS 故障並影響工作負載通訊。

  1. 透過列出所有 GNP,檢查 Calico GlobalNetworkPolicies (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. 使用 debug 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. 在 debug pod 內執行下列指令。 如果這些都失敗,DNS 可能會被政策或 IaaS-level 設定封鎖。

    nslookup ibm.com
    
    dig ibm.com
    
  5. 檢閱您的基礎架構 (網路裝置、ACL 等),並允許 UDP 和 TCP 埠 53 的出站流量。

  6. 如果問題持續,請聯絡支援人員尋求進一步協助。 開啟 支援個案。 在案例詳細資訊中,請務必包含任何相關的記錄檔、錯誤訊息或指令輸出。