【问题标题】:Automatically associate clients to pods自动将客户端关联到 pod
【发布时间】:2018-12-04 08:54:25
【问题描述】:

是否可以让客户端始终连接到集群中的同一个数据库?我的意思是:我想要一个数据库池(所有数据库都具有相同的图像,但它们之间的数据独立)。然后,我想在集群中公开一个 IP 和端口。当客户端连接到此地址时,我希望 Kubernetes 自动将此客户端与集群内的全新数据库相关联。该数据库不应与任何其他客户端相关联。给定客户端始终连接到集群中的 IP 和端口时,它应该连接到同一个数据库。

如果有新的客户端访问该服务并且现在有新的数据库可用,我希望 k8s 自动创建一个新数据库并将其关联到客户端。

这是可能的还是纯粹的幻想?

提前致谢!

【问题讨论】:

    标签: database testing kubernetes cluster-computing replication


    【解决方案1】:

    我想这与您在 Exlusive client affinity 上的其他问题有关。您可以创建专门为特定客户端公开的数据库。但是您需要编写代码来动态创建它们,例如使用 Kubernetes API。我看不到任何 Kubernetes 功能来执行按需配置部分。 Kubernetes 可以在 Kubernetes 中自动扩展部署,但这与自动创建全新的部署完全不同。

    【讨论】:

    • 我知道 API 可以用来发送命令,如创建 Pod、列出 Deployments... 我如何使用 API 以便在访问 IP:port 时自动创建一个 pod?跨度>
    • 我认为您需要一个您定义的 Pod,它充当入口点并转发到适当的服务或根据需要使用 API 在其上创建
    • 我认为这可行。你能给我一个关于如何做的提示吗?这个想法是使用 psql 命令从客户端连接。因此,需要在 entrypoint pod 处建立 PostgreSQL 代理。你知道这样的代理吗?我找不到。
    • 是的,很棘手。我想您需要在ha-jdbc.org/source-repository.html 之类的基础上进行构建或扩展,如果您不需要无缝创建,那么您可以通过初步的 http 请求让客户说“告诉我哪个我可以使用的数据库'。然后,如果您需要创建一个,您可以这样做并回复地址以到达专用于该客户端的相应 Ingress/Service。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2014-04-17
    • 2021-06-04
    • 2013-11-06
    相关资源
    最近更新 更多