环境准备
- 三台ubuntu22.04主机(分别为ubuntu:192.168.3.54;worker1:192.168.3.57;worker2: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: v1 kind: Pod metadata: name: 54-node0 spec: nodeName: ubuntu hostNetwork: true containers: - name: 54-node0 image: fiscoorg/fiscobcos:v2.9.1 args: ["-c", "config.ini"] workingDir: /data ports: - containerPort: 30300 - containerPort: 20200 - containerPort: 8545 volumeMounts: - name: fisco-volume mountPath: /data volumes: - name: fisco-volume hostPath: path: /home/qudoudou/fisco/nodes/192.168.3.54/node0 type: Directory
-
新建名为worker1-pod.yaml的kubernetes配置文件,该文件用于启用worker1主机上的区块链节点,配置文件内容如下
apiVersion: v1 kind: Pod metadata: name: 57-node1 spec: nodeName: worker1 hostNetwork: true containers: - name: 57-node1 image: fiscoorg/fiscobcos:v2.9.1 args: ["-c", "config.ini"] workingDir: /data ports: - containerPort: 30300 - containerPort: 20200 - containerPort: 8545 volumeMounts: - name: fisco-volume mountPath: /data volumes: - name: fisco-volume hostPath: path: /home/qudoudou/fisco/nodes/192.168.3.57/node0 type: Directory
-
新建名为worker2-pod.yaml的kubernetes配置文件,该文件用于启用worker2主机上的区块链节点,配置文件内容如下
apiVersion: v1 kind: Pod metadata: name: 58-node2 spec: nodeName: worker2 hostNetwork: true containers: - name: 58-node2 image: fiscoorg/fiscobcos:v2.9.1 args: ["-c", "config.ini"] workingDir: /data ports: - containerPort: 30300 - containerPort: 20200 - containerPort: 8545 volumeMounts: - name: fisco-volume mountPath: /data volumes: - name: fisco-volume hostPath: path: /home/qudoudou/fisco/nodes/192.168.3.58/node0 type: Directory
-
注意:以上三个配置文件可以写在同一个文件中。配置文件里hostNetwork: true表示启动的pod会使用宿主机网络的命名空间,因此k8s集群外的服务可以直接用机器ip+port的方式来获取区块链的信息,方便后续的使用。同时配置文件里还创建了一个路径为/home/qudoudou/fisco/nodes/192.168.3.58/node0的挂载,将该区块链节点的文件夹挂载到pod里,之后pod产生的数据就会存储在该文件夹里,这里的路径需要根据第一步拷贝区块链节点时的位置而定
启动区块链节点
使用kubectl apply -f my-pod.yaml、kubectl apply -f worker1-pod.yaml、kubectl 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合约的部署等操作后,可以在区块链浏览器里成功观测到交易数量等信息发生改变
-
-
- 使用kubectl get pod查询三个节点是否都启动成功
-
-
-