【问题标题】:Kubernetes Graceful Shutdown: Continue to serve traffic during terminationKubernetes Graceful Shutdown:在终止期间继续服务流量
【发布时间】:2020-10-15 11:13:32
【问题描述】:

这个问题是关于 Kubernetes 中的优雅关闭。

我有一组最终一致的服务器,并且要求它们中的每一个都不断地相互通信,即使某些服务器正在终止。

由于服务器通过 HTTP 请求进行通信,我需要确保终止服务器能够继续接收 HTTP 请求,以便将相关信息传递给其对等方。

根据我的理解,当服务器关闭时会同时发生一些事情:它将从服务的端点列表中删除,如果有 preStop 钩子,它将运行。最初我想如果我使用 preStop 处理程序并执行 sleep 命令,那么我可以让服务器继续服务器流量。但经过一些实验后,我意识到服务器甚至会在睡眠结束之前停止提供流量。

我想知道是否有任何方法可以配置服务器以在关闭时继续接收流量。

【问题讨论】:

  • 我很好奇它的具体用例是什么。你能详细说明一下吗?
  • 刚刚添加了用例!这是为了达成共识。

标签: kubernetes server yaml


【解决方案1】:

有没有办法在服务器正常关闭时仍然能够访问服务器?

是的,配置您的服务:

spec.publishNotReadyAddresses: true

然后,即使您的 pod 处于 Terminating 状态,它们也会收到流量,正如 Kubernetes docs 所解释的那样:

publishNotReadyAddresses,当设置为 true 时,表示 DNS 实现必须为与服务关联的端点发布子集的 notReadyAddresses。默认值为假。设置此字段的主要用例是使用 StatefulSet 的 Headless Service 为其 Pod 传播 SRV 记录,而不考虑它们是否已准备好用于对等发现。

请注意spec.publishNotReadyAddresses only works in Kubernetes v1.11+。 在较旧的集群中,使用service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" 注释获取similar behaviour

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2021-10-27
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多