0

我们计划使用 Kubernetes,我正在验证它是否以及如何满足我们的要求。一个问题如下:我想构建一个应用程序/pod,它连接到互联网上的某个服务(主机和端口),只要我们需要它就保持套接字处于活动状态(通常是永远)。应用程序将连接到的套接字数量可能会有所不同。对于 Pod 间的通信,我们将使用 RabbitMQ。

为此目的,正确/最佳实践方法是什么?一个 pod 处理所有/多个套接字?处理多个套接字的复制豆荚?每个吊舱一个插座?如果套接字数量发生变化,我该如何应对?

目前我们想为我们的 CI 管道使用 gitlab-ci 和 helm。

4

1 回答 1

1

kubernetes 部署 Pods,有两个抽象:Deployments 和 StatefulSets。前者部署主机名和 IP 发生变化的临时 Pod。后者保留状态。

如果您仅为此应用程序部署 kubernetes,那么恕我直言,这太过分了。我宁愿使用普通的 Docker 或比 Kubernetes 更简单的编排器,例如 Docker Swarm Mode 或 Kontena。

如果 Kubernetes 是您唯一的选择,您可以将应用程序部署为 StatefulSet。这样,它的主机名将在重新启动之间保持不变。让应用程序监控其主机名并连接到适当的端点。例如,app-1Pod 连接到endpoint:10001app-2Pod 连接到endpoint:10002,等等......

当需要更多的 Pod 连接更多的 socket 时,要么手动增加 StatefulSet 的副本,要么编写一个 sidecar 应用来监控 no。套接字和自动上/下副本。

于 2017-07-19T10:21:16.787 回答