我在使用 Docker (DinD) 部署在 Kubernetes 中的 Fabric 网络 (v2.2.2) 中遇到问题。当我执行“对等链码查询...”时,返回 500 错误:
Error: endorsement failure during query. response: status:500 message:"error in simulation: transaction returned with failure: Unexpected error"
但我在对等节点中找不到任何日志(只有一个显示 200 的 GET 条目)。我也找不到链代码 Pod 的任何位置...如何找到链代码运行的 Pod? (或者任何其他查看日志的替代方式......不是 Kubernetes,不是 Docker)。 Java 链代码已由 Hyperledger Bevel 正确安装、批准和提交,我可以执行对等链代码调用命令(并且我看到通道“高度”增加,因此区块链正在更新。我只是无法查询。我怀疑它是我正在查询的特定方法的代码问题,但我看不到除 500 之外的任何信息。我应该查找该实例什么?(Docker pod 也没有显示任何日志)
答案非常简单,一旦你意识到 DinD(Docker in Docker)与 Kubernetes 完全隔离,那么 Kubernetes 集群永远不会知道 docker 内部创建的 docker 的任何信息。它永远不会显示为 Pod 或容器。它们不是 Pod。 只需在 docker pod 中输入“kubectl exec...”并执行“docker ps”即可查看正在运行的 docker。然后“docker log...”将显示特定 docker 上的日志(在我的例子中运行 Java Chaincode 的那个)