【问题标题】:Is it possible to take pods directly offline in kubernetes loadbalancer是否可以在 kubernetes 负载均衡器中直接使 Pod 脱机
【发布时间】:2020-02-06 21:18:02
【问题描述】:

我有一个应用程序在负载均衡器后面的三个 pod 上运行,所有这些都使用 Kubernetes 设置。我的问题是,当我关闭或更新 Pod 时,这会在负载均衡器注意到 Pod 不可用并停止向其发送流量之前导致几个 503 秒。有什么方法可以直接通知负载均衡器它应该停止向 Pod 发送流量?所以我们可以避免 pod update 的 503s

【问题讨论】:

    标签: kubernetes load-balancing


    【解决方案1】:

    您需要记住,如果 pod 关闭,负载均衡器仍会将流量重定向到指定的服务端口,并且没有 pod 为这些端口提供服务。

    因此,您应该在 kubernetes 中使用滚动更新机制,这可以使部署的停机时间为零。 link

    【讨论】:

      【解决方案2】:

      由于负载均衡器后面运行了 3 个 pod,我相信您必须使用 Deployment/Statefulset 来管理它们。

      如果更新 pod 是指更新 pod 中运行的 docker 镜像版本,那么您可以使用 Update strategies in Deployment 进行滚动更新。这将以零停机时间更新您的 pod。

      此外,您还可以使用 startup, readiness and liveness probe 仅在 Pod 准备好/上线以提供流量时将流量引导到 Pod。

      【讨论】:

      • 是的,我正在使用部署,并且正在使用 set image 命令推出更新。这提供了几乎为零的停机时间,但不是实际的零停机时间 - 我仍然看到一些请求来自返回 503。我想要的是能够在 Pod 实际关闭之前将其标记为离线。
      • 在这种情况下,您可以使用 Pod Eviction Lifecycle。当 kubelet 被要求删除一个 pod 时,它会执行 pre-stop 钩子,并在实际发送 TERM 信号或删除 pod 之前等待宽限期秒(默认 30 秒)。在您的情况下,您需要编写一个 pre-stop 挂钩,它将停止接受任何新的传入连接后为当前连接提供服务。希望这会有所帮助
      • 谢谢,我会调查的:)
      【解决方案3】:

      您应该为 pod 实现探针。阅读Configure Liveness, Readiness and Startup Probes

      【讨论】:

        【解决方案4】:

        您可以使用readinessProbeLivenessProbes。在您的情况下,我认为您可以使用 readinessProbe,只有当您的 readinessProbe 通过时,kubernetes 才会开始向您的 Pod 发送流量。

        例如

        apiVersion: v1
        Kind: Pod
        metadata:
         name: my-nginx-pod
        spec:
         containers: 
         - name: my-web-server
           image: nginx
           readinessProbe:
            httpGet:
             path: /login
             port: 3000
        
        

        在上面这个例子中,nginx Pod 只会在它通过 readinessProbe 的情况下接收流量。

        你可以在这里找到更多关于探针的信息https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

        【讨论】:

        • 我有 - 但这并没有解决问题。在负载均衡器将其切断之前,我仍然会向 Pod 发送一些请求。问题是 pod 宕机/被标记为不健康,负载均衡器对此做出反应 - 因此在从池中删除 pod 之前它仍会发送几个请求。
        猜你喜欢
        • 2021-02-21
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多