为什么选择swarm,而没有选择更加成熟的k8s,主要是自己对k8s并没有了解太多,而我的需求只是实现不同主机之间的容器能够正常通信。看过docker官方文档之后,感觉用swarm结合overlay网络可以实
现。故选择了swarm

一、环境准备

准备两台机器

主机名称主机IP主机用途
server1140.143.112.111运行swarm manage节点
server2140.143.112.112运行swarm worker节点

二、配置

2.1 开放相关端口 2377/tcp 7946/tcp 7946/udp 4789/udp

在server1和server2上分别执行如下命令

$ firewall-cmd --add-port={2377/tcp,7946/tcp,7946/udp,4789/udp} --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-port

若提示“FirewallD is not running”,请先开启firewall防火墙

在这里插入图片描述

2.2 swarm配置

2.2.1 在server1上对swarm进行初始化,分两种情况:
  1. 所有主机在同一局域网
# 直接执行下面命令
docker swarm init
  1. 若不在一个局域网内,则指定连接当前服务器地址
# docker swarm init --advertise-addr [server1的公网IP]
docker swarm init --advertise-addr 140.143.112.111

在这里插入图片描述
3. swarm初始化成功之后,控制台会打印出其他主机想加入此swarm所需要执行的命令(如上图所示),也可通过以下命令查看

# 添加一台主机作为worker时要执行的命令,可在manager节点上通过下面命令查看
docker swarm join-token worker
# 添加一台主机作为manager时要执行的命令,可在manager节点上通过下面命令查看
docker swarm join-token manager

执行之后,控制台会打印出相应的命令,如下图所示
在这里插入图片描述

2.2.1 将server2加入到server1的swarm集群中

分两种情况:

  1. 将server2作为worker节点加入到swarm集群中,执行如下命令
# 直接将manager控制台中的命令在server2上执行即可
docker swarm join --token SWMTKN-1-*******-******* 140.143.112.111:2377

在这里插入图片描述
2. 将server2作为manager节点加入到swarm集群中,执行如下命令

# 直接将manager控制台中的命令在server2上执行即可
docker swarm join --token SWMTKN-1-*******-******* 140.143.112.111:2377

在这里插入图片描述

2.3 overlay网络配置

创建网络并指定ip段

  1. 在manager节点(server1)上,执行如下命令,创建overlay网络
# 其中的 subnet指定子网配置
# 其中gateway指定网关配置
  docker network create \
  --driver overlay \
  --subnet=10.11.0.0/16 \
  --gateway=10.11.0.2 \
  --attachable overlay-network

在这里插入图片描述
2. 查看overlay网络是否创建成功

docker network ls

在这里插入图片描述
3. 查看swarm集群是否创建成功

docker node ls

在这里插入图片描述
所有配置全部来源于官网:
overlay网络配置
至此,swarm集群搭建完成!

相关阅读:
CICD系列(一):docker环境配置
CICD系列(三):git搭建及配置
CICD系列(四):maven私服仓库(nexus)搭建及配置

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐