Сбой создания цепочки кода в сети AWS EKS - PullRequest
0 голосов
/ 11 декабря 2019

В AWS-Elastic Kubernetes Services развернута простая одноранговая и одноранговая сеть. Я создал сеть, используя официальную документацию экс . Я могу воспитывать как заказчика, так и сверстников в стручках. Одноранговый узел может создавать канал и присоединяться к нему, а также успешно завершается транзакция обновления однорангового узла.

Высокоуровневая конфигурация для модулей:

  1. Запущено как наборы состояний
  2. Бобы используют динамический PV с классом хранения, настроенным для aws-ebs
  3. Предоставляется с использованием балансировщика нагрузки типа услуги
  4. Использует подход Docker In Docker (DIND) для цепного кода

Подробная конфигурация для модуля Orderer:

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

Подробная конфигурация для Peer вместе с DIND в одном модуле:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: allparticipants-peer0
  labels:
    app: allparticipants-peer0
spec:
  serviceName: allparticipants-peer0
  replicas: 1
  selector:
    matchLabels:
      app: allparticipants-peer0
  template:
    metadata:
      labels:
        app: allparticipants-peer0
    spec:
      containers:
      - name: docker
        env:
          - name: DOCKER_TLS_CERTDIR
            value:
        securityContext:
          privileged: true
        image: "docker:stable-dind"
        ports:
          - containerPort: 2375
        volumeMounts:
          - mountPath: /var/lib/docker
            name: dockervolume
      - name: allparticipants-peer0
        image: <docker-hub-url>/peer0:0.1
        imagePullPolicy: Always
        command: ["sh", "-c", "peer node start"]
        ports:
          - containerPort: 7051
        env:
          - name: CORE_VM_ENDPOINT
            value: http://localhost:2375
          - name: CORE_PEER_CHAINCODELISTENADDRESS
            value: 0.0.0.0:7052
          - name: FABRIC_LOGGING_SPEC
            value: debug
          - name: CORE_LOGGING_PEER
            value: debug
          - name: CORE_LOGGING_CAUTHDSL
            value: debug
          - name: CORE_LOGGING_GOSSIP
            value: debug
          - name: CORE_LOGGING_LEDGER
            value: debug
          - name: CORE_LOGGING_MSP
            value: info
          - name: CORE_LOGGING_POLICIES
            value: debug
          - name: CORE_LOGGING_GRPC
            value: debug
          - name: CORE_LEDGER_STATE_STATEDATABASE
            value: goleveldb
          - name: GODEBUG
            value: "netdns=go"
          - name: CORE_PEER_TLS_ENABLED
            value: "false"
          - name: CORE_PEER_GOSSIP_USELEADERELECTION
            value: "true"
          - name: CORE_PEER_GOSSIP_ORGLEADER
            value: "false"
          - name: CORE_PEER_GOSSIP_SKIPHANDSHAKE
            value: "true"
          - name: CORE_PEER_PROFILE_ENABLED
            value: "true"
          - name: CORE_PEER_COMMITTER_ENABLED
            value: "true"
          - name: CORE_PEER_TLS_CERT_FILE
            value: /etc/hyperledger/fabric/tls/server.crt
          - name: CORE_PEER_TLS_KEY_FILE
            value: /etc/hyperledger/fabric/tls/server.key
          - name: CORE_PEER_TLS_ROOTCERT_FILE
            value: /etc/hyperledger/fabric/tls/ca.crt
          - name: CORE_PEER_ID
            value: allparticipants-peer0
          - name: CORE_PEER_ADDRESS
            value: <peer0-load-balancer-url>:7051
          - name: CORE_PEER_LISTENADDRESS
            value: 0.0.0.0:7051
          - name: CORE_PEER_EVENTS_ADDRESS
            value: 0.0.0.0:7053
          - name: CORE_PEER_GOSSIP_BOOTSTRAP
            value: <peer0-load-balancer-url>:7051
          - name: CORE_PEER_GOSSIP_EXTERNALENDPOINT
            value: <peer0-load-balancer-url>:7051
          - name: CORE_PEER_LOCALMSPID
            value: AllParticipantsMSP
          - name: CORE_PEER_MSPCONFIGPATH
            value: <path-to-msp-of-peer0>
          - name: ORDERER_ADDRESS
            value: <orderer-load-balancer-url>:7050
          - name: CORE_PEER_ADDRESSAUTODETECT
            value: "true"
          - name: CORE_VM_DOCKER_ATTACHSTDOUT
            value: "true"
          - name: FABRIC_CFG_PATH
            value: /etc/hyperledger/fabric
        volumeMounts:
        - name: allparticipants-peer0-ledger
          mountPath: /var/ledger
        - name: dockersock
          mountPath: /host/var/run/docker.sock
      volumes:
      - name: dockersock
        hostPath:
          path: /var/run/docker.sock
      - name: dockervolume
        persistentVolumeClaim:
          claimName: docker-pvc
  volumeClaimTemplates:
  - metadata: 
      name: allparticipants-peer0-ledger
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: allparticipants-peer0-sc
      resources:
        requests:
          storage: 1Gi

Не включая конфигурацию класса хранения и обслуживания для модулей. как они, кажется, работают нормально.

Итак, как указывалось ранее, одноранговый узел может создавать канал и присоединяться к нему, а также я могу установить цепной код в одноранговом узле. Тем не менее, при создании экземпляра цепного кода из однорангового узла, я получаю следующую ошибку:

Ошибка: ошибка при подтверждении цепного кода: ошибка rpc: code = Unavailable desc = транспорт закрывается

Кроме того, в контейнере Docker (DIND), запущенном в модуле peer0, есть следующие журналы предупреждений:

level = warning msg = "887409d917bd7ef74ebe8617b8dcbedc8197741662a14b988491c54085e9 Утилита IPCFD / UMDCount / ucacmd очистить / не сменить: не удалось: не удалось: до/ Containers / 887409d917bd7ef74ebe8617b8dcbedc8197741662a14b988491c54085e9acfd / mounts / shm, флаги: 0x2: нет такого файла или каталога "

Кроме того, в этом док-контейнере нет журналов, когда я отправляю следующие запросы:1038 *

Я пытался найти похожие проблемы, но не смог найти ту, которая соответствует этой.

Есть ли проблема с конфигурацией pod или eks? Не смог пройти мимо этого. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении? Я довольно новичок в K8s.

Обновление 1:

Я обновил тип сервиса до Load Balancer, сохранив остальные конфигурации аналогичными. Тем не менее я получаю ту же ошибку.

Обновление 2:

Сконфигурированный подход DIND для контейнера с цепочечным кодом.

Обновление 3:

Установлены pv и pvc для контейнера dind, а также обновлен протокол доступа CORE_VM_ENDPOINT с tcp на http.

1 Ответ

0 голосов
/ 17 декабря 2019

Проблема здесь заключалась в том, что изображение использовалось для контейнера Docker In Docker. Я понизил версию образа docker-in-docker с docker:stable-dind one до docker:18-dind. В стабильной версии образа TLS включен по умолчанию. В моем случае я попытался установить значение переменной окружения DOCKER_TLS_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 может потребоваться для создания экземпляра цепного кода, и должен быть способ использовать его, и я буду открыт для поиска этих ответов.

...