转自:https://www.cnblogs.com/jsonhc/p/7852530.html

swarm集群配置完成后,查看一些基本的信息:

[root@manager1 ~]# docker-machine ls
NAME       ACTIVE   DRIVER    STATE     URL                         SWARM   DOCKER        ERRORS
manager1   -        generic   Running   tcp://192.168.101.14:2376           v17.09.0-ce
work1      -        generic   Running   tcp://192.168.101.15:2376           v17.10.0-ce 

查看节点信息:

[root@manager1 ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
4ecjeeu8273dzsmfta7u6op9t *   manager1            Ready               Active              Leader
sn7c5u5wtupgt3qpz22o117hl     work1               Ready               Active  

如果需要更新详细的查看节点信息:

[root@manager1 ~]# docker node inspect --pretty manager1
ID:                     4ecjeeu8273dzsmfta7u6op9t
Hostname:               manager1
Joined at:              2017-11-15 18:28:21.103210247 +0000 utc
Status:State:                 ReadyAvailability:          ActiveAddress:               192.168.101.14
Manager Status:Address:               192.168.101.14:2377Raft Status:           ReachableLeader:                Yes
Platform:Operating System:      linuxArchitecture:          x86_64
Resources:CPUs:                  2Memory:                3.686GiB
Plugins:Log:           awslogs, fluentd, gcplogs, gelf, journald, json-file, logentries, splunk, syslogNetwork:               bridge, host, macvlan, null, overlayVolume:                local
Engine Version:         17.09.0-ce
Engine Labels:- provider=generic
TLS Info:TrustRoot:
-----BEGIN CERTIFICATE-----
MIIBazCCARCgAwIBAgIUPDGTCzw2cZelyvysFW+jcF3PcQMwCgYIKoZIzj0EAwIw
EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcxMTE1MTgyMzAwWhcNMzcxMTEwMTgy
MzAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABNyMg4cqG1XaXB6g5PbNGxjishle1cPF9t0kn5LbRKwh+IGwDZD2fdbli2bk
9fzVQVWCj3aZzCyyVSFxZ30+cPWjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBTElfvEWZqpfIfCYCr+Vn6peYGOPDAKBggqhkjO
PQQDAgNJADBGAiEAh44+/Ns5T+MwiD49jXmIpr7mz/8qyMEvFDtk55j5eQ0CIQCP
HEbLBRkJWxqNs6p5O+emfvIVpFHuy/X8K6tDF7qmiw==
-----END CERTIFICATE-----Issuer Subject:        MBMxETAPBgNVBAMTCHN3YXJtLWNhIssuer Public Key:     MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3IyDhyobVdpcHqDk9s0bGOKyGV7Vw8X23SSfkttErCH4gbANkPZ91uWLZuT1/NVBVYKPdpnMLLJVIXFnfT5w9Q==

现在利用docker service命令来创建服务:

[root@manager1 ~]# docker service create --name web --replicas 2 nginx
oq2jsjc4zhwtpcwqqd2whj701
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.

其中的参数:--name表示创建服务的名称,--replicas表示创建的副本数,nginx是镜像

查看创建好的service:

[root@manager1 ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
oq2jsjc4zhwt        web                 replicated          2/2                 nginx:latest   

查看service服务在节点的运行情况:

[root@manager1 ~]# docker service ps web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
rk7pyq7pr49b        web.1               nginx:latest        work1               Running             Running 7 seconds ago
w3orhk7uzvzy        web.2               nginx:latest        manager1            Running             Running 7 seconds ago 

如果在创建的过程中出现如下报错:

[root@manager1 ~]# docker service ps web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR                              PORTS
klcan0r46jih        web.1               nginx:latest        work1               Ready               Preparing 3 seconds ago
ypx26zy1gp63         \_ web.1           nginx:latest        work1               Shutdown            Rejected 3 seconds ago    "No such image: nginx:latest@s…"
dy51asan25pf        web.2               nginx:latest        manager1            Running             Running 18 seconds ago

work1节点上没有相应的镜像,导致启动失败,可能的原因之一:work1节点使用的默认的官方镜像源,所以下载缓慢,导致失败,解决办法:将work1节点配置镜像加速器重启docker服务就行

如果需要详细查看service信息:

[root@manager1 ~]# docker service inspect --pretty webID:             oq2jsjc4zhwtpcwqqd2whj701
Name:           web
Service Mode:   ReplicatedReplicas:      2
Placement:
UpdateConfig:Parallelism:   1On failure:    pauseMonitoring Period: 5sMax failure ratio: 0Update order:      stop-first
RollbackConfig:Parallelism:   1On failure:    pauseMonitoring Period: 5sMax failure ratio: 0Rollback order:    stop-first
ContainerSpec:Image:         nginx:latest@sha256:9fca103a62af6db7f188ac3376c60927db41f88b8d2354bf02d2290a672dc425
Resources:
Endpoint Mode:  vip

如果需要访问容器提供的服务,需要为容器进行映射端口:

[root@manager1 ~]# docker service update --publish-add 8080:80 web
web

使用命令update进行对服务的修改,更新等等操作

[root@manager1 ~]# docker service ps web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                    ERROR               PORTS
jzq72hlu434g        web.1               nginx:latest        work1               Running             Running less than a second ago
rk7pyq7pr49b         \_ web.1           nginx:latest        work1               Shutdown            Shutdown 1 second ago
ys5voif2df7f        web.2               nginx:latest        manager1            Running             Running 2 seconds ago
w3orhk7uzvzy         \_ web.2           nginx:latest        manager1            Shutdown            Shutdown 3 seconds ago 

[root@manager1 ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
oq2jsjc4zhwt        web                 replicated          2/2                 nginx:latest        *:8080->80/tcp

然后进行访问web服务:

这里创建的服务在节点manager1和worl1上(192.168.101.14、192.168.101.15),不指定为什么创建的service一直没有实现负载均衡,一直只是manager1节点能够提供访问,这个问题等待解决

上面可以看出service由manager1、work1两个节点提供,现在将其中的某一个节点进行下线:

[root@manager1 ~]# docker node update --availability drain work1
work1
[root@manager1 ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
4ecjeeu8273dzsmfta7u6op9t *   manager1            Ready               Active              Leader
sn7c5u5wtupgt3qpz22o117hl     work1               Ready               Drain   

节点的availability的值可以显示节点的状态(active表示活跃在线,drain表示下线不提供服务或者处于维护状态)

将节点wrok1下线后,查看服务的replicas数量:

[root@manager1 ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
oq2jsjc4zhwt        web                 replicated          2/2                 nginx:latest        *:8080->80/tcp

可以看见service web的replicas并没有减少:

[root@manager1 ~]# docker service ps web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                 ERROR               PORTS
o0p9zt3su44g        web.1               nginx:latest        manager1            Running             Running about a minute ago
jzq72hlu434g         \_ web.1           nginx:latest        work1               Shutdown            Shutdown about a minute ago
rk7pyq7pr49b         \_ web.1           nginx:latest        work1               Shutdown            Shutdown 6 minutes ago
ys5voif2df7f        web.2               nginx:latest        manager1            Running             Running 6 minutes ago
w3orhk7uzvzy         \_ web.2           nginx:latest        manager1            Shutdown            Shutdown 6 minutes ago  

而提供服务的节点由之前的manager1和worlk1共同提供变成了只由节点manager1提供:

现在将work1节点进行更改为active:

[root@manager1 ~]# docker node update --availability active work1
work1
[root@manager1 ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
4ecjeeu8273dzsmfta7u6op9t *   manager1            Ready               Active              Leader
sn7c5u5wtupgt3qpz22o117hl     work1               Ready               Active  

当work1节点上线后,但是work1并没有抢回提供服务:

[root@manager1 ~]# docker service ps web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
o0p9zt3su44g        web.1               nginx:latest        manager1            Running             Running 4 minutes ago
jzq72hlu434g         \_ web.1           nginx:latest        work1               Shutdown            Shutdown 4 minutes ago
rk7pyq7pr49b         \_ web.1           nginx:latest        work1               Shutdown            Shutdown 9 minutes ago
ys5voif2df7f        web.2               nginx:latest        manager1            Running             Running 9 minutes ago
w3orhk7uzvzy         \_ web.2           nginx:latest        manager1            Shutdown            Shutdown 9 minutes ago 

现在将service的replicas进行伸缩或者扩展,这里将replicas增加到3(现在数量为2)

[root@manager1 ~]# docker service scale web=3
web scaled to 3

[root@manager1 ~]# docker service ps web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR               PORTS
o0p9zt3su44g        web.1               nginx:latest        manager1            Running             Running 6 minutes ago
jzq72hlu434g         \_ web.1           nginx:latest        work1               Shutdown            Shutdown 6 minutes ago
rk7pyq7pr49b         \_ web.1           nginx:latest        work1               Shutdown            Shutdown 11 minutes ago
ys5voif2df7f        web.2               nginx:latest        manager1            Running             Running 11 minutes ago
w3orhk7uzvzy         \_ web.2           nginx:latest        manager1            Shutdown            Shutdown 11 minutes ago
g0liotj1z9j6        web.3               nginx:latest        work1               Running             Running 1 second ago 

可以看见work1节点又开始为web提供服务了

删除掉上面创建的服务,重新创建新的服务,使用--publish:

[root@manager1 ~]# docker service rm web
web

转载于:https://www.cnblogs.com/maohuidong/p/9914823.html

deploy service on swarm相关推荐

  1. docker探索-使用docker service管理swarm(十一 )

    本文转自:https://www.cnblogs.com/atuotuo/p/6265541.html 1.创建一个 Docker service $ docker service create -- ...

  2. re.containerbase.startinternal 子容器启动失败_Python项目容器化实践(二) Docker Machine和Docker Swarm...

    前言 这篇文章介绍Docker生态中的常被提到的Engine.Machine和Swarm,大家以了解为主,工作需要再深入. Engine Docker Engine其实就是我们常说的「Docker」, ...

  3. Kubernetes(7) Service Network (advanced)

    从上一章节我们做了一个Service提供服务给单节点Redis数据库的实验.在这一章我们要深入Service中去,来弄清Service的工作原理. 1 Kubernetes 如何向客户端提供网络功能 ...

  4. SAP创建Web Service以及用ABAP调用

    如果运行 soamanager 打不开,网页显示 devaix .zhongpin.com ,打开 C :\WINDOWS\system32\drivers\etc, 用记事本打开 hosts 文件 ...

  5. kyma上service catalog的安装部署方法

    Service catalog: 在cluster上安装Service catalog之前,首先使用下列命令确保该cluster可以使用helm: kubectl create -f https:// ...

  6. docker swarm的应用----docker集群的构建

    一.docker安装 这里我们安装docker-ce 的18.03版本 yum    -y remove docker  删除原有版本 #安装依赖包 [root@Docker ~]# yum -y i ...

  7. oracle线程阻塞_Oracle Service Bus –线程阻塞案例研究

    oracle线程阻塞 本案例研究描述了在AIX 6.1和IBM Java VM 1.6上运行的Oracle Service Bus 11g遇到的线程阻塞问题的完整根本原因分析过程. 本文也是您提高线程 ...

  8. Oracle Service Bus –线程阻塞案例研究

    本案例研究描述了在AIX 6.1和IBM Java VM 1.6上运行的Oracle Service Bus 11g遇到的线程阻塞问题的完整根本原因分析过程. 本文也是您提高线程转储分析技能的绝佳机会 ...

  9. 一步步实现SDDC-vSphere Auto Deploy的妙用

    实验摘要: 1>vSphere Auto Deploy [难度★★★★复杂度★★★★★] 正文: 今天,我将向大家演示,如何利用vSphere Auto Deploy,实现数据中心内服务器虚拟化 ...

最新文章

  1. java集成钉钉sdk_JAVA maven项目使用钉钉SDK获取token、用户
  2. linux c++ 得到 指定进程名 线程数
  3. Web socket广播
  4. python实现汉诺塔程序
  5. 想要高清壁纸,高图桌面壁纸网站值得收藏!
  6. werkzeug LocalProxy
  7. 零基础转行学习前端,需要学习哪些技术才可以找到工作吗?
  8. 札记 - PHP/JS/jQuery/MySQL/CSS/正则/Apache
  9. Windows 下Redis客户端可视化工具-Redis Desktop Manager
  10. zmud之汉字转换为数字
  11. linux怎么查服务器的ip地址查询,Linux操作系统查看当前服务器网卡的IP地址
  12. mybatis-plus 属性为空时判断问题
  13. 【生物信息学】正常和突变的蛋白质结构可视化?构建蛋白结构模型,常见的4种构建蛋白模型方法
  14. 火车头定制规则php什么意思,火车头WordPress发布规则写法教程
  15. 看服务器被入侵如何排查?如何防止服务器被入侵?
  16. 捉迷藏之二-第10届蓝桥杯Scratch国赛真题第6题程序2
  17. The Shawshank Redemption-14
  18. 第二部分 : 简单句的核心变化(时态)
  19. goldendict使用 添加 .blg 添加字典
  20. usb的device模式hid配置错误点

热门文章

  1. Asp.net的加密解密技巧--[转载]
  2. Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
  3. 文件上传利器SWFUpload使用指南
  4. 你可能不清楚的 Vue Router 深度用法(一)
  5. prometheus之docker监控与告警系列(二)
  6. 用c语言实现的几个小项目
  7. Smart Crop,一种切除 PDF 扫描文档白边的新选择(工程篇)
  8. ubuntu下man帮助文档不全怎么办?如何解决?
  9. Java快速教程--vamei 学习笔记(基础篇)
  10. WPF中的容器控件——GridSplit