基本概念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.
若是你的 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了!!!