標準: 為何無法存取叢集裡的資源?

經典基礎架構

當叢集中的工作節點無法在私有網路中通訊時,您可能會看到各種不同的症狀。

  • 當您執行 kubectl exec、attach、logs、proxy 或 port-forward 時的錯誤訊息範例:
    Error from server: error dialing backend: dial tcp XXX.XXX.XXX:10250: getsockopt: connection timed out
    
  • kubectl proxy 成功,但 Kubernetes 儀表板無法使用時的錯誤訊息範例:
    timeout on 172.xxx.xxx.xxx
    
  • kubectl proxy 失敗或服務連線失敗時的錯誤訊息範例:
    Connection refused
    
    Connection timed out
    
    Unable to connect to the server: net/http: TLS handshake timeout
    

若要存取叢集裡的資源,您的工作者節點必須能夠在專用網路上進行通訊。 您可能已在 IBM Cloud 基礎架構帳戶中設定了 Vyatta 或其他防火牆,或者自訂了現有防火牆設定。

IBM Cloud Kubernetes Service 需要開啟特定 IP 位址及埠,以容許從工作者節點到 Kubernetes 主節點的通訊,反之亦然。 如果您的工作者節點分散在多個區域,您必須藉由啟用 VLAN Spanning 來允許專用網路通訊。 如果您的工作者節點停留在重新載入的迴圈中,則也可能無法在工作者節點之間進行通訊。

檢閱工作者節點狀態。

  1. 列出叢集裡的工作者節點,並驗證您的工作者節點未停留在 Reloading 狀態中。

    ibmcloud ks worker ls --cluster <cluster_name_or_id>
    
  2. 如果您具有多區域叢集,且未針對 VRF 啟用您的帳戶,請驗證您的帳戶是否 已啟用 VLAN Spanning。

  3. 如果您有 Vyatta 或自訂防火牆設定,請確定已開啟必要的埠,以允許叢集存取基礎架構資源和服務。

  4. 如果仍然發生此問題,請聯絡支援人員。 開啟 支援個案。 在案例詳細資訊中,請務必包含任何相關的記錄檔、錯誤訊息或指令輸出。