播客准备和活跃度的外部依赖性



我是准备就绪和活跃度吊舱健康检查的新手。最近我正在做准备工作。场景如下:

pod是一个RestAPI服务,它需要连接到数据库并将信息存储在数据库中。所以,若RestAPI服务想要提供服务,它需要确保数据库连接成功。

Si在我们的pod Readiness逻辑实现中,我们使用HTTPGet并检查DB连接是否连接,如果连接正常,则HTTPGet返回Ok,否则Readiness将失败。

不确定上述逻辑是否合理?或者这种逻辑处理还有其他方法吗?

除了准备之外,Liveness怎么样?我需要检查数据库连接才能检查Liveness是否正常吗?

欢迎任何想法和建议

准备就绪活跃度主要用于在容器内运行的服务,可能会出现数据库已启动但应用程序出现问题的情况,而且当数据库运行时,您的就绪度启动,在理想的情况下,如果应用程序不工作,它应该停止接受流量。

我建议使用Init容器或生命周期挂钩来首先检查数据库的状况,如果数据库已启动,则流程将继续进行,您的应用程序或部署将进入画面。

如果应用程序运行良好,您的准备状态和活跃度将HTTP-OK,服务将开始接受流量。

初始化容器示例

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']

额外注释

实际上根本不需要检查数据库的准备情况。

由于您的应用程序将尝试连接数据库,因此如果DB而不是UP则您的应用程式不会响应HTTP-OK因此您的应用程序不会启动,并且应用程序的准备工作不断失败。

一旦您的数据库出现,您的应用程序将创建与DB的成功连接,它将给出200响应,就绪状态将标记POD就绪。

没有额外的要求来设置Db的准备状态并且基于该启动POD。

最新更新