docker Swarm mode集群


基本概念

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-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了!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM