除錯 Portworx 失敗

檢閱選項以除錯 Portworx,並找出任何故障的根本原因。

檢查掛載您的儲存實例的 Pod 是否已成功部署

請遵循步驟來檢閱與 Pod 部署相關的任何錯誤訊息。

  1. 列出叢集裡的 Pod。 如果 Pod 顯示的狀態為 Running,則 Pod 已順利部署。

    kubectl get pods
    
  2. 請查看您的 Pod 相關詳細資訊,並檢視 CLI 輸出中「事件」區段所顯示的任何錯誤訊息。

    kubectl describe pod <pod_name>
    
  3. 擷取 Pod 的日誌,並檢閱任何錯誤訊息。

    kubectl logs <pod_name>
    
  4. 請檢閱 Portworx 疑難排解說明文件,以取得解決一般錯誤的步驟。

重新啟動應用程式 Pod

透過重新啟動並重新部署 Pod,可以解決部分問題。 遵循步驟以重新部署特定 Pod。

  1. 如果您的 Pod 是部署的一部分,請刪除 Pod 並讓部署重建它。 如果 Pod 不是部署的一部分,請刪除 Pod 並重新套用 Pod 配置檔。

    1. 刪除 Pod。
        kubectl delete pod <pod_name>
        ```
        輸出範例
        ```sh {: screen}
        pod "nginx" deleted
        ```
    2. 重新套用配置檔以重新部署 Pod。
    ```sh {: pre}
        kubectl apply -f <app.yaml>
        ```
        輸出範例
        ```sh {: pre}
        pod/nginx created
        ```
    
  2. 如果重新啟動 Pod 無法解決問題,請 重新載入工作者節點。

  3. 驗證是否使用的是最新的 IBM Cloud 和 IBM Cloud Kubernetes Service 外掛程式版本。

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    
    ibmcloud plugin update
    

確認 Portworx 儲存驅動程式與外掛程式 Pod 的狀態顯示為「正在執行」

遵循步驟來檢查儲存體驅動程式及外掛程式 Pod 的狀態,並檢閱任何錯誤訊息。

  1. 列出 kube-system 名稱空間中的 Pod。
    kubectl get pods -n kube-system | grep `portworx\|stork`
    
    輸出範例:
    portworx-594rw                          1/1       Running     0          20h
    portworx-rn6wk                          1/1       Running     0          20h
    portworx-rx9vf                          1/1       Running     0          20h
    stork-6b99cf5579-5q6x4                  1/1       Running     0          20h
    stork-6b99cf5579-slqlr                  1/1       Running     0          20h
    stork-6b99cf5579-vz9j4                  1/1       Running     0          20h
    stork-scheduler-7dd8799cc-bl75b         1/1       Running     0          20h
    stork-scheduler-7dd8799cc-j4rc9         1/1       Running     0          20h
    stork-scheduler-7dd8799cc-knjwt         1/1       Running     0          20h
    
  2. 如果儲存體驅動程式及外掛程式 Pod 未顯示 執行中 狀態,請取得 Pod 的更多詳細資料,以尋找主要原因。 視您的 Pod 狀態而定,您可能無法執行以下所有指令。
    1. 取得在驅動程式 Pod 中執行的容器名稱。
        kubectl describe pod <pod_name> -n kube-system
        ```
    2. 將日誌從驅動程式 Pod 匯出至本端機器上的 `logs.txt` 檔案。
    ```sh {: pre}
        kubectl logs <pod_name> -n kube-system > logs.txt
        ```
    3. 請檢閱日誌檔。
    ```sh {: pre}
        cat logs.txt
        ```
    
  3. 請檢查最新日誌,以取得任何錯誤訊息。 請檢閱 Portworx 疑難排解說明文件,以取得解決一般錯誤的步驟。

檢查並更新 kubectl CLI 版本

如果使用的 kubectl CLI 版本不能至少符合叢集的 major.minor 版本,則可能會遇到非預期的結果。 例如,Kubernetes 不支援與伺服器版本相差 2 個或更多版本(n ± 2)的 kubectl 客戶端版本。

  1. 驗證在本端機器上執行的 kubectl CLI 版本是否與叢集裡安裝的 Kubernetes 版本相符合。 顯示在叢集裡和本端機器上安裝的 kubectl CLI 版本。

    kubectl version
    

    輸出範例:

    Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.36", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"darwin/amd64"}
    Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.36+IKS", GitCommit:"e15454c2216a73b59e9a059fd2def4e6712a7cf0", GitTreeState:"clean", BuildDate:"2019-04-01T10:08:07Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
    

    如果在 GitVersion 中看到用戶端和伺服器的版本相同,表示 CLI 版本相符。 可以忽略伺服器版本中的 +IKS 部分。

  2. 如果您的本地電腦與叢集上的 kubectl CLI 版本不一致,請更新您的叢集,或在 本地電腦上安裝不同版本的 CLI。

更新 Helm 圖表

  1. 尋找 最新 Helm Chart 版本。

  2. 列出您叢集中已安裝的 Helm 圖表,並將您安裝的版本與最新版本進行比較。

    helm list --all-namespaces
    
  3. 如果已有較新版本,請安裝新版本。 如需指示,請參閱更新叢集裡的 Portworx。