docker Swarm mode集羣

基本概念node

Swarm 是使用 SwarmKit 構建的 Docker 引擎內置(原生)的集羣管理和編排工具。linux

使用 Swarm 集羣以前須要瞭解如下幾個概念。nginx

節點docker

運行 Docker 的主機能夠主動初始化一個 Swarm 集羣或者加入一個已存在的 Swarm 集羣,vim

這樣這個運行 Docker 的主機就成爲一個 Swarm 集羣的節點 ( node ) 。ssh

節點分爲管理 ( manager ) 節點和工做 ( worker ) 節點。ide

管理節點用於 Swarm 集羣的管理, docker swarm 命令基本只能在管理節點執行(節點退出工具

集羣命令 docker swarm leave 能夠在工做節點執行)。一個 Swarm 集羣能夠有多個管理節this

點,但只有一個管理節點能夠成爲 leader , leader 經過 raft 協議實現。spa

工做節點是任務執行節點,管理節點將服務 ( 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-1-4ansve0ondlgnup8hpqooycsmc3k46uyanwfr1j3mqq3uo2ewk-6fy9zl540fq9mlr2znfj9kggo \
    172.16.204.133:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
View Code

若是你的 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了!!!

相關文章
相關標籤/搜索