Por que vejo erros de ponto de extremidade de transporte não conectado ao usar o complemento de cluster IBM Cloud Object Storage?

Resolva problemas na camada de transporte d Cloud Object Storage s relacionados a complementos.

As etapas a seguir se aplicam somente ao complemento de cluster IBM Cloud Object Storage. Se você estiver usando o plug-in Helm, consulte Por que vejo erros de endpoint de transporte não conectado?

Quando a conexão é perdida entre os ibm-object-csi-driver pods de servidor de nós e os pods de aplicativos, você pode ver TransportEndpoint erros de conexão.

Um caso possível para esse erro é quando são aplicadas atualizações de patches. Nesse caso, os pods de aplicativos podem apresentar erros de conexão temporários.

O " ibm-object-csi-driver suporta a recuperação automática de volumes que perderam a conexão com o " s3fs. A recuperação automática pode ser obtida com a implantação de um recurso personalizado fornecido pelo ' ibm-object-csi-driver. Esse recurso monitora continuamente os aplicativos e o namespace que você especifica e reinicia automaticamente os pods de aplicativos quando TransportEndpoint ocorrem erros.

  1. Copie o YAML a seguir e salve-o como um arquivo chamado stale.yaml

    apiVersion: objectdriver.csi.ibm.com/v1alpha1
    kind: RecoverStaleVolume
    metadata:
      labels:
        app.kubernetes.io/name: recoverstalevolume
        app.kubernetes.io/instance: recoverstalevolume-sample
      name: recoverstalevolume-sample
      namespace: default
    spec:
      logHistory: 200
      data:
        - namespace: default # The namesapce where your app is deployed
          deployments: [<A comma separated list of all the apps you want to recover>]
    
  2. Crie o recurso RecoverStaleVolume no seu cluster.

    oc create -f stale.yaml
    

    Exemplo de saída

    recoverstalevolume.objectdriver.csi.ibm.com/recoverstalevolume-sample created
    
  3. Verifique se o recurso foi criado.

    oc get recoverstalevolume
    

    Exemplo de saída

    NAME  AGE  recoverstalevolume-sample   41s
    
  4. Se o problema persistir, entre em contato com o suporte. Abrir um caso de suporte. Nos detalhes do caso, certifique-se de incluir todos os arquivos de registro, mensagens de erro ou saídas de comando relevantes.

Verificação da recuperação por meio da simulação de um erro

  1. Liste suas implementações.

    oc get deploy -o wide
    

    Exemplo de saída

    NAME               READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS     IMAGES     SELECTOR
    cos-csi-test-app   1/1     1            1           7h24m   app-frontend   rabbitmq   app=cos-csi-test-app
    
  2. Liste seus pods de aplicativos.

    oc get pods -o wide
    

    Exemplo de saída

    NAME                                READY   STATUS    RESTARTS   AGE     IP             NODE           NOMINATED NODE   READINESS GATES
    cos-csi-test-app-6b99bd8bf4-5lt7p   1/1     Running   0          7h24m   172.30.69.21   10.73.114.86   <none>           <none>
    
  3. Lista os pods no ibm-object-csi-operator namespace.

    oc get pods -n ibm-object-csi-operator -o wide
    
    NAME                                                          READY   STATUS    RESTARTS   AGE     IP              NODE           NOMINATED NODE   READINESS GATES
    ibm-object-csi-controller-d64df8f57-l6grj                     3/3     Running   0          7h31m   172.30.69.19    10.73.114.86   <none>           <none>
    ibm-object-csi-node-6d4x4                                     3/3     Running   0          7h31m   172.30.64.24    10.48.3.149    <none>           <none>
    ibm-object-csi-node-gg5pj                                     3/3     Running   0          7h31m   172.30.116.13   10.93.120.14   <none>           <none>
    ibm-object-csi-node-vk8jf                                     3/3     Running   0          7h31m   172.30.69.20    10.73.114.86   <none>           <none>
    ibm-object-csi-operator-controller-manager-8544d4f798-llbf8   1/1     Running   0          7h37m   172.30.69.18    10.73.114.86   <none>           <none>
    
  4. Exclua o ibm-object-csi-node-xxx pod no ibm-object-csi-operator namespace.

    oc delete pod ibm-object-csi-node-vk8jf -n ibm-object-csi-operator
    

    Exemplo de saída

    pod "ibm-object-csi-node-vk8jf" deleted
    
  5. Lista os pods no ibm-object-csi-operator namespace.

    oc get pods -n ibm-object-csi-operator -o wide
    

    Exemplo de saída

    NAME                                                          READY   STATUS    RESTARTS   AGE     IP              NODE           NOMINATED NODE   READINESS GATES
    ibm-object-csi-controller-d64df8f57-l6grj                     3/3     Running   0          7h37m   172.30.69.19    10.73.114.86   <none>           <none>
    ibm-object-csi-node-6d4x4                                     3/3     Running   0          7h37m   172.30.64.24    10.48.3.149    <none>           <none>
    ibm-object-csi-node-gg5pj                                     3/3     Running   0          7h37m   172.30.116.13   10.93.120.14   <none>           <none>
    ibm-object-csi-node-kmn94                                     3/3     Running   0          8s      172.30.69.23    10.73.114.86   <none>           <none>
    ibm-object-csi-operator-controller-manager-8544d4f798-llbf8   1/1     Running   0          7h43m   172.30.69.18    10.73.114.86   <none>           <none>
    
  6. Obtenha os registros do ibm-object-csi-operator-controller-manager para acompanhar a recuperação do pod do aplicativo. Observe que o Operator exclui o pod do aplicativo para que ele seja reiniciado.

    2024-07-10T17:25:39Z	INFO	recoverstalevolume_controller	Time to complete	{"fetchVolumeStatsFromNodeServerPodLogs": 0.066584637}
    2024-07-10T17:25:39Z	INFO	recoverstalevolume_controller	Volume Stats from NodeServer Pod Logs	{"Request.Namespace": "default", "Request.Name": "recoverstalevolume-sample", "volume-stas": {"pvc-9d12a2f5-09a9-4eb4-b1f5-2a727249ed2b":"transport endpoint is not connected "}}
    2024-07-10T17:25:39Z	INFO	recoverstalevolume_controller	Stale Volume Found	{"Request.Namespace": "default", "Request.Name": "recoverstalevolume-sample", "volume": "pvc-9d12a2f5-09a9-4eb4-b1f5-2a727249ed2b"}
    2024-07-10T17:25:39Z	INFO	recoverstalevolume_controller	Pod using stale volume	{"Request.Namespace": "default", "Request.Name": "recoverstalevolume-sample", "volume-name": "pvc-9d12a2f5-09a9-4eb4-b1f5-2a727249ed2b", "pod-name": "cos-csi-test-app-6b99bd8bf4-5lt7p"}
    2024-07-10T17:25:39Z	INFO	recoverstalevolume_controller	Pod deleted.	{"Request.Namespace": "default", "Request.Name": "recoverstalevolume-sample"}