IBM Cloud Docs
Why is the transport endpoint not connected?

Why is the transport endpoint not connected?

Virtual Private Cloud Classic infrastructure

The following steps apply to the IBM Cloud Object Storage plug-in only.

When you create a PVC, you see an error message similar to the following:

Transport endpoint is not connected.

To find the cause of the issue, gather system logs by deploying an inspectnode pod.

Follow the steps to gather logging information.

  1. Create a debug-pvc.yaml file and specify the ibm.io/debug-level: "info" and ibm.io/curl-debug: "true" annotations.

    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. Create the debug-pvc PVC in your cluster.

    kubectl create -f debug-pvc.yaml>
    
  3. Redeploy your app and reference the debug-pvc. Alternatively, you can use the following sample pod.

    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. Save the following DaemonSet configuration file as inspectnode-ds.yaml. After you deploy an app that references the PVC that you created earlier, deploy the DaemonSet when the Transport endpoint is not connected error occurs to gather the logs.

    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. Create the DaemonSet in your cluster when the Transport endpoint is not connected error occurs.

    kubectl create -f ./inspectnode-ds.yaml
    
  6. Get the name of the inspectnode pod.

    kubectl get pods -n default -l app=ibm-inspectnode -o wide
    
  7. Copy the logs from inspectnode pod to your local machine. In the copy command, give your directory a name so that you can identify which node the logs are from. For example, node-one.log. You might also use the node IP in the directory name, for example: 10.XXX.XX.XXX.log.

    kubectl cp <inspectnode_pod_name>:/host/var/log  ./<node_name>.log
    
  8. Review the syslog and the s3fslog for information about the Transport endpoint error. Open a support ticket and share the log files that you gathered.

  9. Delete the ibm-inspectnode DaemonSet that you deployed.

    kubectl delete daemonset ibm-inspectnode
    
  10. If the issue persists, contact support. Open a support case. In the case details, be sure to include any relevant log files, error messages, or command outputs.