个人 hostname/ip 的 Kubernetes Citus 设置

Kubernetes Citus setup with individual hostname/ip

我正在学习 Kubernetes 以期使用 Citus DB 设置一个简单的集群,但我在进行过程中遇到了一些麻烦,因此非常感谢您的帮助。

我有一个 docker 映像,其中包含为项目的 Citus 配置的基本 debian 映像,此时我想用一个主服务器设置它,它应该挂载一个带有 Postgres 的 GCP 主磁盘然后我将在其他容器中分发的数据库,每个容器都安装了一个单独的磁盘,其中包含空表(配置了 Citus 扩展)以保存分发给每个容器的内容。我想在某个时候进一步自动化它,但现在我的目标只是一个主容器和八个节点。我的计划是创建一个部署,在每个节点上打开端口 5432 和 80,并且我认为我可以创建两个 pods,一个用于容纳 master,一个用于容纳八个节点。理想情况下,我想挂载所有磁盘,然后 运行 主服务器上的 post-mount 脚本将找到所有节点容器(通过 IP 或主机名??),将它们添加为 Citus 节点, 然后 运行 create_distributed_table 分发数据。

我目前的困惑是如何标记所有单独的节点,以便它们保留其内部地址或主机名,因此在一个发生故障的情况下,它将被替换并恢复为 PD 上的数据。我已经阅读了有关 ConfigMaps 和设置主机名别名的信息,但我仍然不清楚如何进行。这是可能的,还是这种设置的错误方法?

您正在寻找 StatefulSet。这让您拥有已知数量的 pod 副本;带有附加存储(PersistentVolumes);和一致的 DNS 名称。在 pod 规范中,我将只启动服务器的单个副本,并使用 StatefulSet 的副本计数来控制 "nodes"(也是 Kubernetes 术语)的数量,如果副本是 #0 那么它就是主服务器。