IBM Cloud Docs
トランスポート・エンドポイントが接続されないのはなぜですか?

トランスポート・エンドポイントが接続されないのはなぜですか?

仮想プライベート・クラウド クラシック・インフラストラクチャー

以下の手順はIBM Cloud Object Storageプラグインにのみ適用されます。

PVC を作成するとき、次のようなエラー・メッセージが表示されます。

Transport endpoint is not connected.

問題の原因を見つけるには、inspectnode ポッドをデプロイしてシステム・ログを収集します。

ロギング情報を収集するためのステップに従います。

  1. debug-pvc.yaml ファイルを作成し、ibm.io/debug-level: "info" というアノテーションと 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. クラスター内に debug-pvc PVC を作成します。

    kubectl create -f debug-pvc.yaml>
    
  3. アプリを再デプロイし、debug-pvc を参照します。 あるいは、以下のサンプル・ポッドを使用することもできます。

    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. 以下のデーモン・セット構成ファイルを inspectnode-ds.yaml として保存します。 先に作成したPVCを参照するアプリをデプロイした後、「Transport endpoint is not connected エラーが発生したときにDaemonSetをデプロイしてログを収集します。

    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. Transport endpoint is not connected エラーが発生した場合に、クラスター内に DaemonSet を作成します。

    kubectl create -f ./inspectnode-ds.yaml
    
  6. inspectnode ポッドの名前を取得します。

    kubectl get pods -n default -l app=ibm-inspectnode -o wide
    
  7. inspectnode ポッドからのログをローカル・マシンにコピーします。 コピー・コマンドで、ディレクトリーに名前を付けて、ログの元となるノードを識別できるようにします。 例えば、node-one.log です。 ディレクトリー名にノード IP を使用することもできます (例: 10.XXX.XX.XXX.log)。

    kubectl cp <inspectnode_pod_name>:/host/var/log  ./<node_name>.log
    
  8. syslog および s3fslogTransport endpoint のエラーに関する情報を確認します。 サポート・チケットを開き、収集したログ・ファイルを共有します。

  9. デプロイした ibm-inspectnode デーモン・セットを削除します。

    kubectl delete daemonset ibm-inspectnode
    
  10. 問題が解決しない場合は、サポートにお問い合わせください。 サポート Case を開きます。 ケースの詳細には、関連するログファイル、エラーメッセージ、コマンド出力を必ず含めてください。