Kubernetes AWS EKS网络中链码实例化失败
我在AWS弹性Kubernetes服务上部署了一个简单的一个订购者和一个对等网络。我使用创建了网络。我可以在吊舱内找到订购者和同行。对等方能够创建和加入通道,并且锚定对等方更新事务也成功 吊舱的高级配置: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
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