IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Docker Swarm 集群的安装与配置 -> 正文阅读

[嵌入式]Docker Swarm 集群的安装与配置

概述

准备三台服务器来搭建 Swarm 集群,其中一台当做 manager 节点,另外两台当做 worker 节点

本文中的软件环境:

  • CentOS Linux release 8.5.2111
  • Docker Community

Docker Community 版本 详细信息

Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:22 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:46:10 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

t i p : \color{red}{tip:} tip: 三台服务器必须都安装 docker

修改主机名

为了便于区分节点,用主机名来标记节点。

# manager节点执行以下命令:
hostnamectl --static set-hostname manager
# worker节点执行以下命令:
hostnamectl --static set-hostname worker[序号]

t i p : \color{red}{tip:} tip: [序号]表示 worker 的编号,结合实际情况编号即可,例如:worker01

配置 host 信息

配置 host 信息,需要在每个节点上操作。

修改“/etc/docker/daemon.json”文件,修改后内容如下:

{    
    "hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"] 
}

之后重载配置、重启 docker

# 重载配置
systemctl daemon-reload
# 重启 docker
systemctl restart docker

p r o b l e m : \color{red}{problem:} problem:

# docker 的 socket 配置 hosts 出现了冲突
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

s o l v e : \color{green}{solve:} solve:

# vim /usr/lib/systemd/system/docker.service
# 将ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 修改为 ExecStart=/usr/bin/dockerd

创建集群

在 manager 节点上创建 swarm 集群。

# 在 manager 节点执行以下命令, 初始化 swarm 集群
docker swarm init

将 worker 节点加到集群。

# 在 manager 节点查看加入 worker 节点到集群的命令。
docker swarm join-token manager

回显内容如下:

t i p : \color{red}{tip:} tip: 回显内容中的 token 信息仅为示例,以实际为准。

To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-141v8gnj6xx99k2yb60yj5la7meha41054u3cepncpr6847gkz-6o4pyjztas1giv2i0p9dec2v6 192.168.50.228:2377

t i p : \color{red}{tip:} tip: 开放端口 2377、2375,或者关闭防火墙,相关命令请到 附录 查看
t i p : \color{red}{tip:} tip: 分别在 worker 节点执行上面查询到的命令,即可把 worker 节点加入集群中。

运行和验证

在 manager 节点上执行以下命令,查看集群状态。

docker node ls

系统回显内容如下:

ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
ooavmvome2oiuhqvchsfqrnsk *   manager    Ready     Active         Leader           20.10.14
kvmv6ezozpbo0nwhg4aoo75s5     worker-1   Ready     Active                          20.10.14
ndulna73a32bt76jtwhymzuty     worker-2   Ready     Active                          20.10.14 

在 manager 节点上执行以下命令,部署服务到集群中。

docker service create --replicas 1 --name helloworld alpine ping docker.com

在 manager 节点上执行以下命令,查看集群中的服务。

docker service ls

系统回显内容如下:

ID            NAME        MODE        REPLICAS  IMAGE
1t4kfavubdk4  helloworld  replicated  1/1       alpine:latest

Docker Swarm + Portainer 集群可视化管理

# 下载镜像
docker pull portainer/portainer
# 创建数据卷
docker volume create portainer_data
# 创建网络
docker network create --driver overlay --attachable portainer_agent_network
# 创建 portainer 代理
docker service create --name portainer_agent --network portainer_agent_network --mode global --constraint 'node.platform.os == linux' --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes portainer/agent
# 创建 portainer 服务
docker service create --name portainer --network portainer_agent_network --publish 9000:9000 --replicas=1 --constraint 'node.role==manager' --constraint node.hostname==manager --container-label com.docker.stack.namespace=portainer --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock --mount type=volume,src=portainer_data,dst=/data portainer/portainer -H unix:///var/run/docker.sock

t i p : \color{red}{tip:} tip: 服务移除后,再次创建时,需要删除卷,然后创建服务。

访问服务

访问方式:http://IP:9000 ,首次登录需要注册用户,给用户admin设置密码,如下图:

portainer

Swarm 常用命令

# 查看加入woker的命令
docker swarm join-token worker
# 查看加入manager的命令
docker swarm join-token manager
# 重置woker的Token
docker swarm join-token --rotate worker
# 仅打印Token
docker swarm join-token -q worker
# 列出集群中的所有服务
docker service list
# 列出集群中的节点
docker node ls
# 初始化集群
docker swarm init
# 创建一个卷
docker volume create volumeName
# 显示一个或多个卷的详细信息
docker volume inspect volumeName
# 列出卷
docker volume ls
# 删除所有未使用的卷
docker volume prune
# 删除一个或多个卷
docker volume rm volumeName

附录

# 查看防火墙状态
firewall-cmd --state
# 关闭防火墙
systemctl stop firewalld
# 添加端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
# 查看已经开放的端口
firewall-cmd --list-ports
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:27:29  更:2022-04-04 12:30:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:53:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码