為什麼網路狀態顯示 NHC007 錯誤?
虛擬私有雲
排除網路狀態檢查錯誤 NHC007 的問題。
當您執行 ibmcloud oc cluster health issues --cluster <CLUSTER_ID> 檢查群集的健康狀態時,您會看到類似以下範例的錯誤。
ID Component Severity Description
NHC007 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 NHC007
此警告表示來自某些工作站節點的 DNS 流量被封鎖,可能是由於限制性政策或 IaaS-level 設定所致。
檢查您的 Calico HostEndpoint (HEP) 和 GlobalNetworkPolicy (GNP) 資源,以及您的 ACL、安全群組和任何其他可能封鎖 DNS 向外流量的網路裝置。
-
檢閱 Calico HostEndpoint (HEP) 資源,以列出 Calico HEP,並檢查是否有任何 HEP 設定可能會錯誤地將限制套用至您的工作節點介面。
kubectl get hostendpoints.crd.projectcalico.org用於描述特定 HEP 的範例指令。
kubectl describe hostendpoints.crd.projectcalico.org <hep-name> -
檢閱 Calico GlobalNetworkPolicies (GNP),列出 GNP。
kubectl get globalnetworkpolicies.crd.projectcalico.org -
檢查限制性 DNS 規則的特定政策。 專注於影響連接埠 53 或適用於節點標籤/選擇器的
egress規則。kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml -
從一個除錯 Pod 測試 DNS 存取,並執行一個臨時除錯 Pod,在其中將
nodeName的值設定為受影響的工作節點名稱。 如果 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 -
在 debug pod 內執行下列指令。
nslookup ibm.comdig ibm.com -
檢查 ACL(存取控制清單)。
-
在主控台中,導覽到 VPC > 存取控制清單,並確保出站規則允許 UDP 連接埠 53 和 TCP 連接埠 53。
-
在 CLI 中,執行下列指令檢查 ACL。
ibmcloud is network-acls ``` ```sh {: pre} ibmcloud is network-acl <acl-id> ``` -
-
檢查安全群組規則,找出與您的 Worker 節點相關的安全群組,然後執行以檢查安全群組設定。 確保沒有出站規則阻擋 DNS 流量 ( UDP / TCP 埠 53)。
ibmcloud is security-group-rules <security-group-id> -
檢閱您的基礎架構 (網路裝置、ACL 等),並允許 UDP 和 TCP 埠 53 向外流量
-
如果檢視這些項目後 DNS 仍然無法連線,請聯絡支援人員。 開啟 支援個案。 在案例詳細資訊中,請務必包含任何相關的記錄檔、錯誤訊息或指令輸出。