Perché si verificano errori di endpoint di trasporto non connesso quando si utilizza il componente aggiuntivo cluster IBM Cloud Object Storage?

Risolvere i problemi relativi al livello di trasporto di " Cloud Object Storage " con i componenti aggiuntivi.

I passi seguenti si applicano solo al componente aggiuntivo del cluster IBM Cloud Object Storage. Se si utilizza il plug-in Helm, vedere invece la sezione Perché l'endpoint di trasporto non è connesso?

Quando si perde la connessione tra i pod del ibm-object-csi-driver server del nodo e i pod dell'applicazione, si possono vedere TransportEndpoint errori di connessione.

Un possibile caso di questo errore si verifica quando vengono applicati gli aggiornamenti delle patch. In questo caso, i pod delle applicazioni possono presentare errori di connessione temporanei.

Il 'ibm-object-csi-driver supporta il recupero automatico dei volumi che hanno perso la connessione al 's3fs. L'autorecovery può essere ottenuto distribuendo una risorsa personalizzata fornita da 'ibm-object-csi-driver. Questa risorsa monitora continuamente le applicazioni e lo spazio dei nomi specificato dall'utente e riavvia automaticamente i pod delle applicazioni quando TransportEndpoint si verificano errori.

  1. Copia il seguente codice YAML e salvalo in un file denominato 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. Crea la risorsa " RecoverStaleVolume " nel tuo cluster.

    oc create -f stale.yaml
    

    Output di esempio

    recoverstalevolume.objectdriver.csi.ibm.com/recoverstalevolume-sample created
    
  3. Verificare che la risorsa sia stata creata.

    oc get recoverstalevolume
    

    Output di esempio

    NAME  AGE  recoverstalevolume-sample   41s
    
  4. Se il problema persiste, contattare il supporto. Apri un caso di supporto. Nei dettagli del caso, assicurarsi di includere qualsiasi file di registro, messaggio di errore o output di comando pertinente.

Verifica del recupero attraverso la simulazione di un errore

  1. Elencare le distribuzioni.

    oc get deploy -o wide
    

    Output di esempio

    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. Elencare i pod dell'applicazione.

    oc get pods -o wide
    

    Output di esempio

    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. Elenca i pod nello ibm-object-csi-operator spazio dei nomi.

    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. Elimina il ibm-object-csi-node-xxx pod nello ibm-object-csi-operator spazio dei nomi.

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

    Output di esempio

    pod "ibm-object-csi-node-vk8jf" deleted
    
  5. Elenca i pod nello ibm-object-csi-operator spazio dei nomi.

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

    Output di esempio

    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. Ottenere i log del ibm-object-csi-operator-controller-manager per seguire il recupero dell'app pod. Si noti che l'Operatore cancella il pod dell'applicazione in modo che venga riavviato.

    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"}