Hyperledger Fabric 入门笔记(二十一)Fabric V2.5 使用K8S部署测试网络

发布于:2025-07-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

本节参考官方文档,介绍了如何使用K8S的方式部署Fabric测试网络。


一、说明

fabric-samples/test-network-k8s/将Fabric测试网络重建为云原生(cloud native)的应用程序。目标如下:

  • 提供简单的一键式操作来运行Fabric测试网络。
  • 提供在Kubernetes上部署生产型网络的参考指南。
  • 为开发链码、网关和区块链应用程序提供云就绪(cloud ready)平台。
  • 为Fabric CA操作和部署指南提供Kube补充。
  • 支持向Chaincode as a Service的过渡。
  • 支持从内部、Docker守护进程到外部链码构建器的转换。
  • 在任何Kube上运行。

注:本章节必须使用代理,详见《笔记三》3.7节。


二、准备

2.1. kubectl

kubectl是Kubernetes的命令行工具,通过它可以对Kubernetes集群运行命令,例如部署应用程序、检查和管理集群资源以及查看日志等。

使用snap包管理器安装kubectl:

snap install kubectl --classic
kubectl version

在这里插入图片描述

注:这里提示The connection to the server localhost:8080 was refused - did you specify the right host or port?是正常的,因为我们仅仅安装了命令行工具(客户端),还没有安装Kubernetes集群(服务端)。

2.2. kind

kind是一个在本机上运行Kubernetes的工具。

使用二进制文件的形式安装kind:

[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64

注:最新版本可查看https://github.com/kubernetes-sigs/kind/releases。

chmod +x ./kind 
sudo mv ./kind /usr/local/bin/kind
kind version

2.3. minicube(供参考)

minicube跟kind类似,同样是一个在本机上运行Kubernetes的工具,因为测试网络提供的脚本只支持使用kind,所以仅供参考。

使用二进制文件的形式安装minicube:

curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start
minikube stup

三、使用

kind在创建集群的时候会直接使用当前的环境变量中有关代理的参数(http_proxy、https_proxy等)。特别要注意的是,环境变量中的这些参数不能使用127.0.0.1的IP,这是因为KIND 节点是Docker容器,而容器内的127.0.0.1指向容器本身,而非宿主机。

因此,首先将网络代理中的IP修改为宿主机的IP:

在这里插入图片描述

打开一个新的终端,使用env命令确认环境变量已正确设置。

进入k8s测试网络的目录:

cd hyfa/fabric-samples/test-network-k8s/

为了复用已准备好的镜像文件和二进制文件,做如下准备:

docker tag hyperledger/fabric-peer:2.5.12 hyperledger/fabric-peer:2.5
docker tag hyperledger/fabric-ca:1.5.15 hyperledger/fabric-ca:1.5
cp -r ../bin ./

创建一个KIND的集群:

./network kind

在这里插入图片描述

KIND集群初始化:

./network cluster init

在这里插入图片描述

启动测试网络,创建通道并部署basic链码:

./network up

在这里插入图片描述

./network channel create

在这里插入图片描述

./network chaincode deploy asset-transfer-basic ../asset-transfer-basic/chaincode-java

停止KIND集群:

./network unkind

在这里插入图片描述

四、报错

错误1

KIND集群初始化时提示如下错误:
Waiting for deployment "cert-manager" rollout to finisd

在这里插入图片描述

查看"cert-manager"下的Pods:

kubectl get pods -n cert-manager

在这里插入图片描述

进一步打开"cert-manager"下Pods的详细信息:

kubectl describe pod -n cert-manager

在这里插入图片描述

找到"Events":

在这里插入图片描述

手动获取缺失的镜像并加载:

docker pull quay.io/jetstack/cert-manager-controller:v1.6.1
docker pull quay.io/jetstack/cert-manager-webhook:v1.6.1
docker pull quay.io/jetstack/cert-manager-cainjector:v1.6.1
kind load docker-image quay.io/jetstack/cert-manager-controller:v1.6.1 --name kind
kind load docker-image quay.io/jetstack/cert-manager-webhook:v1.6.1 --name kind
kind load docker-image quay.io/jetstack/cert-manager-cainjector:v1.6.1 --name kind

在这里插入图片描述

再一次查看"cert-manager"下的Pods:

kubectl get pods -n cert-manager

在这里插入图片描述

错误2

KIND集群初始化时提示如下错误:
timed out waiting for the conditon on pod/ingress-nginx-controller

在这里插入图片描述

查看"ingress-nginx"下的Pods:

kubectl get pods -n ingress-nginx

在这里插入图片描述

进一步打开"cert-manager"下Pods的详细信息:

kubectl describe pod -n ingress-nginx

找到"Events",手动获取缺失的镜像并加载:

kubectl describe pod -n ingress-nginx
docker pull k8s.gcr.io/ingress-nginx/controller:v1.1.2@sha256:28b11ce69e57843de44e3db6413e98d09de0f6688e33d4bd384002a44f78405c
docker pull k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
kind load docker-image k8s.gcr.io/ingress-nginx/controller:v1.1.2@sha256:28b11ce69e57843de44e3db6413e98d09de0f6688e33d4bd384002a44f78405c --name kind
kind load docker-image k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660 --name kind

网站公告

今日签到

点亮在社区的每一天
去签到