Coup de Grace

K8s后日谈 健康检查

做完之后真是受益匪浅,起码学到个单词.

写死在项目里的一个服务起错名字后我才看清官方是 readin.

参考文档:


之前 k8s 里滚动升级服务会断,这按道理不应该的.

细细想一下一定是 jvm 应用还在启动导致的.

于是尝试--poll-interval形式,可是治标不治本.

于是得知了 k8s 健康检查相关

感兴趣的可以看一下configure-liveness-readiness-probes文档

我觉得说这个文档写的语焉不详不算过分吧..

只能自己来测试一下,同时我参考了一下prometheus写的相关健康检查部分

对我们的 Spring Boot 应用进行了实现.

根据文档添加spring-boot-starter-actuator

配置management.security.enabled=false

那么基本的/health就暴露出来了.

另外自己实现一个 rest 服务/readiness

实现内部考察一下内容:

那么:

写完这段之后配上去还是不对劲.

再读读文档,修改 yaml 如下:

readinessProbe:
  httpGet:
    path: /readness
    port: 8080
    scheme: HTTP
  timeoutSeconds: 3
  initialDelaySeconds: 180
  periodSeconds: 15
  successThreshold: 1
  failureThreshold: 3
livenessProbe:
  httpGet:
    path: /health
    port: 8080
    scheme: HTTP
  initialDelaySeconds: 180
  periodSeconds: 15
  timeoutSeconds: 3
  successThreshold: 1
  failureThreshold: 3

我掐表计时了一下,我们的应用在3核8G 情况下启动需要90秒.

测试一下部署 rc/scale/rolling-update 一切正常.


done.