我正在学习Kubernetes,以期使用Citus DB建立一个简单的集群,并且在使事情进展方面遇到了一些麻烦,因此感谢您的帮助。
我有一个包含为该项目的Citus配置的基本debian镜像的docker镜像,并且我想在此时使用一个主镜像进行设置,该镜像应将一个GCP主磁盘与一个Postgres DB一起安装,然后在其中分发其他容器,每个容器装有一个单独的磁盘,该磁盘带有空表(已配置Citus扩展名),用于存放分发给每个容器的内容。我想在某个时候进一步使它自动化,但是现在我的目标是仅一个主容器和八个节点。我的计划是创建一个在每个节点上打开端口5432和80的部署,我认为我可以创建两个Pod,一个用于容纳主节点,一个用于容纳八个节点。理想情况下,我想挂载所有磁盘,然后在主服务器上运行后挂载脚本,该脚本将找到所有节点容器(按IP或主机名?),将它们添加为Citus节点,然后运行create_distributed_table分发数据。
目前,我的困惑是如何标记所有单个节点,以便它们保留其内部地址或主机名,因此如果发生故障,它将被替换并恢复PD上的数据。我已经阅读了有关ConfigMaps和设置主机名别名的信息,但是我仍然不清楚如何继续。这可能吗,或者这是进行这种设置的错误方法吗?
最佳答案
您正在寻找StatefulSet。这样一来,您便拥有已知数量的Pod副本。带有附加存储(PersistentVolumes);和一致的DNS名称。在pod规范中,我将只启动服务器的单个副本,并使用StatefulSet的副本计数来控制“节点”(也是Kubernetes术语)的数量,如果副本为#0,则它是主副本。