Kubernetes AWS EKS网络中链码实例化失败

Kubernetes AWS EKS网络中链码实例化失败,kubernetes,hyperledger-fabric,amazon-eks,Kubernetes,Hyperledger Fabric,Amazon Eks,我在AWS弹性Kubernetes服务上部署了一个简单的一个订购者和一个对等网络。我使用创建了网络。我可以在吊舱内找到订购者和同行。对等方能够创建和加入通道,并且锚定对等方更新事务也成功 吊舱的高级配置: 以有状态集开始 POD使用动态PV,并为aws ebs配置存储类 使用服务类型负载平衡器公开 对链码使用Docker-In-Docker(DIND)方法 订购方吊舱的详细配置: apiVersion: apps/v1 kind: StatefulSet metadata: name: al

我在AWS弹性Kubernetes服务上部署了一个简单的一个订购者和一个对等网络。我使用创建了网络。我可以在吊舱内找到订购者和同行。对等方能够创建和加入通道,并且锚定对等方更新事务也成功

吊舱的高级配置:

  • 以有状态集开始
  • POD使用动态PV,并为aws ebs配置存储类
  • 使用服务类型负载平衡器公开
  • 对链码使用Docker-In-Docker(DIND)方法
  • 订购方吊舱的详细配置:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: allparticipants-orderer
      labels:
        app: allparticipants-orderer
    spec:
      serviceName: orderer
      replicas: 1
      selector:
        matchLabels:
          app: allparticipants-orderer
      template:
        metadata:
          labels:
            app: allparticipants-orderer
        spec:
          containers:
          - name: allparticipants-orderer
            image: <docker-hub-url>/orderer:0.1
            imagePullPolicy: Always
            command: ["sh", "-c", "orderer"]
            ports:
              - containerPort: 7050
            env:
              - name: FABRIC_LOGGING_SPEC
                value: DEBUG
              - name: ORDERER_GENERAL_LOGLEVEL
                value: DEBUG
              - name: ORDERER_GENERAL_LISTENADDRESS
                value: 0.0.0.0
              - name: ORDERER_GENERAL_GENESISMETHOD
                value: file
              - name: ORDERER_GENERAL_GENESISFILE
                value: /var/hyperledger/orderer/orderer.genesis.block
              - name: ORDERER_GENERAL_LOCALMSPID
                value: OrdererMSP
              - name: ORDERER_GENERAL_LOCALMSPDIR
                value: /var/hyperledger/orderer/msp
              - name: ORDERER_GENERAL_TLS_ENABLED
                value: "false"
              - name: ORDERER_GENERAL_TLS_PRIVATEKEY
                value: /var/hyperledger/orderer/tls/server.key
              - name: ORDERER_GENERAL_TLS_CERTIFICATE
                value: /var/hyperledger/orderer/tls/server.crt
              - name: ORDERER_GENERAL_TLS_ROOTCAS
                value: /var/hyperledger/orderer/tls/ca.crt
            volumeMounts:
            - name: allparticipants-orderer-ledger
              mountPath: /var/ledger
    
      volumeClaimTemplates:
      - metadata: 
          name: allparticipants-orderer-ledger
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: allparticipants-orderer-sc
          resources:
            requests:
              storage: 1Gi
    
    我试图搜索类似的问题,但没有找到一个与此eks问题匹配的问题

    吊舱配置或eks配置是否存在问题?无法通过这一关。有人能给我指一下正确的方向吗?我对K8s很陌生

    更新1:

    我将服务类型更新为负载平衡器,保持其余配置相似。但我还是犯了同样的错误

    更新2:

    为链码容器配置了DIND方法

    更新3:


    为dind容器安装pv和pvc,并将CORE_VM_端点访问协议从tcp更新为http。

    这里的问题是Docker容器中Docker使用的映像。我将docker图像版本中的docker从
    docker:stable dind
    1降级为
    docker:18 dind
    。默认情况下,稳定映像版本已启用TLS。在我的例子中,我尝试将环境变量
    DOCKER\u TLS\u CERTDIR
    的值设置为空。但这并没有奏效

    附加DIND配置的代码段:

    containers:
      - name: docker
        securityContext:
          privileged: true
        image: "docker:18-dind"
        ports:
          - containerPort: 2375
            protocol: TCP
        volumeMounts:
          - mountPath: /var/lib/docker
            name: dockervolume
    

    注意:虽然我已经能够解决这个问题,但我并没有将此标记为可接受的答案,因为TLS可能需要实例化链码,并且应该有一种方法来使用它,我愿意并期待这些答案。

    如果下面的投票者解释原因,那就太好了。我会在这个问题上作出修正。你真的执行对等容器以查看它是否可以连接到internet吗?@Gari:是的。我对它执行了exec,运行了apt更新,还尝试了ping不同的地址。
    peer chaincode instantiate -o $ORDERER_ADDRESS -C carchannel -n fabcar
    -l node -v 0.1.1 -c '{"Args":[]}' -P "OR ('AllParticipantsMSP.member','AllParticipantsMSP.peer', 'AllParticipantsMSP.admin', 'AllParticipantsMSP.client')"
    
    containers:
      - name: docker
        securityContext:
          privileged: true
        image: "docker:18-dind"
        ports:
          - containerPort: 2375
            protocol: TCP
        volumeMounts:
          - mountPath: /var/lib/docker
            name: dockervolume