Perché l'endpoint di trasporto non è connesso?

Risolvere i problemi relativi al livello di trasporto e agli endpoint di " Cloud Object Storage ".

Virtual Private Cloud Infrastruttura classica

I passi seguenti si applicano solo al plug-in IBM Cloud Object Storage.

Quando si crea un PVC, viene visualizzato un messaggio di errore simile al seguente:

Transport endpoint is not connected.

Per trovare la causa del problema, raccogliere i log di sistema distribuendo un pod inspectnode.

Seguire i passi per raccogliere le informazioni di registrazione.

  1. Creare un file debug-pvc.yaml e specificare le annotazioni ibm.io/debug-level: "info" e ibm.io/curl-debug: "true".

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
       annotations:
         ibm.io/auto-create-bucket: "false"
         ibm.io/auto-delete-bucket: "false"
         ibm.io/bucket: <bucket-name> # Enter the name of your bucket.
         ibm.io/secret-name: <cos-secret-name> # Enter the name of your Kubernetes secret that contains your COS credentails
         ibm.io/debug-level: "info"
         ibm.io/curl-debug: "true"
       name: debug-pvc
       namespace: default
    spec:
      storageClassName: ibmc-s3fs-standard-perf-regional
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. Crea il PVC " debug-pvc " nel tuo cluster.

    oc create -f debug-pvc.yaml
    
  3. Ridistribuisci la tua applicazione e fai riferimento a debug-pvc. In alternativa, puoi utilizzare il seguente pod di esempio.

    apiVersion: v1
    kind: Pod
    metadata:
      name: debug-pod
    spec:
      volumes:
      - name: nginx
        persistentVolumeClaim:
            claimName: cos-debug
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - mountPath: /debug
          name: nginx
    
  4. Salvare il file di configurazione DaemonSet come inspectnode-ds.yaml. Dopo aver distribuito un'applicazione che fa riferimento alla PVC che hai creato in precedenza, distribuisci DaemonSet quando si verifica l'errore Transport endpoint is not connected per raccogliere i log.

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
        namespace: default
        name: ibm-inspectnode
        labels:
          app: ibm-inspectnode
    spec:
        selector:
          matchLabels:
              app: ibm-inspectnode
        updateStrategy:
          type: RollingUpdate
        template:
          metadata:
              labels:
                app: ibm-inspectnode
          spec:
              tolerations:
              - operator: "Exists"
              hostNetwork: true
              containers:
                - name: inspectnode
                  image: alpine:latest
                  command: ["/bin/sh"]
                  args: ["-c", "while true; do msg=$(date); echo $msg; sleep 30; done"]
                  securityContext:
                      runAsUser: 0
                  volumeMounts:
                    - mountPath: /host/var/log
                      name: host-log
              volumes:
                - name: host-log
                  hostPath:
                    path: /var/log
    
  5. Creare il DaemonSet nel cluster quando si verifica l'errore Transport endpoint is not connected.

    oc create -f ./inspectnode-ds.yaml
    
  6. Ottieni il nome del pod inspectnode.

    oc get pods -n default -l app=ibm-inspectnode -o wide
    
  7. Copia i log dal pod inspectnode alla tua macchina locale. Nel comando copy, fornisci un nome alla tua directory in modo da poter identificare da quale nodo provengono i log. Ad esempio, node-one.log. È inoltre possibile utilizzare l'IP del nodo nel nome della directory, ad esempio: 10.XXX.XX.XXX.log.

    oc cp <inspectnode_pod_name>:/host/var/log  ./<node_name>.log
    
  8. Rivedere i file syslog e s3fslog per informazioni sull'errore Transport endpoint. Aprire un ticket di assistenza e condividere i file di log raccolti.

  9. Eliminare il ibm-inspectnode DaemonSet distribuito.

    oc delete daemonset ibm-inspectnode
    
  10. 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.