Kubernetes 零停机时间重新部署与探测器
Kubernetes zero downtime redeploy with probes
我正在尝试实现零停机部署过程,但它不起作用。
我的部署有一个副本。 pod 探针如下所示:
livenessProbe:
httpGet:
path: /health/live
port: 80
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /health/ready
port: 80
initialDelaySeconds: 15
periodSeconds: 20
部署期间,访问 pod returns503 至少 10 秒。我的问题:
- 可能出了什么问题?
- 我该如何调试它?
- 我在哪里可以看到来自正在探测我的服务的服务的日志?
运行 describe
在 pod 上我得到:
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
除了探测之外,您还需要在 Deployment
中使用 RollingUpdate 策略:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 1
有趣的全局示例here
问题出在
kind: Service
spec:
type: ClusterIP
selector:
app: maintenance-api
version: "1.0.0"
stage: #{Release.EnvironmentName}#
release: #{Release.ReleaseName}#
如果选择器是像#{Release.ReleaseName}#这样的东西,它会改变每个版本,那么它就像找不到旧的 pod,所以当版本开始时,服务与 pod 断开连接,并且只有在新 pod 完成部署之后服务将开始重定向到它。
我正在尝试实现零停机部署过程,但它不起作用。
我的部署有一个副本。 pod 探针如下所示:
livenessProbe:
httpGet:
path: /health/live
port: 80
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /health/ready
port: 80
initialDelaySeconds: 15
periodSeconds: 20
部署期间,访问 pod returns503 至少 10 秒。我的问题:
- 可能出了什么问题?
- 我该如何调试它?
- 我在哪里可以看到来自正在探测我的服务的服务的日志?
运行 describe
在 pod 上我得到:
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
除了探测之外,您还需要在 Deployment
中使用 RollingUpdate 策略:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 1
有趣的全局示例here
问题出在
kind: Service
spec:
type: ClusterIP
selector:
app: maintenance-api
version: "1.0.0"
stage: #{Release.EnvironmentName}#
release: #{Release.ReleaseName}#
如果选择器是像#{Release.ReleaseName}#这样的东西,它会改变每个版本,那么它就像找不到旧的 pod,所以当版本开始时,服务与 pod 断开连接,并且只有在新 pod 完成部署之后服务将开始重定向到它。