背景

硬件:多台Windows主机,已安装docker desktop,主机位于搭建的局域网内。有一个主机安装了VMware和CentOS Stream镜像。
需求:利用集群,进行分布式实验

问题列举

【失败】docker desktop 的 Swarm 别碰!

docker swarm init --listen-addr 192.168.2.xxx:2377 --advertise-addr 192.168.2.xxx:2377

  1. 网上没有查到windows desktop 初始化init Swarm的案例
  2. docker desktop 无论是否开启“Use the WSL 2 based engine”,其都是运行在Linux系统上的,无法识别windows系统的物理IP。报错信息都是“bind: cannot assign requested address”

通过gpt分析得到的方案无法实现,不了解windwos docker desktop的底层运行原理,不知道如何绕过系统不互通的问题。

【失败】docker desktop enable k8s failed

docker desktop集成了kubernetes。由于网络问题,enable Kubernetes时,(显示 Ensuring node image (kindest/node:v1.30.2) 🖼 …)
手动安装kindest/node:v1.30.2,还有其他镜像后,enable Kubernetes仍然失败。
报错信息无分析价值,遂放弃。

基于纯Linux系统

之前安装过双系统,使用起来非常麻烦,也没有多余主机。
因此使用虚拟机安装CentOS镜像,只起Swarm manager的作用,不运行容器。
之后遇到的问题就是网络配置的问题。
本文记录下进行的配置操作

虚拟机搭建Swarm集群

1. 安装VMware和CentOS

2. CentOS安装docker

https://www.runoob.com/docker/centos-docker-install.html

备注:
sudo docker run hello-world失败,查找有效的docker镜像源

docker pull docker.m.daocloud.io/hello-world
docker tag docker.m.daocloud.io/hello-world:latest hello-world:latest
docker run hello-world

3. CentOS网络设置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

端口开放

ip addr
# --> <CentOS_LAN_IP> 此时虚拟机位于LAN同一网段

firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udp
firewall-cmd --reload
setenforce 0 # 临时关闭,CentOS的安全机制
ss -tulpn | grep 2377 

CentOS 进行Swarm初始化

ip addr
# --> <CentOS_LAN_IP>
docker swarm init --listen-addr <CentOS_LAN_IP>:2377 --advertise-addr <CentOS_LAN_IP>:2377
docker node ls
docker swarm join-token worker
# --> docker swarm join --token <token_generate> <CentOS_LAN_IP>:2377

Windows desktop 加入集群

在这里插入图片描述

PS C:\Users\Administrator> Test-NetConnection <CentOS_LAN_IP> -Port 2377


ComputerName     : <CentOS_LAN_IP>
RemoteAddress    : <CentOS_LAN_IP>
RemotePort       : 2377
InterfaceAlias   : 以太网
SourceAddress    : <Windows_LAN_IP>
TcpTestSucceeded : True

验证windows 和CentOS端口互通

docker swarm join --advertise-addr <Windows_LAN_IP> --token <token_generate> <CentOS_LAN_IP>:2377
# --> This node joined a swarm as a worker.
dokcer info 
# 查看Swarm字段
# Swarm: active
#  NodeID: xxxxxxx
#  Is Manager: false
#  Node Address: <Windows_LAN_IP>
#  Manager Addresses:
#   <CentOS_LAN_IP>:2377

备注:
若加入集群失败,Swarm字段显示error。可退出重启Swarm

docker swarm leave --force
# --> Node left the swarm.
docker info
# Swarm:inactive

CentOS验证集群加入结果

[root@localhost ~]# docker node ls
ID                            HOSTNAME                STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
sxxxxx     docker-desktop          Ready     Active                          27.1.1
ahxxxxxx*   localhost.localdomain   Ready     Active         Leader           29.1.2

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐