我们在四台 aws ec2 ubuntu 机器上设置了 docker swarm。其中两台充当管理器。
现在,我们不再进行自我管理,而是希望移植到类似 kubernetes 的 aks/eks 这样的托管服务。
到目前为止我还没有找到任何东西,所以考虑将我们的工作负载迁移到 kubernetes。
作为其中的一部分,我们正在为不同的数据库运行 docker 服务命令,以便每当需要测试数据库(postgres、oracle、mysql 等)时,我们都会在 docker swarm 中运行命令来创建服务,并获得一个随机端口,我们使用管理器公共 ip 进行连接。
例子:
对于 postgres:
docker service create --name postgres_31 -p target=5432 -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=admin -e POSTGRES_DB=testdb -d postgres:9.6.18
以上将为 postgres 的 5432 端口创建一个随机端口
如下所示,它生成了 30048
因此,用户连接管理器节点的公共 IP 和端口 30048,该端口将重定向到数据库的 5432 端口。
docker service ls
p45fazswicxc postgres_31 replicated 1/1 postgres:13 *:30048->5432/tcp
通过这种方式,我们曾经在 swarm 上创建多个 postgres 数据库(或其他数据库)(用于开发团队的测试目的)。
如何在 kubernetes 上复制此环境?
在 kubernetes 中,它似乎为每个部署的负载均衡器类型服务生成单独的公共 IP,但我们需要一个。我考虑在外部保留一个 Azure 负载均衡器并重定向所有内容,但我猜配置仅适用于 http,并且只能用于单个端口,而不能用于多个随机端口,如果我错了,请纠正我。