除錯持續性儲存空間故障

檢閱可用於除錯持續性儲存空間的選項,並尋找失敗的主要原因。

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

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

    oc get pods
    
  2. 取得 Pod 的詳細資料,並檢查 CLI 輸出的 Events 區段中是否顯示有錯誤。

    oc describe pod <pod_name>
    
  3. 擷取應用程式的日誌,並檢查是否顯示任何錯誤訊息。

    oc logs <pod_name>
    

重新啟動應用程式 Pod

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

    oc delete pod <pod_name>
    
    oc apply -f <app.yaml>
    
  2. 如果重新啟動 Pod 無法解決問題,請 重新載入工作者節點

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

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    

確認儲存驅動程式和外掛程式 Pod 的狀態顯示為「執行中

  1. 列出 kube-system 項目中的 Pod。
    oc get pods -n kube-system
    
  2. 如果儲存體驅動程式及外掛程式 Pod 未顯示 執行中 狀態,請取得 Pod 的更多詳細資料,以尋找主要原因。 視您的 Pod 狀態而定,您可能無法執行以下所有指令。
    1. 取得在驅動程式 Pod 中執行的容器名稱。
        kubectl get pod <pod_name> -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n'
        ```
        具有三個儲存器之 Block Storage for VPC 的範例輸出:
        ```sh {: screen}
        csi-provisioner
        csi-attacher
        iks-vpc-block-driver
        ```
        Block Storage for Classic 的輸出範例:
        ```sh {: pre}
        ibmcloud-block-storage-driver-container
        ```
    2. 將日誌從驅動程式 Pod 匯出至本端機器上的 `logs.txt` 檔案。 包括驅動程式儲存器名稱。
    ```sh {: pre}
        oc logs <pod_name> -n kube-system -c <container_name> > logs.txt
        ```
    3. 請檢閱日誌檔。
    ```sh {: pre}
        cat logs.txt
        ```
    
  3. 分析 ** 指令的 CLI 輸出中的 **Eventsoc describe pod 區段以及最新日誌,以尋找錯誤的主要原因。

正在檢查您的 PVC 是否已成功配置。

  1. 檢查 PVC 的狀態。 如果 PVC 顯示的狀態為 Bound,說明 PVC 已順利佈建。

    oc get pvc
    
  2. 如果 PVC 的狀態顯示為 Pending,請擷取導致 PVC 保持擱置狀態的錯誤。

    oc describe pvc <pvc_name>
    
  3. 檢閱 PVC 建立期間可能發生的常見錯誤。

  4. 檢閱將 PVC 裝載到應用程式時可能發生的常見錯誤。

  5. 驗證在本端機器上執行的 kubectl CLI 版本是否與叢集裡安裝的 Kubernetes 版本相符合。 如果使用的 kubectl CLI 版本不能至少符合叢集的 major.minor 版本,則可能會遇到非預期的結果。 例如,[ Kubernetes 不支援與伺服器版本相差 2 個或更多版本(n ± 2)的 kubectl 客戶端版本。

    1. 顯示在叢集裡和本端機器上安裝的 kubectl CLI 版本。
        oc version
        ```
        輸出範例
        ```sh {: screen}
        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 版本不一致,[請更新您的叢集](/docs/openshift?topic=openshift-update),或在 [本地電腦上安裝不同版本的 CLI](/docs/openshift?topic=openshift-cli-install)。
    
    
    
  6. 對於 Block Storage for VPC,驗證您具有最新版本的附加程式

  7. 僅限標準區塊儲存空間、物件儲存空間和 Portworx:確保已為外掛程式安裝最新的 Helm Chart 版本。

區塊儲存空間和物件儲存空間

1. 更新 Helm chart 儲存庫。
```sh {: pre}
    helm repo update
    ```
2. 列出儲存庫中的 Helm chart。
**對於標準區塊儲存空間**:
```sh {: pre}
    helm search repo iks-charts | grep block-storage-plugin
    ```
    輸出範例
    ```sh {: screen}
    iks-charts-stage/ibmcloud-block-storage-plugin    1.5.0                                                        A Helm chart for installing ibmcloud block storage plugin   
    iks-charts/ibmcloud-block-storage-plugin          1.5.0                                                        A Helm chart for installing ibmcloud block storage plugin   
    ```
    **對於物件儲存空間**:
    ```sh {: pre}
    helm search repo ibm-charts | grep object-storage-plugin
    ```
    輸出範例
    ```sh {: screen}
    ibm-charts/ibm-object-storage-plugin             1.0.9            1.0.9                             A Helm chart for installing ibmcloud object storage plugin  
    ```
3. 列出叢集裡已安裝的 Helm Chart,並比較您安裝的版本與可用的版本。
```sh {: pre}
    helm list --all-namespaces
    ```
4. 如果有較新的版本可用,請安裝此版本。 如需指示,請參閱[更新 IBM Cloud Block Storage 外掛程式](/docs/openshift?topic=openshift-vpc-block#vpc-addon-update)和[更新 IBM Cloud Object Storage 外掛程式](/docs/openshift?topic=openshift-storage_cos_install#update_cos_plugin)。

Portworx

  1. 請查找目前可用的 最新版 Helm 圖表

  2. 列出叢集裡已安裝的 Helm Chart,並比較您安裝的版本與可用的版本。

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

OpenShift Data Foundation

說明 ODF 資源,並檢閱任何錯誤訊息的指令輸出。

  1. 列出 ODF 叢集的名稱。
    oc get ocscluster
    
    輸出範例:
    NAME             AGE
    ocscluster-vpc   71d
    
  2. 說明儲存體叢集,並檢閱輸出的 Events 區段,以找出任何錯誤訊息。
    oc describe ocscluster <ocscluster-name>
    
  3. 列出 kube-system 名稱空間中的 Pod,並驗證它們是 Running
    oc get pods -n kube-system
    
  4. 說明 ibm-ocs-operator-controller-manager Pod,並檢閱輸出中的 Events 區段,以取得任何錯誤訊息。
    oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  5. 檢閱 ibm-ocs-operator-controller-manager 的日誌。
    oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  6. 說明 NooBaa,並檢閱輸出的 Events 區段,以取得任何錯誤訊息。
    oc describe noobaa -n openshift-storage