12.7. 启用 Fabric8 Karaf 健康检查
建议将 fabric8-karaf-checks
安装为启动功能。启用后,您的 Karaf 服务器可以公开 http://0.0.0.0:8181/readiness-check
和 http://0.0.0.0:8181/health-check
URL,供 Kubernetes 用于就绪度和存活度探测。
这些 URL 只有在满足以下条件时,才会以 HTTP 200 状态代码响应:
- OSGi 框架已启动。
- 所有 OSGi 捆绑包都已启动。
- 所有引导功能都已安装。
- 所有部署的 BluePrint 捆绑包都处于创建的状态。
- 所有部署的 SCR 捆绑包都处于 active、registered 或 factory 状态。
- 所有 Web 捆绑包都部署到 Web 服务器。
- 所有创建的 Camel 上下文都处于 started 状态。
流程
打开项目的
pom.xml
,并在startupFeatures
部分中添加fabric8-karaf-checks
功能。pom.xml
<startupFeatures> ... <feature>fabric8-karaf-checks</feature> ... </startupFeatures>
oc:resources
目标将检测您使用fabric8-karaf-checks
功能,并将 Kubernetes for readiness 和 liveness 探测自动添加到您的容器的配置中。
12.7.1. 配置健康检查
默认情况下,fabric8-karaf-checks
端点注册到在端口 8181
上运行的内置 HTTP 服务器引擎(Undertow)。为了避免在容器中运行 HTTP 进程的健康和就绪度检查请求被阻止,端点可以注册到单独的 Undertow 容器中。
这些检查可以通过设置以下属性在 etc/io.fabric8.checks.cfg
文件中配置:
-
httpPort
: 如果指定了此属性并且是有效的端口号,则readiness-check
和health-check
端点将注册到 Undertow 服务器的单独的实例中 -
readinessCheckPath
和healthCheckPath
属性允许您配置可用于就绪度和健康检查的实际 URI。默认情况下,这些值与前面的值相同。
这些属性可以在启动 Fuse-Karaf 后更改,但也可在 etc/io.fabric8.checks.cfg
文件中指定,该文件是希望拥有 fabric8-karaf-checks
功能的一部分,供希望使用 fabric8-karaf-checks 功能。
以下示例演示了在 etc/io.fabric8.checks.cfg
文件中配置健康和就绪属性:
示例
httpPort = 8182 readinessCheckPath = /readiness-check healthCheckPath = /health-check