我有一个带有Java8的spring-boot应用程序,并且在kubernetes上部署了相同的5个副本。应用程序中正在运行多个线程。 因此,在终止应用程序之前,我想将线程中存在的数据发送到kafka主题,以便其他应用程序可以处理它。
为实现这一点,我在部署yaml中定义了prestop httpget调用以及5min的终止GracePeriodSeconds。
containers:
lifecycle:
preStop:
httpGet:
path: /shutDown
port: 8080
readinessProbe:
exec:
command:
- ls
- '/tmp'
initialDelaySeconds: 5
periodSeconds: 15
livenessProbe:
exec:
command:
- ls
- '/tmp'
initialDelaySeconds: 5
periodSeconds: 15
terminationGracePeriodSeconds: 300
但是,有时会调用pre-stop并正确处理所有数据。吊舱会正常关闭。
,在某些情况下,吊舱会立即被删除。