是否可以使用不同云提供商上的节点创建 docker swarm 集群?

Is it possible to create a docker swarm cluster using nodes on different cloud providers?

是否可以使用不同云提供商上的节点创建 docker swarm 集群?

假设其中一些在 AWS 上,一些在 GCE 上,一些在 Azure 上?

是的。查看 Docker Machine 以快速设置基本基础结构。

Docker Machine

以我的理解,只要你的节点可以相互访问,那么你就可以创建一个swarm集群。谁是您的云提供商或您的节点位于何处并不重要。

如果你仔细阅读swarm deployment document,你会发现部署集群的关键是"let the compute nodes to communicate with controller node"。假设您已经安装了一个带有 swarm 和发现服务(例如 consul 或 etcd)的控制器节点,您可以像这样添加一个计算节点:

$ docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500

其中 node_ipconsul_ip 应该是您的控制器节点的 IP。

所以棘手的部分是,你能让你的节点相互通信吗?其实这个问题并不容易回答。你需要关心IP分配、网络设计、路由器等