zoukankan      html  css  js  c++  java
  • 用 Label 控制 Service 的位置

    上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode。无论采用 global mode 还是 replicated mode,副本运行在哪些节点都是由 Swarm 决定的,作为用户我们有没有可能精细控制 Service 的运行位置呢?

    答案是:能,使用 label。

    逻辑分两步:

    1. 为每个 node 定义 label。

    2. 设置 service 运行在指定 label 的 node 上。

    label 可以灵活描述 node 的属性,其形式是 key=value,用户可以任意指定,例如将 swarm-worker1 作为测试环境,为其添加 label env=test

    docker node update --label-add env=test swarm-worker1

    544.png

    对应的,将 swarm-worker2 作为生产环境,添加 label env=prod

    docker node update --label-add env=prod swarm-worker2

    现在部署 service 到测试环境:

    docker service create 
    --constraint node.labels.env==test
    --replicas 3
    --name my_web
    --publish 8080:80
    httpd

    545.png

    --constraint node.labels.env==test 限制将 service 部署到 label=test 的 node,即 swarm-worker1。从部署结果看,三个副本全部都运行在 swarm-worker1 上。

    可以通过 docker service inspect 查看 --constraint 的设置:

    546.png

    更新 service,将其迁移到生产环境:

    docker service update --constraint-rm node.labels.env==test my_web  
    docker service update --constraint-add node.labels.env==prod my_web

    删除并添加新的 constraint,设置 node.labels.env==prod,最终所有副本都迁移到了 swarm-worker2

    547.png

    label 还可以跟 global 模式配合起来使用,比如只收集生产环境中容器的日志。

    docker service create 
    --mode global
    --constraint node.labels.env==prod
    --name logspout
    --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock
    gliderlabs/logspout

    只有 swarm-worker2 节点上才会运行 logspout。

    548.png

    Label 就讨论到这里,下一节我们学习 Health Check。

    书籍:

    1.《每天5分钟玩转Docker容器技术》
    https://item.jd.com/16936307278.html

    2.《每天5分钟玩转OpenStack》
    https://item.jd.com/12086376.html

  • 相关阅读:
    五大Java开源论坛
    mysql limit,offset 区别
    查询某个字段存在于哪几个表
    C++分享笔记:5X5单词字谜游戏设计
    Linux分享笔记:系统状态检测命令小结
    Linux分享笔记:查看帮助命令 & 常用系统工作命令
    数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次
    Linux分享笔记:shell终端的介绍
    Java开发学生管理系统
    JAVA使用JDBC连接,修改MySQL数据库(比较乱)
  • 原文地址:https://www.cnblogs.com/CloudMan6/p/8038799.html
Copyright © 2011-2022 走看看