博客详情

docker swarm中使用stack.yml部署服务 (原创)

作者: 朝如青丝暮成雪
发布时间:2019-12-25 17:40:26  文章分类:docker   阅读(2664)  评论(0)

docker swarm中使用stack.yml部署服务



一、一些概念: 

1、service
swarm service是一个抽象的概念,它只是一个对运行在swarm集群上的应用服务,所期望状态的描述。 

2、stack
stack是描述一系列相关services的集合。我们通过在一个YAML文件中来定义一个stack。

3、task
在Docker Swarm中,task是一个部署的最小单元,task与容器是一对一的关系。

4、多主机网络
同一个docker 主机上,我们用bridge网络通信即可。 而在swarm集群中,我们一般都会使用overlay型的
网络来覆盖所有位于不同docker主机中的容器。


一个测试案例

vi  stack.yml ,内容如下:


version: '3'
services:
  web:
    image: ikubernetes/myapp:v1
    networks:
      - mynet
    ports:
      - 80:80
    deploy:
      mode: replicated
      replicas: 6
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      #resources:
      #  limits:
      #    cpus: '0.50'
      #    memory: 50M
      #  reservations:
      #    cpus: '0.25'
      #    memory: 20M
networks:
  mynet:
    driver: overlay
#使用yml配置文件,部署swarm服务
docker stack deploy -c mystack.yml mystack  #部署服务


(

当然,用命令行执行部署也可:

docker service  create --name test1 -p 80:80 --replicas 3  ikubernetes/myapp:v1


注意: 访问ip:/hostname.html这个页面会输出容器的hostname (/etc/hostname文件内容)
 )

 


测试下访问web服务:

在docker容器内部: 
wget -O - -q  10.0.0.46/hostname.html    ingress网络(默认的overlay),无法访问
wget -O - -q  10.0.1.4/hostname.html     自定义的mynet网络(overlay),可以访问 
wget -O - -q  localhost/hostname.html    回环地址,可以访问
wget -O - -q  172.18.0.3/hostname.html   特权地址,可以访问 
wget -O - -q  172.18.0.1/hostname.html  service的虚拟IP,可以访问,多次请求有负载均衡效果  
wget -O - -q  192.168.11.13/hostname.html 节点ip,可以访问,多次请求有负载均衡效果


在集群的各个节点主机中:
curl  172.18.0.1/hostname.html  service的虚拟IP,多次请求有负载均衡效果

在集群外部,访问各个节点ip,多次请求有负载均衡效果
curl 192.168.11.13/hostname.html
curl 192.168.11.13/hostname.html
curl 192.168.11.14/hostname.html
curl 192.168.11.14/hostname.html
curl 192.168.11.15/hostname.html
curl 192.168.11.15/hostname.html

 


 docker stack 命令参考:
  deploy      Deploy a new stack or update an existing stack
  ls          List stacks
  ps          List the tasks in the stack
  rm          Remove one or more stacks
  services    List the services in the stack

例如:
docker stack ls 
docker stack ps mystack
docker stack services mystack 
docker stack rm mystack 
docker stack  deploy -c mystack.yml mystack 
 )



二、执行滚动更新


1、使用命令行执行滚动更新
docker service update --image ikubernetes/myapp:v2 --update-parallelism 1 --updae-delay 10s  mystack_web
 
2、使用yml配置清单文件执行滚动更新
修改mystack.yml中 ,web服务的镜像版本为ikubernetes/myapp:v2 保存后,执行:
docker stack deploy -c mystack.yml mystack  #执行更新

swarm中默认是采用滚动更新机制,所以在执行更新期间用户仍有可能访问到老版本的页面 。

over  ~~



关键字:  docker  swarm  stack
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号