gpt4 book ai didi

postgresql - kubernetes pod 可以动态更改自己的标签吗?

转载 作者:行者123 更新时间:2023-11-29 11:37:18 24 4
gpt4 key购买 nike

我正在尝试使用 repmgr 在主备模式下设置一个 postgresql 集群,我正在考虑如何正确地将流量重定向到“主要”广告连播。

我的直觉是使用一个标签来“突出显示”主 pod,并依靠服务对象的标签选择器将集群 IP 与其“绑定(bind)”。但这引出了一个问题:如何在故障转移后将标签从旧的主 pod“移动”到新的?

有没有办法让我在我的 pod 定义 yaml 中注册一个自定义脚本来定期检查 pod 的角色并根据结果更改 pod 标签?

你们知道这种方法可行吗?或者也许已经有一个敏锐的解决方案可以处理我的情况?

最佳答案

  • StatefulSets 就是答案!

我引用自官方Kubernetes Docs

Like a Deployment , a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling.

还有更多

StatefulSets are valuable for applications that require one or more of the following.

1. Stable, unique network identifiers.
2. Stable, persistent storage.
3. Ordered, graceful deployment and scaling.
4. Ordered, automated rolling updates.

我相信,第 1 点对你来说更重要(根据你的问题)。 StatefullSets 也维护生成 pod 的顺序。前段时间在K8s上做Redis Cluster部署,记错了还是repo,不过他们用了容器里的一些脚本来确定Redis Master。由于 StatefullSet 维护了生成的顺序,所以很容易让第一个生成的 pod 成为 master。再一次,请引用文档直到最后,以及任何关于这个概念的博客。

甚至更多

Stable Network ID

Each Pod in a StatefulSet derives its hostname from the name of the StatefulSet and the ordinal of the Pod. The pattern for the constructed hostname is $(statefulset name)-$(ordinal)

由于 n/w ID 稳定,pod 的 DNS 名称永远不会改变

我建议将您的 postgress 集群部署为 StatefullSet。请引用以下链接以了解一些想法

关于postgresql - kubernetes pod 可以动态更改自己的标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52830336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com