腾讯云 Lighthouse 服务器 Docker 容器跨主机通信

67 天前
 panisertoller

之前一直在向大家介绍基于 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.5172.22.0.6172.22.0.7,并且它们可以在 Swarm 集群中的不同节点上互相通信。

文章思路来自 若海の技术写真,有问题请留言。

1321 次点击
所在节点    Docker
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1035532

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX