지속적 스토리지 실패 디버깅

지속적 스토리지를 디버그하기 위한 옵션을 검토하고 실패의 근본 원인을 찾습니다.

스토리지 인스턴스를 마운트하는 팟(Pod)이 성공적으로 배치되었는지 확인

  1. 클러스터 내의 팟(Pod)을 나열하십시오. 팟(Pod)의 상태가 실행 중이면 팟(Pod)이 프로비저닝된 것입니다.

    oc get pods
    
  2. 팟(Pod)에 대한 세부사항을 가져와서 오류가 CLI 출력의 이벤트 섹션에 표시되어 있는지 여부를 확인하십시오.

    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)이 Running 상태를 표시하는지 확인

  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 출력의 **이벤트oc describe pod 섹션 및 최신 로그를 분석하여 오류에 대한 근본 원인을 찾으십시오.

PVC가 성공적으로 프로비저닝되었는지 확인

  1. PVC의 상태를 확인하십시오. PVC의 상태가 바인딩됨이면 PVC가 프로비저닝된 것입니다.

    oc get pvc
    
  2. PVC의 상태가 보류 중이면 오류를 검색하여 PVC가 보류 중인 이유를 알아보십시오.

    oc describe pvc <pvc_name>
    
  3. PVC 작성 중에 발생할 수 있는 공통 오류를 검토하십시오.

  4. PVC를 앱에 마운트할 때 발생할 수 있는 공통 오류를 검토하십시오.

  5. 로컬 머신에서 실행되는 kubectl CLI 버전이 클러스터에 설치된 Kubernetes 버전과 일치하는지 확인하십시오. 클러스터의 최소 major.minor 버전과 일치하는 kubectl CLI 버전을 사용하는 경우 예상치 못한 결과가 발생할 수 있습니다. 예를 들어, [ Kubernetes 은 서버 버전(n ± 2)과 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"}
        ```
        CLI 버전은 클라이언트 및 서버의 `GitVersion`에서 동일한 버전을 볼 수 있는 경우 일치합니다. 서버용 버전의 `+IKS` 부분을 무시할 수 있습니다.
    2. 로컬 시스템과 클러스터의 `kubectl` CLI 버전이 일치하지 않으면, [클러스터를 업데이트](/docs/openshift?topic=openshift-update)하거나 [로컬 시스템에 다른 CLI 버전을 설치](/docs/openshift?topic=openshift-cli-install)하십시오.
    
    
    
  6. Block Storage for VPC의 경우, 추가 기능의 최신 버전을 갖고 있는지 확인하십시오.

  7. 클래식 블록 스토리지, 오브젝트 스토리지 및 Portworx만 해당: 플러그인에 적합한 최신 Helm 차트 버전을 설치했는지 확인하십시오.

블록 및 오브젝트 스토리지:

1. Helm 차트 저장소를 업데이트하십시오.
```sh {: pre}
    helm repo update
    ```
2. 저장소에 Helm 차트를 나열하십시오.
**클래식 블록 클러스터의 경우**:
```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 차트를 나열하고 설치한 버전을 사용 가능한 버전과 비교하십시오.
```sh {: pre}
    helm list --all-namespaces
    ```
4. 최신 버전이 사용 가능한 경우 이 버전을 설치하십시오. 지시사항은 [IBM Cloud 블록 스토리지 플러그인 업데이트](/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 차트를 나열하고 설치한 버전을 사용 가능한 버전과 비교하십시오.

    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