固定数量 pods 具有特定用途(套接字连接)
Fixed number of pods with a specific purpose (socket connection)
我们计划使用 kubernetes,我正在验证它是否符合我们的要求以及如何符合我们的要求。
一个问题是:
我想构建一个 application/pod,它连接到 Internet 上的某个服务(主机和端口),并在我们需要时(通常是永远)保持套接字处于活动状态。应用程序将连接到的套接字数量可能会有所不同。
对于 pod 间通信,我们将使用 RabbitMQ。
为了这个目的,correct/best 的练习方法是什么?
一个 pod 处理 all/multiple 个套接字?
复制 pods 处理多个套接字?
每个 pod 一个插槽?
如果套接字数量发生变化,我该如何反应?
目前我们想为我们的 CI 管道使用 gitlab-ci 和 helm。
kubernetes 部署 Pods 并有两个抽象:Deployments 和 StatefulSets。前者部署主机名和 IP 发生变化的临时 Pods。后者保留状态。
如果您要为此应用程序仅部署 kubernetes,恕我直言,这是一种矫枉过正的做法。我宁愿使用普通 Docker 或比 kubernetes 更简单的编排器,例如 Docker Swarm Mode 或 Kontena。
如果 kubernetes 是您唯一的选择,您可以将应用部署为 StatefulSet。这样它的主机名将在重新启动之间保留。让应用程序监控其主机名并连接到适当的端点。例如,app-1
Pod 连接到 endpoint:10001
,app-2
Pod 连接到 endpoint:10002
,依此类推...
当需要更多Pods连接到更多套接字时,要么手动增加StatefulSet的副本,要么编写一个sidecar应用程序来监控no。套接字和 up/down 副本自动。
我们计划使用 kubernetes,我正在验证它是否符合我们的要求以及如何符合我们的要求。 一个问题是: 我想构建一个 application/pod,它连接到 Internet 上的某个服务(主机和端口),并在我们需要时(通常是永远)保持套接字处于活动状态。应用程序将连接到的套接字数量可能会有所不同。 对于 pod 间通信,我们将使用 RabbitMQ。
为了这个目的,correct/best 的练习方法是什么? 一个 pod 处理 all/multiple 个套接字? 复制 pods 处理多个套接字? 每个 pod 一个插槽? 如果套接字数量发生变化,我该如何反应?
目前我们想为我们的 CI 管道使用 gitlab-ci 和 helm。
kubernetes 部署 Pods 并有两个抽象:Deployments 和 StatefulSets。前者部署主机名和 IP 发生变化的临时 Pods。后者保留状态。
如果您要为此应用程序仅部署 kubernetes,恕我直言,这是一种矫枉过正的做法。我宁愿使用普通 Docker 或比 kubernetes 更简单的编排器,例如 Docker Swarm Mode 或 Kontena。
如果 kubernetes 是您唯一的选择,您可以将应用部署为 StatefulSet。这样它的主机名将在重新启动之间保留。让应用程序监控其主机名并连接到适当的端点。例如,app-1
Pod 连接到 endpoint:10001
,app-2
Pod 连接到 endpoint:10002
,依此类推...
当需要更多Pods连接到更多套接字时,要么手动增加StatefulSet的副本,要么编写一个sidecar应用程序来监控no。套接字和 up/down 副本自动。