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>
fabric8-maven-plugin:resources
目标将检测您使用fabric8-karaf-checks
功能,并将 Kubernetes 就绪度和存活度探测自动添加到您的容器的配置中。
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
功能在开箱即用状态的客户使用。
以下示例演示了 etc/io.fabric8.checks.cfg
文件中的健康和就绪属性的配置:
Example
httpPort = 8182 readinessCheckPath = /readiness-check healthCheckPath = /health-check