對 TKGS 叢集網路錯誤進行疑難排解時,請參閱本節中的提示。
檢查節點網路
每個 TKG 叢集應具有以下網路資源。
網路物件 | 網路資源 | 說明 | 疑難排解 | 命令 |
---|---|---|---|---|
VirtualNetwork | 第 1 層路由器和連結的區段 | 叢集的節點網路 | 確保已指派 SNAT IP | kubectl get virtualnetwork -n NS-NAME |
VirtualNetworkInterface | 區段上的邏輯連接埠 | 叢集節點的節點網路介面 | 確保每個 VirtualMachine 都具有 IP 位址 | kubectl get virtualmachines -n NS-NAME NODE-NAME |
檢查控制平面的負載平衡器
TKG 叢集控制平面的負載平衡器提供對 Kubernetes API 伺服器的存取。此負載平衡器由系統在建立叢集期間自動佈建。它應具有以下資源。
檢查控制平面負載平衡器的狀態,可以協助您瞭解發生錯誤時資源是否已準備就緒。通常,您可以使用該命令在主管叢集中找出該負載平衡器:
kubectl get services -A | grep control-plane-service
網路物件 | 網路資源 | 說明 | 疑難排解 | 命令 |
---|---|---|---|---|
VirtualMachineService | 不適用 | VirtualMachineService 已建立並已轉譯為 k8s 服務。 | 確保其狀態已更新並包含負載平衡器虛擬 IP (VIP)。 | kubectl get virtualmachineservices -n NS-NAME SERVICE-NAME |
服務 | 具有 VirtualServer 執行個體的負載平衡器伺服器和相關聯的伺服器集區 (成員集區) | 已建立負載平衡器類型的 Kubernetes 服務,以存取 TKG 叢集 API 伺服器。 | 確保已指派外部 IP。確保可以透過 LB 服務的外部 IP 存取 TKG 叢集 API。 |
主管命名空間:
kubectl get services -A | grep control-plane-service
叢集命名空間:
kubectl get services -n NS-NAME
任一命名空間
curl -k https://EXTERNAL-IP:PORT/healthz |
端點 | 端點成員 (TKG 叢集控制平面節點) 應位於成員集區中。 | 將建立端點以包含所有 TKG 叢集控制平面節點。 | kubectl get endpoints -n NS-NAME SERVICE-NAME |
檢查 worker 節點上的負載平衡器服務
在建立 LoadBalancer 類型的 Kubernetes 服務時,使用者會為 TKG 叢集工作節點建立負載平衡器執行個體。
第一步是確保雲端提供者正在 TKG 叢集上執行。
kubectl get pods -n vmware-system-cloud-provider
驗證相關 Kubernetes 物件是否已建立且處於正確狀態。
網路物件 | 網路資源 | 說明 | 命令 |
---|---|---|---|
主管中的 VirtualMachineService | 不適用 | 在主管中建立 VirtualMachineService 並在主管中轉譯為 Kubernetes 服務 | kubectl get virtualmachineservice -n NS-NAME SVC-NAME |
主管中的負載平衡器服務 | TKG 叢集負載平衡器中的 VirtualServer 以及相關聯的成員集區。 | 在主管中建立負載平衡器服務以存取此 LB 類型的服務 | kubectl get services -n NS-NAME SVC-NAME |
主管中的端點 | 端點成員 (TKG 叢集工作節點) 應位於 NSX 中的成員集區中。 | 將建立端點以包含所有 TKG 叢集 worker 節點 | # kubectl get endpoints -n NS-NAME SVC-NAME |
TKG 叢集中的負載平衡器服務 | 不適用 | 使用者部署的 TKG 叢集中的負載平衡器服務應使用負載平衡器 IP 更新其狀態 | kubectl get services |
檢查 主管 NSX 網路堆疊
Kubernetes API 伺服器、NCP 網繭以及在任何控制器網繭中執行的管理程式容器是檢查基礎結構網路問題的主要起點。
以下錯誤訊息可能表明網路網狀架構層的任意點 (包括 ESXi 主機 NIC 連線到的實體連接埠群組) 存在路由或 MTU 問題:
{"log":"I0126 19:40:15.347154 1 log.go:172] http: TLS handshake error from 100.64.128.1:4102: EOF\n","stream":"stderr","time":"2021-01-26T19:40:15.347256146Z"}
若要進行疑難排解,請透過 SSH 連線到 ESXi 主機並執行以下命令:
esxcli network ip interface ipv4 get
此命令將列出主機的所有 vmkernel 介面。如果您只有一個 TEP 介面,它將始終為 vmk10。如果您還有第二個或第三個 TEP 介面,則為 vmk11 和 vmk12,依此類推。建立的 TEP 介面數量取決於在上行設定檔中指派給 TEP 的上行數量。如果選擇對各上行中的 TEP 進行「負載共用」,則會為每個上行建立一個 TEP 介面。
主 TEP 到 TEP ping 命令具有以下語法:
vmkping ++netstack=vxlan -s 1572 -d -I vmk10 10.218.60.66
其中
-s
是封包大小-d
表示不分段-I
表示從 vmk10 取得上行IP address
是要執行 Ping 動作的其他 ESXi 主機或 NSX Edge 上的 TEP 介面