2. K8S 滚动升级怎么保证零宕机

此开源图书由ithaiq原创,创作不易转载请注明出处

  • k8s滚动升级原理

滚动更新策略可以细调超额运行的 Pods(maxSurge)和多少不可用的 Pods (maxUnavailable),一旦一个新的 Pod 还活着并且准备提供服务时,Kubernetes 就会将一个旧的 Pod 从 Service 中移除.具体操作是将 Pod 的状态更新为 Terminating,将其从 endpoints 对象中移除,并发送一个 SIGTERM 。SIGTERM 会导致容器以一种优雅的方式(需要应用程序能正确处理)关闭,并且不接受任何新的连接。在 Pod 被驱逐出 endpoints 对象后,负载均衡器将把流量路由到剩余的(新的)对象上

  • 优雅零宕机部署

  1. 容器要能正确处理终止信号,即进程会在 SIGTERM 上优雅地关闭

  2. SIGTERM 信号终止应用进程之前使用 preStop 钩子来等待 120 秒,并且同时 Kubernetes 将从 endpoints 对象中移除 Pod。这样可以确保在生命周期钩子等待期间,负载均衡器可以正确的刷新配置

  readinessProbe:
    exec:
      command: [ "/grpc-health-probe", "-addr=:port" ]
  livenessProbe:
    exec:
      command: [ "/grpc-health-probe", "-addr=:port" ]
  lifecycle:
    preStop:
      exec:
        command: [ "sh", "-c", "sleep 10" ]

最后更新于

这有帮助吗?