天天看點

基于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

繼續閱讀