IBM Cloud Kubernetes Service 中的應用程式疑難排解

虛擬專用雲端 經典基礎設施 Satellite

下列步驟可協助您對叢集內的應用程式問題進行疑難排解,並找出應用程式錯誤或問題的主要原因。

檢閱 IBM Cloud 的狀態

  1. 若要查看 IBM Cloud 是否可用,請檢查 IBM Cloud 狀態頁面
  2. 篩選器的 Kubernetes Service 元件。
  3. 檢閱 限制和已知問題文件
  4. 如需 IBM Cloud所使用開放程式碼專案中的問題,請參閱 IBM 開放程式碼及協力廠商原則。 例如,您可以檢查 Kubernetes 未解決問題

取得叢集狀態及狀態,並檢閱一般問題

  1. 列出叢集,並尋找叢集的 State

    ibmcloud ks cluster ls
    
  2. 檢閱叢集的 State。 如果您的群集處於 Critical(關鍵 )、Delete failed(刪除失敗 )或 Warning(警告 )狀態,或長時間停留在 Pending(等待 )狀態。 如需相關資訊,請參閱 叢集狀態

  3. 檢閱每一個工作者節點的狀態。 如需詳細資訊,請參閱 Worker 節點狀態

    ibmcloud ks worker ls -c CLUSTER
    
  4. 查看以下資訊以偵錯或解決工作節點問題。

收集詳細資料並記載問題

記載問題的詳細資料時,請盡可能明確。 例如,Our app occasionally gets 502 Gateway errors when trying to retrieve transaction logs 沒有幫助,因為它不是特定的。 確保在記錄問題之前,儘可能縮小問題的範圍。 記載問題時,請嘗試包含下列項目。

環境架構
確保您已記錄環境架構,以便瞭解所涉及的元件。 如需相關資訊,請參閱 記載環境架構
錯誤訊息及元件詳細資料。
提供完整錯誤訊息,並包括關於哪個元件產生錯誤的詳細資料。 例如,「clusterID ABCDEF 中的所有三個應用程式 Pod 偶爾會在 HTTPS 從全局負載平衡器呼叫 GET /transaction-logs 時失敗,並出現錯誤 HTTP 502 Gateway Error: Web server received an invalid response while acting as a gateway or proxy server...」。
連線的來源 IP、目的地 IP、埠及通訊協定。
例如,「Kubernetes 叢集裡具有 clusterID ABCDEF 的所有三個應用程式 Pod。 在嘗試 GET /transaction-logs 到 GLB 時,HTTPS 呼叫偶爾會失敗,出現錯誤 The source pod IP is 172.22.5.10 and destination IP is 150.40.40.35 port 433. 協定為 HTTPS。 其他 Pod 也會使用此 IP 位址,如其他兩個 GLB IP 150.40.40.55150.40.40.75"。
問題的開始日期、時間及頻率。
檢視下列訊息範例。
  • 此問題會影響大約 2% 的所有連線嘗試。
  • 此問題只在 19:00 和 21:00 UTC 之間發生,在這些時間內,大約會影響所有連線嘗試的 5%。
  • 從 Pod ID XYZ 連接時發生此問題。 問題開始於 10/25/2023 大約 05:30 UTC。
對您已採取的動作進行疑難排解。
記載到目前為止已嘗試的項目,以及這些嘗試的結果,以協助進一步縮小問題的範圍。

執行測試以在每一個元件中建立規則或排除每一個元件

  1. 請嘗試在完整應用程式流程之外重建問題。 這可能涉及下列各項。
    • 在個別系統上或在叢集裡的測試 Pod 中使用 curl 來連接至後端端點或服務,以排除用戶端可能是問題的來源。
    • 嘗試從用戶端或從叢集中的測試 Pod 連接至已知端點 (例如 www.ibm.com )。 如果已知端點持續運作,但實際應用程式端點無法運作,則有助於縮小問題的範圍。
  2. 請嘗試使用測試叢集在測試環境中重建問題。
    • 如果您 無法 在測試叢集中重建問題,則可以將焦點放在測試叢集與實際叢集之間的差異,作為問題的可能來源。
    • 如果您 可以 在測試叢集中重建它,則它可能不是叢集本身的問題。 此外,您也可以在環境中進行測試,以進一步縮小問題範圍,而不會影響正式作業環境。

收集更多資料

一旦您知道應用程式流程、您看到的特定錯誤,以及該錯誤的來源,您可以從涉及的元件收集更詳細的資料。 這可能包括下列日誌。

  • 受影響元件上的 Pod 及處理程序日誌。
  • 叢集節點日誌,例如 syslog/var/log/messages。 對於 IBM Cloud Kubernetes Service,您可以直接從節點取得 syslog 及其他日誌。
  • 封包追蹤資訊。 執行 tcpdump 是獲取封包追蹤資訊的常用方法。

在 Slack 中聯絡或檢閱使用者討論區,以瞭解類似問題

  1. 在 Kubernetes Service Slack 中張貼。
    • 如果您是外部使用者,請在 #general 頻道張貼。
  2. 查看 Kubernetes Service help 或 Stack Overflow 等論壇,看看其他使用者是否遇到相同的問題。 使用討論區提問時,請標記您的問題,以便 IBM Cloud 開發團隊能看到它。
    • 如果您有任何關於使用 IBM Cloud Kubernetes Service 開發或部署群集或應用程式的技術問題,請在 Stack Overflow 上發佈您的問題,並使用 ibm-cloudcontainers 標記您的問題。
    • 如需使用討論區的詳細資料,請參閱取得協助

下一步

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