修改日期 | 修改人 | 备注 |
2022-06-09 14:03:09[当前版本] | 尹紫娟 | 更新数据 |
2022-06-09 13:58:22 | 尹紫娟 | 更新数据 |
2021-07-23 18:10:58 | 姜天雨 | 创建版本 |
Qubernetes 是一个用于生成 GoQuorum 网络资源、 Kubernetes GoQuorum 资源以及管理 GoQuorum Kubernetes 部署并与之交互的项目。
Qubernetes 具有启用快速设置和易用性的默认设置。 Qubernetes 可针对更高级的 Kubernetes 部署进行定制。例如,具有可配置的入口、网络策略、安全环境和存储 量 大小。 Qubernetes 包括对 Cakeshop 、监控和验收测试的支持。
运行 qubernetes docker 容器时,必须使用 -v标志将最小配置文件和 out目录挂载到容器中。容器退出后,生成的资源已安装在out主机上的目录中。
使用 Qubernetes 容器生成 GoQuorum 和 K8s 资源的示例:
Qubernetes 将配置实现为代码,并运行名为 qubernetes.yaml或 qubernetes-generated.yaml的最小配置文件。 可以创建和修改配置文件:
手动
使用 qctl 命令行工具。 qctl使用户能够生成和操作配置文件。
单个集群部署的最小配置文件示例包括创世文件以及集群中每个节点所需的参数。 节点之间的共识和版本可以根据 Kubernetes 中运行的内容进行更改。 每个节点代表一个部署,管理一个 Pod (即 Kubernetes 中的最小单元)。 每个节点用于为 GoQuorum 生成必要的配置文件。 例如permissioned-nodes.json, static-nodes.json, istanbul-validator.toml,加载账户值,设置测试合约。
最小配置的nodes部分表示在单个集群中运行的节点。 在单个集群中运行节点时,该节点定义:
集群中节点的键
要使用的版本
在哪里获取 docker 镜像
共识
qctl 命令行工具
qctl是一个 golang 命令行工具,用于创建和操作最小配置,并与正在运行的 Kubernetes 网络进行交互。
遵循 Unix 哲学,这些命令有意只做一件事。 将命令添加到脚本中以自动完成网络创建和其他任务。
多集群网络支持高可用性并连接不同的业务部门和公司。 下面概述了使用 Qubernetes 管理和启用跨集群 GoQuorum Kubernetes 部署的初始方法。
minimal configuration 的nodes部分表示在单个集群中运行的节点。
外部节点
外部节点是集群外部节点的多集群概念。 外部节点需要网络路由到必要的服务(GoQuorum p2p 和 Tessera p2p ),如果使用istanbul 共识,则需要节点地址。 添加外部节点时,必须通过K8s_Node_IP:Node_Port外部集群向外界暴露一个pod来获取这些信息。
qctl 命令用于导出添加外部节点所需的信息。 在部署节点之前,无法始终知道所需的信息。 例如,端口由 Kubernetes 提供,并且在部署节点之前无法知道。
要添加外部节点,必须有一个初始集群在运行。 此示例假设两个实体管理自己的 Kubernetes 集群 A 和 B 。
1. A 启动初始集群并部署其初始节点。
2. 集群运行后, A 运行qctl 以外部格式获取其集群节点。
3. A 通过复制和粘贴上一个命令的输出以及与 B 的 genesis.json 来共享外部节点信息。
4. B 使用内部节点和由其集群拥有的节点生成其初始 Qubernetes 配置文件。
B 将 A 的外部节点添加到他们的配置文件中,以及从 A 获取的 genesis.json 到他们的配置中,并重新生成 Kuberenetes 网络资源。
6. B 部署网络。 网络已启动但无法连接到 A ,因为 A 尚未添加来自 B 的外部节点。
7. B 运行 qctl 从其运行的集群中获取外部节点信息。
8. B 通过复制和粘贴上述输出并将其发送给 A ,与 A 共享其外部节点。
9. A 将来自 B 的外部节点信息添加到 A 配置文件中。
A 的更新配置 :
10. A 为 Kubernetes 网络资源生成更新。 更新保持当前节点不变,只生成差异,并根据需要更新配置文件。
11. A 将更新后的资源部署到其集群。
集群现在可以连接,并且有一个跨越多个集群的 GoQuorum Kubernetes 网络。
Kubernetes 中的命名空间是同一个正在运行的 Kubernetes 实例中的一个隔离集群。 您可以通过 NodePort 服务公开服务来跨命名空间添加节点。
A NodePort service in Kubernetes 通过 K8s_Node_IP:Node_Port 将 pod 暴露给外界。
NodePort 直到部署时才知道。 在部署 GoQuorum 集群时, NodePort 已分配,可从 Kubernetes 获取。
节点端口表示为对 <Internal_Port:External_Port>。 在下面的示例中,8545表示集群使用的内部端口,31346表示外部端口。
要通过 NodePort 访问服务,还必须知道 Kubernetes 节点 IP 。 Kubernetes 节点 IP 是运行 Kubernetes 节点的主机。