¿Por qué aparecen errores de punto final de transporte no conectado al utilizar el complemento de clúster IBM Cloud Object Storage?

Resolución de problemas de la capa de transporte de Cloud Object Storage con complementos.

Los siguientes pasos se aplican únicamente al complemento de clúster IBM Cloud Object Storage. Si utiliza el complemento Helm, consulte ¿Por qué aparecen errores de punto final de transporte no conectado? en su lugar.

Cuando se pierde la conexión entre los ibm-object-csi-driver pods de servidor de nodo y los pods de aplicación, es posible que aparezcan TransportEndpoint errores de conexión.

Un posible caso de este error es cuando se aplican actualizaciones de parches. En este caso, los pods de aplicaciones pueden experimentar errores temporales de conexión.

El " ibm-object-csi-driver " admite la autorrecuperación de volúmenes que han perdido la conexión con el " s3fs. La autorrecuperación puede lograrse desplegando un recurso personalizado proporcionado por el " ibm-object-csi-driver. Este recurso supervisa continuamente las aplicaciones y el espacio de nombres que especifique y reinicia automáticamente los pods de aplicaciones cuando TransportEndpoint se producen errores.

  1. Copia el siguiente código YAML y guárdalo en un archivo llamado 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 el recurso RecoverStaleVolume en tu clúster.

    oc create -f stale.yaml
    

    Salida de ejemplo

    recoverstalevolume.objectdriver.csi.ibm.com/recoverstalevolume-sample created
    
  3. Comprueba que el recurso se haya creado.

    oc get recoverstalevolume
    

    Salida de ejemplo

    NAME  AGE  recoverstalevolume-sample   41s
    
  4. Si el problema persiste, póngase en contacto con soporte. Abra un caso de soporte. En los detalles del caso, asegúrese de incluir todos los archivos de registro, mensajes de error o salidas de comandos relevantes.

Verificación de la recuperación mediante la simulación de un error

  1. Enumere sus despliegues.

    oc get deploy -o wide
    

    Salida de ejemplo

    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. Enumere sus pods de aplicaciones.

    oc get pods -o wide
    

    Salida de ejemplo

    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 los pods en el ibm-object-csi-operator espacio de nombres.

    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. Eliminar el ibm-object-csi-node-xxx pod en el ibm-object-csi-operator espacio de nombres.

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

    Salida de ejemplo

    pod "ibm-object-csi-node-vk8jf" deleted
    
  5. Lista los pods en el ibm-object-csi-operator espacio de nombres.

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

    Salida de ejemplo

    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. Obtén los registros del ibm-object-csi-operator-controller-manager para seguir la recuperación de la vaina de la aplicación. Tenga en cuenta que el Operador borra el pod de la aplicación para que se reinicien.

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