赞
踩
IP | 主机名 | 节点 | 说明 |
---|---|---|---|
192.168.0.2 | wsm_m_swarm_m01 | manager | swarm-manager节点 |
192.168.0.3 | wsm_s_swarm_w02 | work01 | swarm-work01节点 |
192.168.0.203 | mes_s_swarm_w03 | work02 | swarm-work02节点 |
#修改命令:
# 192.168.0.2 机器上修改
hostnamectl set-hostname wsm_m_swarm_m01
# 192.168.0.3 机器上修改
hostnamectl set-hostname wsm_s_swarm_w02
# 192.168.0.203 机器上修改
hostnamectl set-hostname mes_s_swarm_w03
#查看本机主机名
hostname
硬件资源 | 最小配置 | 推荐配置 |
---|---|---|
CPU | 1CPU | 2CPU |
内存 | 1G | 2-4G |
硬盘 | 20G | 50G |
docker版本:20.10.10
#advertise-addr 来指定其他节点连接m0时的地址 #来指定其他节点连接m0时的地址 来指定其他节点连接m0时的地址 #来指定其他节点连接m0时的地址 #1.初始化 [root@localhost html]# docker swarm init --advertise-addr 192.168.0.2:2377 --listen-addr 192.168.0.2:2377 Swarm initialized: current node (yxzrtxfrm8vr0ra19q5w3wryq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-4vdybtqysdjis34mqoqj5inpzsq1yiqk43tk9v97noaksy68cm-332vwqtw6dfv958mfkrqn6gxl 192.168.0.2:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. #2.查看节点信息 [root@localhost html]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION yxzrtxfrm8vr0ra19q5w3wryq * wsm_m_swarm_m01 Ready Active Leader 20.10.18 #3.查看网络信息 docker-swarm 初始化时会创建一个类型为overlay的网络 [root@localhost html]# docker network ls NETWORK ID NAME DRIVER SCOPE 4568ab0107fc bridge bridge local 152f72cad438 docker_gwbridge bridge local 0c1a27d4bea4 host host local v6fai582rn5p ingress overlay swarm a01f5844a45f none null local 489c5c1aa319 wfnet bridge local #4.查看docker信息 [root@localhost html]# docker info Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.9.1-docker) scan: Docker Scan (Docker Inc., v0.17.0) Server: Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 1 Server Version: 20.10.18 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs 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: yxzrtxfrm8vr0ra19q5w3wryq Is Manager: true ClusterID: 5uggixhuwr53s9bh80nz3a9i5 Managers: 1 Nodes: 1 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.0.2 Manager Addresses: 192.168.0.2:2377 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6 runc version: v1.1.4-0-g5fd4c4d init version: de40ad0 Security Options: seccomp Profile: default Kernel Version: 3.10.0-1160.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 40 Total Memory: 30.73GiB Name: wsm_m_swarm_m01 ID: M3GK:IAKZ:H2Y5:22NL:V4RX:BRYH:Q5K5:M7AE:I242:SPDG:UUF7:T7VR 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 Live Restore Enabled: false WARNING: bridge-nf-call-ip6tables is disabled
查看docker info集群状态
添加manager 节点 –token 会失效 时效为24小时 以后添加节点时 执行 docker swarm join-token 获取最新的token 标记文本
# 在添加一个work节点: docker swarm join --token # 添加一个管理节点: docker swarm join-token manager #1.分别在work节点3与203机器上执行 [root@localhost upload]# docker swarm join --token SWMTKN-1-4vdybtqysdjis34mqoqj5inpzsq1yiqk43tk9v97noaksy68cm-332vwqtw6dfv958mfkrqn6gxl 192.168.0.2:2377 Error response from daemon: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 192.168.0.2:2377: connect: no route to host" #报错原因,manager没有开放端口 #在manager节点永久开放端口 [root@localhost upload]# firewall-cmd --add-port=2377/tcp --permanent [root@localhost upload]# firewall-cmd --reload #2.在work节点重新执行 [root@localhost upload]# docker swarm join --token SWMTKN-1-4vdybtqysdjis34mqoqj5inpzsq1yiqk43tk9v97noaksy68cm-332vwqtw6dfv958mfkrqn6gxl 192.168.0.2:2377 This node joined a swarm as a worker. #3.在manager执行,查看docker集群 [root@localhost html]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION wmlgsladcg5h6ylg9pog48vva mes_s_swarm_w03 Ready Active 20.10.18 yxzrtxfrm8vr0ra19q5w3wryq * wsm_m_swarm_m01 Ready Active Leader 20.10.18 uu1ndu4enfm6gxh8jeefswluu wsm_s_swarm_w02 Ready Active 20.10.18
MANAGER STATUS列说明:
AVAILABILITY列说明:
#提升:将worker节点提升为manager节点,在manager节点执行如下命令:
docker node promote work-01
docker node ls
#降低:将manager节点降低为worker节点,在manager节点执行如下命令:
docker node demote work-02
docker node ls
#想要那个节点脱离集群就在那个节点下执行以下命令
docker swarm leave
#删除已经脱离集群的work-02节点
#ps:如果是多个manager节点中的其中一个节点需要先将节点降为worker节点才能删除
docker node rm work-02
#manager节点只能强制退出 manager退出后意味着整个swarm不复存在。
docker swarm leave --force
docker pull dockersamples/visualizer:latest
#1.启动方式1
docker run -itd --name visualizer -p 8099:8080 -e HOST=192.168.0.2 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer:latest
#2.启动方式2
#或者使用以下命令 可以通过集群中所有ip+port进行访问
docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer
http://192.168.0.2:8099
docker start [容器id]
暂时未做
#在manager节点中创建overlay网络: docker network create -d overlay wfnet #删除docker网络 docker network rm NETWORK_ID #查看docker 某网路 docker network inspect NETWORK_ID/name #创建5个nginx:alpines容器的集群: docker service create --name wf-register --network wfnet -p 8848:8848 --replicas 2 wf-register # (镜像名) #在manager节点使用docker service ls 命令查看服务情况,worker节点无法查看: docker service ls #在manager或者worker节点都可以执行docker ps命令查看本虚拟机容器情况: docker ps #manager节点只用于管理集群,不希望部署服务。 docker node update --availability drain manager-01 #使用docker service scale wf-register=3命令将服务缩减/扩容为2个容器: docker service scale wf-register=2
docker service update --publish-add 8090:80 nginx
#删除服务
docker service rm wf-register
# 指定集群环境 docker service create \ --name wf-register \ --network wfnet \ -p 8848:8848 \ -p 9848:9848 \ -p 9555:9555 \ -p 9849:9849 \ --host=wf-mysql:192.168.0.2 \ -e MODE=cluster \ -e NACOS_SERVERS="192.168.0.2:8848 192.168.0.3:8848 192.168.0.203:8848" \ -e JVM_XMX=2g \ -e JVM_XMN=2g \ -e JVM_MS=128m \ -e JVM_MMS=320m \ --replicas 3 192.168.0.2:5000/wf-register
#stack 最低支持版本为 3 version: "3" services: nginx-web: # 服务名称 image: nginx:1.19.3-alpine # 镜像名称 container_name: nginx # 容器名称 networks: - nginx-net #指定网络 restart: always #重启策略 ports: - 81:80 #挂载端口 deploy: replicas: 5 #生成实例数量 networks: nginx-net: #需要创建的网络名称 driver: overlay #指定网络类型
#在manager节点中创建docker-compose.yml文件。执行如下命令:
docker stack deploy nginx-stack --compose-file=docker-compose.yml 或者是
docker stack deploy nginx-stack -c docker-compose.yml
#查看stack服务运行情况。执行如下命令:
docker stack services nginx-stack
#查看5个容器运行在哪个节点中。执行如下命令:
docker service ls #查看到NAME中的服务名为:nginx-stack_nginx-web
docker service ps nginx-stack_nginx-web
命令 | 描述 |
---|---|
docker swarm init | 初始化一个 swarm 群集 |
docker swarm join | 加入群集作为节点或管理器 |
docker swarm join-token | 管理用于加入群集的令牌 |
docker swarm leave | 离开 swarm 群集 |
docker swarm unlock | 解锁 swarm 群集 |
docker swarm unlock-key | 管理解锁钥匙 |
docker swarm update | 更新 swarm 群集 |
命令 | 描述 |
---|---|
docker node demote | 从 swarm 群集管理器中降级一个或多个节点 |
docker node inspect | 显示一个或多个节点的详细信息 |
docker node ls | 列出 swarm 群集中的节点 |
docker node promote | 将一个或多个节点推入到群集管理器中 |
docker node ps | 列出在一个或多个节点上运行的任务,默认为当前节点 |
docker node rm | 从 swarm 群集删除一个或多个节点 |
docker node update | 更新一个节点 |
命令 | 描述 |
---|---|
docker service create | 创建服务 |
docker service inspect | 显示一个或多个服务的详细信息 |
docker service logs | 获取服务的日志 |
docker service ls | 列出服务 |
docker service rm | 删除一个或多个服务 |
docker service scale | 设置服务的实例数量 |
docker service update | 更新服务 |
docker service rollback | 恢复服务至update之前的配置 |
命令 | 描述 |
---|---|
docker stack deploy | 部署新的堆栈或更新现有堆栈 |
docker stack ls | 列出现有堆栈 |
docker stack ps | 列出堆栈中的任务 |
docker stack rm | 删除一个或多个堆栈 |
docker stack services | 列出堆栈中的服务 |
对于非运维人员来将采用命令行的方式建立了swarm集群并应用是非常具有学习成本的,所以进行swarm集群管理添加图形化管理界面的配置
1.Portainer镜像的加载
加载三部曲:导入、标记、上传
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。