我正在尝试实现零停机时间部署过程,但是它没有用。
我的部署有一个副本。 Pod探针如下所示:
livenessProbe:
httpGet:
path: /health/live
port: 80
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /health/ready
port: 80
initialDelaySeconds: 15
periodSeconds: 20
在部署期间,访问pod返回503至少10秒钟。我有问题:
在获得的豆荚上运行describe
:
Liveness: http-get http://:80/health/live delay=5s timeout=1s period=2s #success=1 #failure=3
Readiness: http-get http://:80/health/ready delay=5s timeout=1s period=2s #success=1 #failure=3
答案 0 :(得分:1)
问题出在
kind: Service
spec:
type: ClusterIP
selector:
app: maintenance-api
version: "1.0.0"
stage: #{Release.EnvironmentName}#
release: #{Release.ReleaseName}#
如果选择器像#{Release.ReleaseName}#这样会更改每个发行版,则找不到旧的Pod,因此当发行版开始时,服务与Pod断开连接,只有在新Pod完成部署后,服务才会开始重定向
答案 1 :(得分:0)
除了探测外,您还需要在Deployment
中使用RollingUpdate策略:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 1
有趣的全局示例here