-
Notifications
You must be signed in to change notification settings - Fork 0
39 kubernetes无感知部署服务
Jinxin Chen edited this page Dec 11, 2019
·
1 revision
本文介绍在kubernetes环境下如何不停机部署服务
虽然kubernetes的deployment可以滚动更新,但是当一个新的pod建立,及旧的pod删除时,如果此时正好有请求到旧的pod,则会被返回一个错误。
对于一个即将被删除的pod来说,需要满足如下条件:
- 不再接收新的请求
- 已经接收的请求要执行完毕
对于第1点,可以用readinessProbe来解决:
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 2
periodSeconds: 1
对于第2点,可以用preStop来解决:
lifecycle:
preStop:
exec:
command:
- sleep
- "10"
对于需要较长时间来启动的服务来说,可以通过readinessProbe参数来保证服务启动完成之后才开始处理请求,从而避免启动完成之前请求到来而出现错误。