Kubernetes检查Pod是否失败

时间:2018-12-24 11:06:37

标签: kubernetes apache-kafka ping pod spring-cloud-zookeeper

在我基于Kubernetes的集群中,我很少有基于Java的,Docker化的微服务,它们相互连接,因此每个人都相互发送和接收一些信息。我也有Kafka / Zookeeper集群,该集群再次连接到该微服务。我需要执行一些步骤,例如当我重新启动活动的Kafka pod时,另一个微服务应该理解它并重新启动自己。这该怎么做?请举个yml示例。

1 个答案:

答案 0 :(得分:1)

没有没有Kubernetes原生方式来完成您的工作。但是您可以使您的应用程序重新启动容器。

您可以从容器的livenessProbe获取帮助。

Kubernetes提供livenessProbe来检测您的应用程序是否存在。如果失败,活动性探测实际上将尝试重新启动容器

spec:
  containers:
  - name: liveness
    image: <image>
    livenessProbe:
      httpGet: # make an HTTP request
        port: 8080 # port to use
        path: /live # endpoint to hit
        scheme: HTTP # or HTTPS
      initialDelaySeconds: 3
      periodSeconds: 3
      failureThreshold: 1

现在,让您的应用在需要重启时返回200以外的值。

如果您可以从微服务中识别出您的kafka pod已重新启动,则您将通过/live http调用返回200以外的状态代码。

如果您想直接通过liveness探针调用kafka服务,请在httpGet下添加以下内容

httpGet:
  httpHeaders:
  - name: Host
    value: kafka-svc

现在,您的应用程序将调用kafka-svc.svc:8080/live

第二种方式:

您可以编写一个应用程序,该应用程序将使用kubernetes watch api 来监视您的 Kafka 播客,如果在Kafka播客中发现了任何重新启动,则可以将所有相关的播客重新启动为您需要。