節點集區之間的流量會遭到自訂網路安全性群組阻止
本文討論如何解決自定義網路安全組 (NSG) 封鎖Microsoft Azure Kubernetes Service (AKS) 叢集中節點集區之間的流量的情況。
徵兆
使用者節點集區 Pod 的網域名稱系統 (DNS) 解析失敗。
Background
在涉及多個節點集區的案例中,命名空間中的 kube-system
Pod 可以放在一個節點集區(系統節點集區),而應用程式 Pod 則放在不同的節點集區(使用者節點集區)。 在某些情況下,彼此通訊的Pod可以位於不同的節點集區中。
AKS 可讓客戶在不同的子網中擁有 節點集區。 此功能表示客戶也可以將不同的NSG與每個節點集區的子網產生關聯。
原因 1:節點集區的 NSG 會封鎖輸入流量
節點集區 NSG 上的輸入存取會封鎖流量。 例如,系統節點集區上的自定義NSG(裝載核心 DNS Pod)會封鎖使用者資料報通訊協定 (UDP) 埠 53 上的輸入流量,從使用者節點集區的子網。
解決方案 1:設定自訂 NSG 以允許節點集區之間的流量
請確定您的自定義NSG允許節點集區之間的必要流量,特別是在UDP埠53上。 AKS 不會更新與子網相關聯的自定義 NSG。
原因 2:節點集區 NSG 上的輸出存取會封鎖流量
另一個節點集區上的NSG會封鎖對Pod的輸出存取。 例如,用戶節點集區上的自定義NSG會封鎖UDP埠53到系統節點集區的輸出流量。
解決方案 2:設定自訂 NSG 以允許節點集區之間的流量
請參閱 解決方案 1:設定自訂 NSG 以允許節點集區之間的流量。
原因 3:TCP 埠 10250 遭到封鎖
另一個常見案例是傳輸控制通訊協定 (TCP) 埠 10250 在節點集區之間遭到封鎖。
在這裡情況下,使用者可能會收到類似下列文字的錯誤訊息:
$ kubectl logs nginx-57cdfd6dd9-xb7hk
Error from server: Get https://<node>:10250/containerLogs/default/nginx-57cdfd6dd9-xb7hk/nginx: net/http: TLS handshake timeout
如果 TCP 連接埠 10250 上的通訊遭到封鎖,則 Kubelet 的連線將會受到影響,而且不會擷取記錄。
解決方案3:檢查封鎖 TCP 連接埠 10250 的 NSG 規則
檢查 TCP 連接埠 10250 上是否有任何 NSG 規則封鎖節點對節點通訊。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。