环境准备

  • 三台ubuntu22.04主机(分别为ubuntu:192.168.3.54worker1:192.168.3.57worker2:192.168.3.58
  • 安装docker,kubernetes
  • 三台主机加入同一kubernetes集群

创建区块链

  • 使用上篇文章《使用Docker容器化部署FISCO-BCOS区块链系统》中的第二个方法,在ubuntu这台主机上生成运行在三台主机上的区块链节点

  • 分别进入三个文件夹中,修改节点的配置信息,我这里以修改192.168.3.54主机上的节点信息为示例(若不进行修改,则之后无法在区块链浏览器中正确绑定区块链节点)

    • 进入192.168.3.54/node0文件夹,打开config.ini文件

    • jsonrpc_listen_ip这一项从127.0.0.1更改为对应的主机ip,我这里是192.168.3.54

  • 在worker1和worker2主机上都新建fisco/nodes文件夹,并将ubuntu主机上生成的192.168.3.57文件夹192.168.3.58文件夹分别拷贝到这两台主机的fisco/nodes文件夹下

新建k8s配置文件

  • 在ubuntu主机上新建名为my-pod.yaml的kubernetes配置文件,该文件用于启用ubuntu主机上的区块链节点,配置文件内容如下

    apiVersion: v1kind: Podmetadata:name: 54-node0spec:nodeName: ubuntuhostNetwork: truecontainers:- name: 54-node0image: fiscoorg/fiscobcos:v2.9.1args: ["-c", "config.ini"]workingDir: /dataports:- containerPort: 30300- containerPort: 20200- containerPort: 8545volumeMounts:- name: fisco-volumemountPath: /datavolumes:- name: fisco-volumehostPath:path: /home/qudoudou/fisco/nodes/192.168.3.54/node0type: Directory
  • 新建名为worker1-pod.yaml的kubernetes配置文件,该文件用于启用worker1主机上的区块链节点,配置文件内容如下

    apiVersion: v1kind: Podmetadata:name: 57-node1spec:nodeName: worker1hostNetwork: truecontainers:- name: 57-node1image: fiscoorg/fiscobcos:v2.9.1args: ["-c", "config.ini"]workingDir: /dataports:- containerPort: 30300- containerPort: 20200- containerPort: 8545volumeMounts:- name: fisco-volumemountPath: /datavolumes:- name: fisco-volumehostPath:path: /home/qudoudou/fisco/nodes/192.168.3.57/node0type: Directory
  • 新建名为worker2-pod.yaml的kubernetes配置文件,该文件用于启用worker2主机上的区块链节点,配置文件内容如下

    apiVersion: v1kind: Podmetadata:name: 58-node2spec:nodeName: worker2hostNetwork: truecontainers:- name: 58-node2image: fiscoorg/fiscobcos:v2.9.1args: ["-c", "config.ini"]workingDir: /dataports:- containerPort: 30300- containerPort: 20200- containerPort: 8545volumeMounts:- name: fisco-volumemountPath: /datavolumes:- name: fisco-volumehostPath:path: /home/qudoudou/fisco/nodes/192.168.3.58/node0type: Directory
  • 注意:以上三个配置文件可以写在同一个文件中。配置文件里hostNetwork: true表示启动的pod会使用宿主机网络的命名空间,因此k8s集群外的服务可以直接用机器ip+port的方式来获取区块链的信息,方便后续的使用。同时配置文件里还创建了一个路径为/home/qudoudou/fisco/nodes/192.168.3.58/node0的挂载,将该区块链节点的文件夹挂载到pod里,之后pod产生的数据就会存储在该文件夹里,这里的路径需要根据第一步拷贝区块链节点时的位置而定

启动区块链节点

使用kubectl apply -f my-pod.yamlkubectl apply -f worker1-pod.yamlkubectl apply -f worker2-pod.yaml三条语句启动区块链节点

  • 使用kubectl get pod查询三个节点是否都启动成功

  • 进入ubuntu主机的fisco文件夹,使用tail -f nodes/192.168.3.54/node0/log/log* | grep connected命令查看ubuntu主机上的节点与其他两台机器上的节点的连接情况,发现连接数量为2,证明三个节点都成功上链

查看区块链信息

  • 启动区块链浏览器,配置群组和节点

  • 成功连接上三台机器上的节点,对节点进行HelloWorld合约的部署等操作后,可以在区块链浏览器里成功观测到交易数量等信息发生改变