实验环境
docker-m1 | 192.168.200.81 | 管理节点 |
docker-n1 | 192.168.200.91 | 工作节点 |
docker-n2 | 192.168.200.92 | 工作节点 |
docker-m2 | 192.168.200.82 | 管理节点(集群创建后单独添加) |
docker-m3 | 192.168.200.83 | 管理节点集(群创建后单独添加) |
一、所有服务器安装docker
二、部署swarm集群
1、初始化docker-swarm 管理节点
#--default-addr-pool 10.243.0.0/16 pod容器IP段指定
#advertise-addr 来指定其他节点连接m1时的地址
# 创建新的群,生成主节点,执行如下命令,将工作节点添加到集群中。
[root@docker-m1 ~]# docker swarm init --default-addr-pool 10.243.0.0/16 --advertise-addr 192.168.200.81
Swarm initialized: current node (34cug51p9dw83u2np594z6ej4) is now a manager.
To add a worker to this swarm, run the following command:
#初始化后自动生成工作节点加入集群的命令
docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a 192.168.200.81:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
2、添加docker-n1工作节点到swarm集群
[root@docker-n1 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a 192.168.200.81:2377
This node joined a swarm as a worker.
3、添加docker-n2工作节点到swarm集群
# 添加至集群中成为工作节点
[root@docker-n2 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a 192.168.200.81:2377
This node joined a swarm as a worker.
二、添加多个管理节点实现高可用(使用单个管理节点请忽略)
1、生成管理节点加入swarm的命令
# 执行以下命令,生成如下命令,运行此命令,添加新的管理节点到集群中。
[root@docker-m1 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
#以下是增加管理节点的命令
docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx 192.168.200.81:2377
2、添加docker-m2管理节点到swarm集群
# 添加至集群中成为管理节点
[root@docker-m2 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx 192.168.200.81:2377
This node joined a swarm as a manager.
3、添加docker-m3管理节点到swarm集群
# 添加至集群中成为管理节点
[root@docker-m3 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx 192.168.200.81:2377
This node joined a swarm as a manager.
三、检查配置情况
查看集群节点状态信息
发现docker-m1是主管理节点(Leader)
docker-m2、docker-03是备用管理节点(Reachable)
两个工作节点docker-n1、docker-n2也正常添加至集群中来。
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active Reachable 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
查看整个Docker系统的信息
发现docker swarm集群已经创建完成。
共有五台节点,其中三台为管理节点。
[root@docker-m1 ~]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.8.1-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.14
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
NodeID: 34cug51p9dw83u2np594z6ej4
Is Manager: true
ClusterID: v1r77dlrbucscss3tss6edpfv
Managers: 3
Nodes: 5
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.200.81
Manager Addresses:
192.168.200.81:2377
192.168.200.82:2377
192.168.200.83:2377
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
runc version: v1.0.3-0-gf46b6ba
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.62.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.934GiB
Name: docker-m1
ID: YIQB:NBLI:MUUN:35IY:ESCK:QPI3:CIZP:U2AS:WV7D:E57G:H7CO:WBWI
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://w2kavmmf.mirror.aliyuncs.com/
Live Restore Enabled: false
WARNING: IPv4 forwarding is disabled
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
四、swarm集群节点角色变更
1、管理节点降为工作节点
以docker-m3为例,将docker-m3管理节点由管理节点变成工作节点。
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active Reachable 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
[root@docker-m1 ~]# docker node update --role worker docker-m3
docker-m3
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
2、工作节点晋升为管理节点
以docker-n2为例,将docker-n2管理节点由工作节点变成管理节点。
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
[root@docker-m1 ~]# docker node update --role manager docker-n2
docker-n2
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active Reachable 20.10.14
3、移除管理节点
在docker-m3节点执行操作,将docker-m3管理节点移除集群
1)先关闭docker-m3管理节点
[root@docker-m3 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh * docker-m3 Ready Active Reachable 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
[root@docker-m3 ~]# docker swarm leave -f
Node left the swarm.
2) 在docker-m1管理节点上查看。发现docker-m3管理节点已经关闭
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Down Active Unreachable 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
3)删除docker-m3管理节点
[root@docker-m1 ~]# docker node rm 4q34guc6hp2a5ok0g1zkjojyh
4、添加管理节点
1)在docker-m1重新生成添加管理节点命令
[root@docker-m1 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx 192.168.200.81:2377
2)重新将docker-m3管理节点添加到集群中
[root@docker-m3 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx 192.168.200.81:2377
This node joined a swarm as a manager.
[root@docker-m3 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active Reachable 20.10.14
jvtiwv8eu45ev4qbm0ausivv2 * docker-m3 Ready Active Reachable 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
5、移除工作节点
在docker-n1节点执行操作,将docker-n1工作节点移除集群。
1)在docker-n1上执行关闭工作节点
[root@docker-n1 ~]# docker swarm leave
Node left the swarm.
2)在docker-m1管理节点上查看。发现docker-n1工作节点已经关闭
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 20.10.14
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 20.10.14
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active Reachable 20.10.14
jvtiwv8eu45ev4qbm0ausivv2 docker-m3 Ready Active Reachable 20.10.14
4om9sg56sg09t9whelbrkh8qn docker-n1 Down Active 20.10.14
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 20.10.14
3)删除工作节点
[root@docker-m1 ~]# docker node rm 4om9sg56sg09t9whelbrkh8qn
6、添加工作节点
1)在docker-m1重新生成加入工作节点命令
[root@docker-m1 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a 192.168.200.81:2377
2)重新将docker-n1工作节点添加到集群中。
[root@docker-n1 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a 192.168.200.81:2377
This node joined a swarm as a worker.