GKE RollingUpdate停机

时间:2019-03-19 00:43:55

标签: kubernetes google-kubernetes-engine

我正在尝试对部署进行滚动更新,但停机时间仍然约为2秒。我是否配置了Yaml?我也将大使用作API网关,但不能完全确定问题出在API网关还是部署中。

我编写了一个简单的shell脚本,该脚本每秒运行一次curl,并且使用此配置,我总是有大约2秒钟的停机时间。非常感谢您的帮助。

这是我的相关配置。

部署方法:

kubectl apply -f MY_DEPLOYMENT.yaml

部署摘要:

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: web-service-rf
spec:
  selector:
    matchLabels:
      app: web-service-rf
  replicas: 2 # tells deployment to run 2 pods matching the template
  strategy:
    rollingUpdate:
      maxSurge: 4
      maxUnavailable: 0%

活力与准备就绪调查:

  livenessProbe:
    httpGet:
      path: /health/liveness
      port: 80
    initialDelaySeconds: 5
    periodSeconds: 3
  readinessProbe:
    httpGet:
      path: /health/readiness
      port: 80
    initialDelaySeconds: 5
    periodSeconds: 5
    successThreshold: 1 

2 个答案:

答案 0 :(得分:1)

您认为YAML很好,我怀疑2秒钟的停机时间可能是由于TCP连接未能正确冲洗到要更换的Pod上。

您可以在容器中添加一个prestop钩子以确保在终止pod之前清空所有TCP连接吗?

答案 1 :(得分:0)

maxUnavailable应该是无法同时使用的广告连播数量,而不是这些广告连播的百分比。我的猜测是,通过在值上加上%,会导致解析错误。导致这种行为。