我需要Kafka的消费消息。应用程序部署在k8s pod中。如果我创建一些准备探测器来检查预初始化步骤是否完成,k8s是否能够控制消费在那之后开始消费?我知道准备探测器可以帮助控制在pod启动之前将外部请求分配到pod。但不确定它是否能够控制从pod发起的请求。
bvhaajcl1#
Kubernetes使用活动探测器和就绪探测器来确定Pod是否运行正常。如果活动探测器失败,Kubernetes将终止容器,并在相应设置了重新启动策略的情况下自动重新启动容器。如果就绪探测器失败,Kubernetes将从服务请求中删除Pod。但是,这并不一定意味着Kafka已经准备好使用消息。kafka不能使用消息,直到broker是unfenced。我建议您手动处理这个问题。
unfenced
jdg4fx2g2#
您先前标记了spring-kafka。您可以通过Actuator定义一个自定义的健康检查,Actuator使用Kafka AdminClient来确定Kafka集群/主题的健康状况,然后k8s将探测HTTP健康端点,以确定是否重新启动任何不健康的pod。但这与Kafka消费者的运行时执行无关,您需要在启动任何消费者线程之前显式地检查连接/健康状况。另外,还有许多集成了Kafka的无服务器k8工具,如Knative,它们也提供了消费者功能
2条答案
按热度按时间bvhaajcl1#
Kubernetes使用活动探测器和就绪探测器来确定Pod是否运行正常。如果活动探测器失败,Kubernetes将终止容器,并在相应设置了重新启动策略的情况下自动重新启动容器。如果就绪探测器失败,Kubernetes将从服务请求中删除Pod。但是,这并不一定意味着Kafka已经准备好使用消息。kafka不能使用消息,直到broker是
unfenced
。我建议您手动处理这个问题。jdg4fx2g2#
您先前标记了spring-kafka。
您可以通过Actuator定义一个自定义的健康检查,Actuator使用Kafka AdminClient来确定Kafka集群/主题的健康状况,然后k8s将探测HTTP健康端点,以确定是否重新启动任何不健康的pod。
但这与Kafka消费者的运行时执行无关,您需要在启动任何消费者线程之前显式地检查连接/健康状况。
另外,还有许多集成了Kafka的无服务器k8工具,如Knative,它们也提供了消费者功能