主机论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7|回复: 0

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

[复制链接]

7

主题

23

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2024-4-25 12:59:49 | 显示全部楼层 |阅读模式
本帖最后由 ixff 于 2024-4-25 13:06 编辑


这个编辑器格式太不友好了,原文地址 https://cloud.tencent.com/developer/article/2412318


之前一直在向大家介绍基于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,并放行防火墙所需的端口:

- **TCP端口2376**:用于安全的 Docker 客户端通信,这对于Docker Machine(用于编排Docker的主机)的正常运行是必需的。
- **TCP端口2377**:用于Docker Swarm或集群中节点之间的通信,只需要在管理节点上打开。
- **UDP端口4789**:用于覆盖网络流量(容器入口网络)。
- **TCP和UDP端口7946**:用于节点之间的通信(容器网络发现)。

## 初始化`Swarm`集群服务

在`dnode0`节点上执行以下命令来初始化Swarm集群:

```shell
docker swarm init
```

如果没有记住加入集群的`token`,可以通过以下命令重新获取:

```shell
docker swarm join-token worker
```

## 其他节点分别加入`Swarm`集群

在其他节点上执行加入Swarm集群的命令。假设已经获得了加入集群的`token`,然后在各节点上执行如下命令:

```shell
docker swarm join --token SWMTKN-1-tokenxxxxxxx 10.0.0.11:2377
```

确保将`token`替换为实际获得的值,并将IP地址替换为dnode0节点的IP地址。

## 在节点上创建网络

在Swarm集群中,可以创建overlay网络以实现容器间的跨主机通信。在主节点上执行以下命令:

```shell
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网络上互相通信。在各节点上执行如下命令:

```shell
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集群中的不同节点上互相通信。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2024-5-5 10:07 , Processed in 0.073702 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表