在kubernetes(k8s)集群上部署FISCO BCOS区块链系统

慈云数据 2024-03-27 技术支持 55 0

环境准备

  • 三台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合约的部署等操作后,可以在区块链浏览器里成功观测到交易数量等信息发生改变

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon