【问题标题】:Health Check on Fabric CAFabric CA 的健康检查
【发布时间】:2022-08-17 23:36:26
【问题描述】:
我有一个 hyperledger 结构网络 v2.2.0,在 kubernetes 集群中部署了 2 个对等组织和一个排序组织。每个组织都有自己的 CA 服务器。 CA pod 有时会不断重启。为了知道CA服务器的服务是否可达,我尝试在端口9443上使用healthz API。
我在 CA 部署中使用了 livenessProbe 条件,如下所示:
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 9443
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
配置此活动探测后,Pod 会继续以事件Liveness probe failed: HTTP probe failed with status code: 400 重新启动。为什么会发生这种情况?
标签:
hyperledger-fabric-ca
【解决方案1】:
HTTP 400 code:
HTTP 400 Bad Request 响应状态代码表示服务器不能或不会处理请求,因为某些东西被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由)。
这表明 Kubernetes 正在以 hyperledger 拒绝的方式发送数据,但是如果没有更多信息,很难说问题出在哪里。一些快速检查开始:
- 自己直接向
hyperledger/healthz资源发送一些GET请求。你得到了什么?如果一切正常,您应该返回 200 "OK",或者返回 503 "Service Unavailable",其中包含哪些节点已关闭的详细信息 (docs)。
-
kubectl describe pod liveness-request。您应该看到底部的几行更详细地描述了 liveness 探测的状态:
Restart Count: 0
.
.
.
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned example-dc/liveness-request to dcpoz-d-sou-k8swor3
Normal Pulling 4m45s kubelet, dcpoz-d-sou-k8swor3 Pulling image "nginx"
Normal Pulled 4m42s kubelet, dcpoz-d-sou-k8swor3 Successfully pulled image "nginx"
Normal Created 4m42s kubelet, dcpoz-d-sou-k8swor3 Created container liveness
Normal Started 4m42s kubelet, dcpoz-d-sou-k8swor3 Started container liveness
其他一些需要调查的事情:
-
httpGet 可能有用的选项:
- 您可能需要有效的客户端证书(如果启用了 TLS,并且
clientAuthRequired 设置为 true)。