之前一直在向大家介绍基于 k3s 实现的腾讯云 Lighthouse 集群使用方法,也有声音表示 k8s 太重了,能不能更轻量一些?答案当然是:可以!
今天,本文将探讨如何利用腾讯云 Lighthouse 服务器,在 Docker 应用镜像上创建一个 Swarm 集群的,并实现容器跨主机通信的能力。
Swarm 是 Docker 官方提供的容器编排工具之一,用于管理多个 Docker 主机上运行的容器。它允许将多个 Docker 主机组成一个集群,并通过统一的接口来管理这些主机上的容器。Swarm 提供了高可用性、伸缩性和容错性,使得在生产环境中部署和管理容器化应用变得更加简单和可靠。
Overlay 网络是 Docker 提供的一种网络模型,采用了多种技术来实现容器间的通信,其中包括了本文中将使用的 VXLAN ( Virtual Extensible LAN )技术,VXLAN 可以将容器的数据包封装在 UDP 数据包中,并在底层网络中传输,从而实现跨主机的容器通信。
节点名 | 节点 IP | 节点服务 |
---|---|---|
dnode0 | 10.0.0.11 | 重装为 Docker 应用镜像, 并初始化 Swarm 集群 |
dnode1 | 10.0.0.12 | 重装为 Docker 应用镜像 |
dnode2 | 10.0.0.13 | 重装为 Docker 应用镜像 |
在配置过程中,请确保将每个节点的hostname
设置为不同的值,本例分别设置为 dnode0 、dnode1 、dnode2 ,并放行防火墙所需的端口:
Swarm
集群服务在dnode0
节点上执行以下命令来初始化 Swarm 集群:
docker swarm init
如果没有记住加入集群的token
,可以通过以下命令重新获取:
docker swarm join-token worker
Swarm
集群在其他节点上执行加入 Swarm 集群的命令。假设已经获得了加入集群的token
,然后在各节点上执行如下命令:
docker swarm join --token SWMTKN-1-tokenxxxxxxx 10.0.0.11:2377
确保将token
替换为实际获得的值,并将 IP 地址替换为 dnode0 节点的 IP 地址。
在 Swarm 集群中,可以创建 overlay 网络以实现容器间的跨主机通信。在主节点上执行以下命令:
docker network create --driver overlay --subnet=172.22.0.0/24 --gateway=172.22.0.1 --attachable ovnet
这将创建一个名为ovnet
的 overlay 网络,其中包括了一个子网范围为172.22.0.0/24
,并指定网关为172.22.0.1
。
在各个节点上创建容器,这些容器可以在 overlay 网络上互相通信。在各节点上执行如下命令:
docker run -it --rm --network ovnet --ip 172.22.0.5 alpine
docker run -it --rm --network ovnet --ip 172.22.0.6 alpine
docker run -it --rm --network ovnet --ip 172.22.0.7 alpine
这些命令将分别在 overlay 网络上创建了三个容器,它们分别具有 IP 地址为172.22.0.5
、172.22.0.6
和172.22.0.7
,并且它们可以在 Swarm 集群中的不同节点上互相通信。
文章思路来自 若海の技术写真,有问题请留言。