当前位置:   article > 正文

k8s就绪探测readinessProbe和存活探测livenessProbe_readinessprobe livenessprobe

readinessprobe livenessprobe

1、livenessProbe简介

存活指针,判断Pod(中的应用容器)是否健康,可以理解为健康检查。我们使用livenessProbe来定期的去探测,如果探测成功,则Pod状态可以判定为Running;如果探测失败,可kubectl会根据Pod的重启策略来重启容器。

如果未给Pod设置livenessProbe,则默认探针永远返回Success。

当我们执行kubectl get pods命令,输出信息中STATUS一列我们可以看到Pod是否处于Running状态。

2、readinessProbe简介

就绪指针,就绪的意思是已经准备好了,Pod的就绪我们可以理解为这个Pod可以接受请求和访问。我们使用readinessProbe来定期的去探测,如果探测成功,则Pod 的Ready状态判定为True;如果探测失败,Pod的Ready状态判定为False。

与livenessProbe不同的是,kubelet不会对readinessProbe的探测情况有重启操作。

当我们执行kubectl get pods命令,输出信息中READY一列我们可以看到Pod的READY状态是否为True。

3、readinessProbe使用场景

k8s应用更新虽然是滚动升级方式,但是很多后端程序启动都比较久,容器起来了,但是服务未起来,而k8s只要容器起来了就会移除掉旧的容器,这种情况就会导致在更新发版的时候应用访问失败。这时候就需要配置readinessProbe就绪检测,保证新的pod已经能正常使用了才会移除掉旧的pod。

4、livenessProbe使用场景

有些后端应用在出现某些异常的时候会有假死的情况,这种情况容器依然是running状态,但是应用是无法访问的,所以需要加入存活探测livenessProbe来避免这种情况的发生。

5、使用方法

  1. #readinessProbe就绪探测,用于判断容器是否启动完成
  2. readinessProbe:
  3. tcpSocket:
  4. port: 8080
  5. initialDelaySeconds: 5
  6. periodSeconds: 10
  7. #存活探测,用于判断容器是否存活(running状态)
  8. livenessProbe:
  9. tcpSocket:
  10. port: 8080
  11. initialDelaySeconds: 15
  12. periodSeconds: 20

6、使用例子

在加入就绪检测前,刚执行kubectl apply 更新就可以看到容器运行起来了,已经在移除旧的pod了

 加了就绪检测后,执行kubectl apply更新时候,新的pod启动一会,就绪检测没问题后才会把旧的pod移除掉

在nacos服务列表里也可以看到,在更新应用时,健康实例数是不变的。

 

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: mbo-gaas-portal #应用名称
  5. namespace: mbo
  6. labels:
  7. app: mbo-gaas-portal
  8. mbo: mbo-gaas-portal
  9. spec:
  10. selector:
  11. matchLabels:
  12. app: mbo-gaas-portal
  13. replicas: 2 #开启实例份数
  14. template:
  15. metadata:
  16. labels:
  17. app: mbo-gaas-portal
  18. mbo: mbo-gaas-portal
  19. spec:
  20. imagePullSecrets:
  21. - name: docker-pull-images
  22. containers:
  23. - name: mbo-gaas-portal #容器名称
  24. image: xxx.aliyuncs.com/mbo-uat/gaas-portal:v2021-12-24
  25. imagePullPolicy: Always
  26. ports:
  27. - name: http
  28. containerPort: 8080
  29. #readinessProbe就绪探测,用于判断容器是否启动完成
  30. readinessProbe:
  31. tcpSocket:
  32. port: 8080
  33. initialDelaySeconds: 5
  34. periodSeconds: 10
  35. #存活探测,用于判断容器是否存活(running状态)
  36. livenessProbe:
  37. tcpSocket:
  38. port: 8080
  39. initialDelaySeconds: 15
  40. periodSeconds: 20

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/247283
推荐阅读
  

闽ICP备14008679号