固定数量的具有特定用途的pod(套接字连接)

时间:2017-07-19 09:08:03

标签: sockets rabbitmq kubernetes gitlab-ci kubernetes-helm

我们计划使用kubernetes,我正在验证它是否符合我们的要求。 一个问题是: 我想构建一个应用程序/ pod,它连接到Internet上的某个服务(主机和端口),并且只要我们需要它(通常是永久的)就保持套接字存活。应用程序将连接到的套接字数量可能会有所不同。 对于inter pod通信,我们将使用RabbitMQ。

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

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

1 个答案:

答案 0 :(得分:1)

kubernetes部署Pods并有两个抽象:Deployments和StatefulSets。前者部署了主机名和IP更改的短暂Pod。后者保留了国家。

如果你为这个应用程序部署kubernetes ,那就太过分了。我宁愿使用普通的Docker或更简单的kubernetes orchestrator,如Docker Swarm Mode或Kontena。

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

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