基本概念

Swarm 是使用 SwarmKit 构建的 Docker 引擎内置(原生)的集群管理和编排工具。

使用 Swarm 集群之前需要了解以下几个概念。

节点

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,

这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 ( node ) 。

节点分为管理 ( manager ) 节点和工作 ( worker ) 节点。

管理节点用于 Swarm 集群的管理, docker swarm 命令基本只能在管理节点执行(节点退出

集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节

点,但只有一个管理节点可以成为 leader , leader 通过 raft 协议实现。

工作节点是任务执行节点,管理节点将服务 ( service ) 下发至工作节点执行。管理节点默认

也作为工作节点。你也可以通过配置让服务只运行在管理节点。

来自 Docker 官网的这张图片形象的展示了集群中管理节点与工作节点的关系。

服务和任务

任务 ( Task )是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

服务 ( Services ) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

global services 每个工作节点上运行一个任务

两种模式通过 docker service create 的 --mode 参数指定。

来自 Docker 官网的这张图片形象的展示了容器、任务、服务的关系。

================================================================================

创建 Swarm 集群

阅读 基本概念 一节我们知道 Swarm 集群由管理节点和工作节点组成。本节我们来创建一个

包含一个管理节点和两个工作节点的最小 Swarm 集群。

初始化创建一个管理节点:172.16.204.133为管理节点   172.16.204.134个172.16.204.135为work节点

#节点对应主机名并添加到管理节点的hosts文件中
172.16.204.133 manager1
172.16.204.134 work1
172.16.204.135 work2
#更新所有系统和内核版本
yum -y update
yum -y install kernel-devel
#记得升级完内核版本需要重启哈

1.三个节点都安装docker

yum -y install docker

vim /etc/sysconfig/docker
#修改--selinux-enabled为--selinux-enabled=false,否则docker启动会报错

2.172.16.204.133节点上初始化一个 Swarm 集群,

[root@localhost ~]# docker swarm init --advertise-addr 172.16.204.133
Swarm initialized: current node (bn692uq61llcnrdulwz1a4ur0) is now a manager. To add a worker to this swarm, run the following command: docker swarm join \
--token SWMTKN--4ansve0ondlgnup8hpqooycsmc3k46uyanwfr1j3mqq3uo2ewk-6fy9zl540fq9mlr2znfj9kggo \
172.16.204.133: To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

如果你的 Docker 主机有多个网卡,拥有多个 IP,必须使用 --advertise-addr 指定 IP。

执行 docker swarm init 命令的节点自动成为管理节点。

3.增加工作节点

安装docker-machine

[root@manager1 opt]# wget https://mirrors.aliyun.com/docker-toolbox/linux/machine/0.15.0/docker-machine-Linux-x86_64
[root@manager1 opt]#mv docker-machine-Linux-x86_64 docker-machine && mv docker-machine /usr/local/bin/ && cd /usr/local/bin/ && chmod +x docker-machine && docker-machine version
[root@manager1 ~]# docker-machine create -d virtualbox work1
[root@manager1 ~]# docker-machine ssh work1

 docker@work1:~$ docker swarm join \
  > --token SWMTKN-1-4ansve0ondlgnup8hpqooycsmc3k46uyanwfr1j3mqq3uo2ewk-6fy9zl540fq9mlr2znfj9kggo \ 
  > 172.16.204.133:2377

docker@work1:~$ exit

[root@manager1 ~]# docker-machine create -d virtualbox work2
[root@manager1 ~]# docker-machine ssh work2

 docker@work1:~$ docker swarm join \
  > --token SWMTKN-1-4ansve0ondlgnup8hpqooycsmc3k46uyanwfr1j3mqq3uo2ewk-6fy9zl540fq9mlr2znfj9kggo \ 
  > 172.16.204.133:2377

docker@work1:~$ exit

#查看节点已经添加成功了

[root@manager1 nginx]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
bn692uq61llcnrdulwz1a4ur0 * manager1 Ready Active Leader 19.03.4
l2yre8uwnxi31ugqskiw9swsd work1 Ready Active 19.03.3
u0hhtnjvp9o6djbxjeyfs5mbu work2 Ready Active

#如果节点down了

可以使用docker-machine  start work1来启动节点

##这个就先部署到这里,去搞k8s了!!!

最新文章

  1. 【CSS进阶】伪元素的妙用--单标签之美
  2. Not Hello World
  3. Web应用程序系统的多用户权限控制设计及实现-总结【11】
  4. MVN使用随笔
  5. 《数学之美》(吴军 著)读书笔记:第1章 文字和语言 vs 数字和信息
  6. MySQL 5.6.3
  7. wordpress网站被挂马以及防御方法
  8. 如何在.NET MVC中使用jQuery并返回JSON数据
  9. win10 10586 关机便利贴报内存不能为 read 应用程序错误
  10. MAC OSX 下安装 CTAGS
  11. ajax上传图片 jquery插件 jquery.form.js 的方法 ajaxSubmit; AjaxForm与AjaxSubmit的差异
  12. pgrep 查询进程的工具
  13. C#显示声名接口就是为了解决方法重名的问题
  14. Angular 非父子组件间的service数据通信
  15. Python爬虫之Selenium库的基本使用
  16. python作业高级FTP
  17. [原创]Struts2奇葩环境任意文件上传工具(解决菜刀无法传文件或上传乱码等问题)
  18. API网关【gateway 】- 3
  19. 判断iframe加载完成、用于当ifame加载完成时执行一些操作
  20. Selenium自动化测试Python四:WebDriver封装

热门文章

  1. 解决IDEA报错Could not autowire. There is more than one bean of 'xxx' type
  2. mysql数据库:分表、多表关联、外键约束、级联操作
  3. 卸载CUDA和cuDNN
  4. 查看是否用GPU跑的TensorFlow程序
  5. PAT Basic 1092 最好吃的月饼 (20 分)
  6. java-web服务器-tomcat
  7. crc32 cpp Makefile可参考
  8. Python:多进程。
  9. 关于div的水平垂直居中
  10. 初识 MQTT——IBM