天天看点

基于docker1.12创建swarm集群

       docker 1.12 在 2016 年 7 月 28 日正式 ga,除了大量的在使用上的改进和 bug 修复外,最引人瞩目的是docker原生支持了 swarm 模式,而不是将swarm作为一个容器对集群进行管理。

而docker1.12的操作命令并不向下兼容,于是过去所有创建swarm集群的文档都不能参考了,本文描述了基于docker1.12版本创建swarm集群的过程。

1、主机环境

在阿里云上申请三个vpc网络的ecs,安装centos7.0的镜像,ip和角色分配如下:

192.168.0.18 manager

192.168.0.19 worker

192.168.0.20 worker

2、docker安装

参考官方文档:https://docs.docker.com/engine/installation/linux/centos/

1)首先确认内核版本,内核版本至少要3.10以上

uname -r

2)增加docker的yum源配置

tee /etc/yum.repos.d/docker.repo <<-'eof'

[dockerrepo]

name=docker repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

eof

3)yum安装docker

yum install libdevmapper* -y

yum install docker-engine -y

4)启动docker

service docker start

ps auxwww | grep -i docker

5)配置阿里云的docker源镜像加速

登录阿里云账号,开通阿里云的容器服务

通过以下地址确认阿里云账号专属的加速器地 https://cr.console.aliyun.com/#/docker/booster 

vi /usr/lib/systemd/system/docker.service

原内容:execstart=/usr/bin/dockerd 

修改成 execstart=/usr/bin/dockerd --registry-mirror=https://被替换内容.mirror.aliyuncs.com

systemctl daemon-reload 

service docker restart

3、docker原生swarm的概念普及

1)manager与worker

一个集群最多有3-7个manager,其他都是worker

manager节点:负责对任务进行调度和其它管理任务,多个管理节点通过 raft 协议组成集群;

worker节点:负责运行具体的任务,管理节点可以同时作为工作节点

2)server包括两种类型:

复制服务(replicated services):类似 k8s 中复制集的概念,保持一定数量的相同任务在集群中运行;

全局服务(global services):类似 k8s 中 daemon 的概念,每个工作节点上运行一个。

一个服务由多个任务组成,一个任务即一个运行的容器。

4、swarm集群的创建

参考文档 https://docs.docker.com/engine/reference/commandline/swarm_init/

192.168.0.18 manager 

初始化swarm集群

docker swarm init --advertise-addr 192.168.0.18

swarm initialized: current node (4bl82cxazydg7y86kzbmfief3) is now a manager.

to add a worker to this swarm, run the following command:

docker swarm join \

--token swmtkn-1-1mtdmuzd5n5il70r7mm1sg66rnr6ov38dumfdon408sq4nmqgz-0gej194ntpt73v3zhqiy0sq31 \

192.168.0.18:2377

to add a manager to this swarm, run the following command:

--token swmtkn-1-1mtdmuzd5n5il70r7mm1sg66rnr6ov38dumfdon408sq4nmqgz-3pnkjncrpfh4d94aghk2a9h2w \

manager上查看当前集群节点

docker node ls

id                           hostname      status  availability  manager status

4bl82cxazydg7y86kzbmfief3 *  iz23ogad28gz  ready   active        leader

192.168.0.19/192.168.0.20

docker swarm join --token swmtkn-1-1mtdmuzd5n5il70r7mm1sg66rnr6ov38dumfdon408sq4nmqgz-0gej194ntpt73v3zhqiy0sq31 192.168.0.18:2377

manager上查看集群状态

avd0uhd0mjt939sz8pje1mdyq    iz232tm0nizz  ready   active        

dpqqdnkcagubmank7qw9i7jhz    iz23h6u54mvz  ready   active 

在192.168.0.20上,将节点手动脱离

docker swarm leave

node left the swarm.

回到manager上查看集群状态

dpqqdnkcagubmank7qw9i7jhz    iz23h6u54mvz  down    active  

围绕集群和服务进行管理还涉及到如下的命令,可以直接参考官方文档

https://docs.docker.com/engine/reference/

swarm init

swarm join

service create

service inspect

service ls

service rm

service scale

service ps

service update