Depurando falhas de armazenamento persistente

Revise as opções para depurar o armazenamento persistente e localizar as causas raiz para falhas.

Verificando se o pod que monta sua instância de armazenamento foi implementado com sucesso

  1. Liste os pods em seu cluster. Um pod será implementado com êxito se o pod mostrar um status de Em execução.

    oc get pods
    
  2. Obtenha os detalhes de seu pod e verifique se os erros são exibidos na seção Eventos de sua saída da CLI.

    oc describe pod <pod_name>
    
  3. Recupere os logs para seu app e verifique se você pode ver alguma mensagem de erro.

    oc logs <pod_name>
    

Reiniciando o pod do app

  1. Se o seu pod for parte de uma implementação, exclua o pod e deixe que a implementação o reconstrua. Se o seu pod não for parte de uma implementação, exclua o pod e reaplique o seu arquivo de configuração do pod.

    oc delete pod <pod_name>
    
    oc apply -f <app.yaml>
    
  2. Se reiniciar seu pod não resolver o problema, recarregue seu nó do trabalhador.

  3. Verifique se você usa a versão mais recente do IBM Cloud e do plug-in do IBM Cloud Kubernetes Service.

    ibmcloud update
    
    ibmcloud plugin repo-plugins
    

Verificando se o driver do armazenamento e os pods do plug-in mostram um status Em execução

  1. Liste os pods no projeto kube-system.
    oc get pods -n kube-system
    
  2. Se o driver de armazenamento e os pods de plug-in não mostrarem um status Em execução, obtenha mais detalhes do pod para localizar a causa raiz. Dependendo do status do seu pod, você pode não conseguir executar todos os comandos a seguir.
    1. Obtenha os nomes dos contêineres que são executados no pod do driver.
        kubectl get pod <pod_name> -n kube-system -o jsonpath="{.spec['containers','initContainers'][*].name}" | tr -s '[[:space:]]' '\n'
        ```
        Saída de exemplo para o Block Storage for VPC com três contêineres:
        ```sh {: screen}
        csi-provisioner
        csi-attacher
        iks-vpc-block-driver
        ```
        Saída de exemplo para o Block Storage for Classic:
        ```sh {: pre}
        ibmcloud-block-storage-driver-container
        ```
    2. Exporte os logs do pod do driver para um arquivo `logs.txt` em sua máquina local. Inclua o nome do contêiner do driver.
    ```sh {: pre}
        oc logs <pod_name> -n kube-system -c <container_name> > logs.txt
        ```
    3. Revise o arquivo de log.
    ```sh {: pre}
        cat logs.txt
        ```
    
  3. Analise a seção Eventos da saída da CLI do comando oc describe pod e os logs mais recentes para localizar a causa raiz do erro.

Verificando se a PVC foi provisionada com sucesso.

  1. Verifique o estado da sua PVC. Uma PVC será provisionada com êxito se a PVC mostrar um status Ligado.

    oc get pvc
    
  2. Se o estado da PVC mostrar Pendente, recupere o erro que explica por que a PVC permanece pendente.

    oc describe pvc <pvc_name>
    
  3. Revise erros comuns que podem ocorrer durante a criação da PVC.

  4. Revise erros comuns que podem ocorrer ao montar uma PVC em seu app.

  5. Verifique se a versão da CLI kubectl que você executa em sua máquina local corresponde à versão do Kubernetes que está instalada em seu cluster. Se você usar uma versão da CLI kubectl que não corresponda pelo menos à versão major.minor do seu cluster, poderá enfrentar resultados inesperados. Por exemplo, [ Kubernetes não é compatível com versões do cliente kubectl que apresentem uma diferença de duas ou mais versões em relação à versão do servidor (n ± 2).

    1. Mostre a versão da CLI kubectl que está instalada em seu cluster e em sua máquina local.
        oc version
        ```
        Saída de exemplo
        ```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"}
        ```
        As versões da CLI corresponderão se você puder ver a mesma versão em `GitVersion` para o cliente e o servidor. É possível ignorar a parte `+IKS` da versão para o servidor.
    2. Se as versões da CLI `kubectl` na máquina local e no cluster não corresponderem, [atualize o cluster](/docs/openshift?topic=openshift-update) ou [instale uma versão diferente da CLI na máquina local](/docs/openshift?topic=openshift-cli-install).
    
    
    
  6. Para o Block Storage for VPC, verifique se você tem a versão mais recente do complemento.

  7. Para armazenamento de bloco clássico, armazenamento de objeto e Portworx apenas: certifique-se de que você instalou a versão mais recente do gráfico do Helm para o plug-in.

Armazenamento de bloco e objeto:

1. Atualize seus repositórios de gráfico do Helm.
```sh {: pre}
    helm repo update
    ```
2. Liste os gráficos do Helm no repositório.
**Para armazenamento de bloco clássico**:
```sh {: pre}
    helm search repo iks-charts | grep block-storage-plugin
    ```
    Saída de exemplo
    ```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   
    ```
    **Para armazenamento de objeto**:
    ```sh {: pre}
    helm search repo ibm-charts | grep object-storage-plugin
    ```
    Saída de exemplo
    ```sh {: screen}
    ibm-charts/ibm-object-storage-plugin             1.0.9            1.0.9                             A Helm chart for installing ibmcloud object storage plugin  
    ```
3. Liste os gráficos do Helm instalados em seu cluster e compare a versão instalada com a versão que está disponível.
```sh {: pre}
    helm list --all-namespaces
    ```
4. Se uma versão mais recente estiver disponível, instale-a. Para instruções, consulte [Atualização do IBM Cloudplug-in do Block Storage do ](/docs/openshift?topic=openshift-vpc-block#vpc-addon-update) e [Atualização do plug-in do IBM Cloud Object Storage ](/docs/openshift?topic=openshift-storage_cos_install#update_cos_plugin).

Portworx

  1. Localize a versão mais recente do gráfico do Helm que está disponível.

  2. Liste os gráficos do Helm instalados em seu cluster e compare a versão instalada com a versão que está disponível.

    helm list --all-namespaces
    
  3. Se uma versão mais recente estiver disponível, instale-a. Para obter instruções, consulte Atualizando o Portworx em seu cluster.

OpenShift Data Foundation

Descreva seus recursos do ODF e revise as saídas de comando para verificar se há mensagens de erro.

  1. Liste o nome do cluster do ODF.
    oc get ocscluster
    
    Saída de exemplo:
    NAME             AGE
    ocscluster-vpc   71d
    
  2. Descreva o cluster de armazenamento e revise a seção Events da saída para verificar se há mensagens de erro.
    oc describe ocscluster <ocscluster-name>
    
  3. Liste os pods no espaço de nomes kube-system e verifique se eles estão Running
    oc get pods -n kube-system
    
  4. Descreva o pod ibm-ocs-operator-controller-manager e revise a seção Events na saída para verificar se há mensagens de erro.
    oc describe pod <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  5. Revise os logs do ibm-ocs-operator-controller-manager.
    oc logs <ibm-ocs-operator-controller-manager-a1a1a1a> -n kube-system
    
  6. Descreva NooBaa e revise a seção Events da saída para verificar se há mensagens de erro.
    oc describe noobaa -n openshift-storage