swarm基础架构

manager之间通信靠分布式存储Raft,worker靠Gossip network。

filter功能:

  ●  约束过滤器(Constraint Filter)

  约束过滤器通过启动Docker守护进程时指定的标签label来查找合适的被管理主机。label是通过启动参数的方式在启动时被固定的:

--label datacenter=us-east1

  这个参数加入到之前说过的docker.service,或者手动加在启动docker的命令后面等等。

  而在启动容器时通过这样的方式来指定过滤器:

docker -H 127.0.0.1:8888 run -e constraint:datacenter==us-east1 -d --name www-use1 nginx

  -e后面跟过滤器,constraint指出了约束过滤器,后面的约束标签支持==,!=两种判断,后面可以写字符串和正则表达式如us-east*。

  ●  亲和过滤器(Affinity Filter)

  亲和过滤器以现有的某个容器为基准,让新容器运行在/不在已经运行了某个现有容器的主机上运行。

docker run -d -e --name db affinity:container!=www-use1 mysql

  比如上面这条命令说的就是要根据mysql镜像启动一个名为db的容器,但是这个容器不能在已经预www-use1容器运行的主机上运行。

  ●  端口过滤器

  端口过滤器严格来说并不是一个真的过滤器。。它只是在启动容器时通过-p参数来申请对一个主机端口的使用权。如果一台主机上这个端口正在被使用那么自然是不能把容器放到这个主机上运行的。

  

  除了上述三种,过滤器还有很多,可以通过swarm manage --help或者去官网查。总的来说,过滤器是一种主动指定主机的手段,配合swarm自身的自动分配机制,可以灵活地确定一台主机来运行容器。

  如果当前集群中swarm找不到一台符合条件的主机来运行容器,那么swarm会明确指出哪个过滤器条件得不到满足,从而启动容器失败。

策略:

random策略:随机选择节点。一般用于开发测试阶段。

spread策略:默认策略,swarm优先选择占用资源(如CPU、内存等)最少的节点,能保证集群中所有节点资源的均匀使用。

它的好处是,保证

binpack策略:与spread相反,它的目的是尽可能地填满一个节点,以保证更多空余的节点。

服务发现:

配置manager节点

docker swam init --advertise-addr=192.168.205.10

增加worker节点:

docker swarm join --token xxxx 192.168.205.10:2377

查看所有节点:

docker node ls

Service的创建与维护

创建service:

docker service create --name demo <image>

查看service:

docker service ls

区别docker name和docker service name:

demo是service的name,不是container的name。

service水平扩展:

docker service scale demo=5

5个service平均分部在manager和worker:

当一个service挂掉时,swarm为了保证数量,会重新部署一个service。

删除service:

docker service rm demo

service会先删除,容器删除会比较慢。

用Service部署wordpress

部署mysql:

--mount等于docker里的-v。

部署wordpress:

swarm为了保证service之间的通信,会同步network的创建,就是说另外的机器上也能看到其他机器上的network。

查看dns:

nslookup www.imooc.com

10.0.0.7是虚拟ip

10.0.0.7相当于VIP,以上是internal的体现。

Internal是通过LVS实现,Ingress是通过IPVS实现。

Internal Load Balancing实现方式:

有两种实现方式dns rr和vip形式,在dns rr 的情况下可能会存在一定是的问题,当容器重启后dns的解析会存在一定时间的延迟。vip则是由vip+内核ipvs来实现。docker swarm默认使用的是vip,这里就以vip的形式来解析。

当访问的节点没有服务的时候会转发到有服务的端口。

查看ip防火墙:

iptables -nL -t nat

查看docker的网络命名空间:

ls /var/run/docker/netns

进入命名空间:

nsenter --net=/var/run/docker/netns/ingress_sbox

DockerStack

docker stack deploy wordpress --compose-file=docker-compose.yml

docker stack ls
docker stack ps wordpress

docker-compose和新命令docker stack commands都可以处理版本号为3的docker-compose.yml文件。对于版本号为2的文件,你不得不继续使用docker-compose.

stack --> service --> task(container)

visualizer是官方的简单容器状态可视化工具。

Secret

创建方式1:

docker secret create <name> <filename> rm -rf <file>

docker secret ls

创建方式2:

echo "123" | docker secret create my-pw2 -

更新

swarm容器编排(多机管理容器)相关推荐

  1. 容器编排技术 -- Windows Server 容器

    容器编排技术 -- Windows Server 容器 1 前提条件 2 网络 2.1 Linux 2.2 Windows 3 在Kubernetes上搭建Windows server 容器 3.1  ...

  2. 容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源

    容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源 1 Before you begin 2 创建一个命名空间 3 声明一个CPU申请和限制 4 CPU 单位 5 请求的CPU超出 ...

  3. 容器编排技术 -- Kubernetes 给容器和Pod分配内存资源

    容器编排技术 -- Kubernetes 给容器和Pod分配内存资源 1 Before you begin 2 创建一个命名空间 3 配置内存申请和限制 4 超出容器的内存限制 5 配置超出节点能力范 ...

  4. ChirpStack 学习笔记 2.8.1 ChirpStack 容器连接本机 InfluxDB 容器的一个典型问题处理

    文章目录 前言 1 问题描述 2 原因分析 2.1 容器网络分析 lora-app-server_default loraserver-docker_default 2.2 容器网络梳理 3 处理方案 ...

  5. ASP.NET Core 借助 K8S 玩转容器编排

    Production-Grade Container Orchestration - Automated container deployment, scaling, and management. ...

  6. 浅述 Docker 的容器编排

    作者 | 天元浪子 来源 | CSDN博客 概述 作为容器引擎,Docker为容器化的应用程序提供了开放标准,使得开发者可以用管理应用程序的方式来管理基础架构,实现快速交付.测试和部署代码.随着容器的 ...

  7. 云原生时代(五):Kubernetes与容器编排之战

    上文我们主要介绍了容器和Docker,第五部分我们来讲Kubernetes与容器编排之战. 容器编排与Kubernetes 在单机上运行容器,无法发挥它的最大效能,只有形成集群,才能最大程度发挥容器的 ...

  8. 【贯穿】.NET6结合Docker傻瓜式实现容器编排

    常规开发部署的痛点 一个项目的开发上线有很多纷繁复杂的问题,例如:操作系统运行环境以及各种应用配置.集群环境搭建等等.特别是各种版本的迭代导致的不兼容,这些对于曾经的架构师而言也十分苦恼.而Docke ...

  9. 容器编排中的容器编排技术博客

    文章目录 <容器编排中的容器编排技术博客> <容器编排中的容器编排技术博客> 引言 1.1. 背景介绍 随着云计算和 DevOps 的兴起,容器化技术逐渐成为构建可扩展.灵活. ...

最新文章

  1. 使用NATAPP.cn测试微信支付回调接口
  2. Oracle Varchar2 字段转成Clob字段
  3. golang beego orm mysql sqlite3 postgresql 模型字段 数据库类型 对应关系
  4. 启明云端分享| SSD212 SPI+RGB点屏参考
  5. matlab图像增强分段线性函数_图像增强、锐化,利用 PythonOpenCV 来实现 4 种方法!...
  6. 赠票福利 | 2018人工智能计算大会报名开启:算力爆燃,AI进化
  7. BZOJ 2431 DP
  8. WinHEC 2008 China
  9. MoviePy - 中文文档1-下载与安装
  10. vga转换html转换器接线,绿联HDMI转VGA转换器拆解测评
  11. 魔百盒CM311-1_S905L3芯片_YST代工_红外蓝牙语音_安卓9.0_线刷固件包
  12. “80后”博士,晋升正厅!
  13. 机器人系统设计(五)
  14. 常见浏览器宽高及可视区域的宽高获取问题
  15. 软件测试自学英语语法,5个能力一流的英语自学APP,赶紧盘它,让你告别零基础...
  16. 欢迎使用CSDN-markdown编辑器12321432432
  17. 快速批量创建文件夹、文件的快捷键
  18. Linux设置开机自启
  19. 《我学区块链》—— 二、一些概念和工具
  20. 树莓派搭建百度云同步

热门文章

  1. vue 打印(模板套打)
  2. 用计算机求锐角三角形的度数,三角函数超入门(2)锐角三角形的三角比
  3. Argo workflow 入门
  4. 致敬最美抗击疫情的逆行者 DIV布局大学生抗疫感动专题网页设计作业模板 疫情感动人物静态HTML网页模板下载
  5. 从一个故事谈项目管理与团队管理
  6. Livy 安装使用说明
  7. iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频
  8. Android8.0 HTML5,HTML5 7个最牛的HTML5移动开发框架
  9. 金蝶eas文件更新服务器端口,如何更改金蝶eas服务器地址
  10. java 获取两个List 中 不同对象