Mic*_*ang 5 postgresql kubernetes
我正在尝试使用repmgr在主备用模式下设置 postgresql 集群,并且我正在考虑如何正确地将流量重定向到“主”pod。
我的直觉是使用一个标签来“突出显示”主 pod,并依靠服务对象的标签选择器将集群 IP 与其“绑定”。但这引出了一个问题:如何在故障转移后将标签从旧的主 Pod“移动”到新的?
有没有办法让我在我的 pod 定义 yaml 中注册一个自定义脚本来定期检查 pod 的角色并根据结果更改 pod 标签?
大家知道这个方法可行吗?或者也许已经有一个尖锐的解决方案可以处理我的情况?
StatefulSets就是答案!我引用的是Kubernetes 官方文档
与 Deployment 类似,StatefulSet 管理基于相同容器规范的 Pod。与 Deployment 不同,StatefulSet 为其每个 Pod 维护一个粘性身份。这些 Pod 是根据相同的规范创建的,但不可互换:每个 Pod 都有一个在任何重新调度过程中都会维护的持久标识符。
甚至更多
StatefulSet 对于需要以下一项或多项的应用程序非常有价值。
Run Code Online (Sandbox Code Playgroud)1. Stable, unique network identifiers. 2. Stable, persistent storage. 3. Ordered, graceful deployment and scaling. 4. Ordered, automated rolling updates.
我相信,第一点对你来说更重要(根据你的问题)。StatefullSet 也维护生成 pod 的顺序。不久前,我在 K8s 上进行 Redis 集群部署,我记错了,或者是 repo,但他们使用了容器中的一些脚本来确定 Redis Master。由于 StatefullSet 维护了生成的顺序,因此很容易使第一个生成的 pod 成为 master。再次强调,请参考文档直至最后以及有关此概念的任何博客。
甚至更多
稳定的网络ID
StatefulSet 中的每个 Pod 都从 StatefulSet 的名称和 Pod 的序号中派生出其主机名。构造的主机名的模式是 $(statefulset name)-$(ordinal)
由于n/w ID稳定,pod的DNS名称永远不会改变
我建议将 postgress 集群部署为 StatefullSet。请参考下面的链接来了解一些想法
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |