天天看點

1.07 容器編排docker Swarm

1.編排swarm簡介

學習怎麼将docker用于生産環境,前面學的是用于本地測試環境

之前學的是通過docker用戶端連接配接安裝好docker的linux機器,如下圖

1.07 容器編排docker Swarm

生産環境下機器和容器都非常多,怎麼去管理容器?怎麼橫向擴充?如果容器down了怎麼恢複?如何更新容器不影響業務?如何監控容器?如何排程容器的建立?如何保護隐私資料?

swarm是内置于docker的容器編排工具

1.07 容器編排docker Swarm

swarm叢集架構圖,有manager和worker兩種角色

manager至少有兩個,内置分布式存儲資料庫實作資料同步,這裡是通過Raft進行資料同步的,不會出現腦裂的情況,最終實作HA

worker之間通過gossip的網絡做資料同步

1.07 容器編排docker Swarm

service和replicas,部署nginx的service,實際部署産生三個容器,三個容器通過排程系統,排程到不同的節點

也就是部署時,最初是不知道擴充節點會部署到哪裡的,由swarm通過排程算法去算的,看哪個機器目前空閑

1.07 容器編排docker Swarm

服務建立和排程

在swarm manage做決策,決定将worker部署到哪裡

1.07 容器編排docker Swarm

2.三節點swarm叢集的搭建

準備三台裝好docker的機器,這裡做一個manager,兩個worker

在主節點node01初始化swarm

運作完生成一行指令,子節點加入時,複制這一行代碼執行就可以

1.07 容器編排docker Swarm

node02和node03分别作為worker加入

1.07 容器編排docker Swarm
1.07 容器編排docker Swarm

檢視目前swarm節點

1.07 容器編排docker Swarm

節點退出swarm叢集

1.07 容器編排docker Swarm

快速部署:

位址:https://labs.play-with-docker.com/

1.07 容器編排docker Swarm

執行上面的步驟

3.建立維護Service并擴充

建立service

1.07 容器編排docker Swarm

檢視service狀态

1.07 容器編排docker Swarm

檢視service建立的container的情況

1.07 容器編排docker Swarm

然後在對應節點可以檢視程序

1.07 容器編排docker Swarm

将service橫向擴充

1.07 容器編排docker Swarm

檢視一共有5個demo執行個體

1.07 容器編排docker Swarm

不同節點檢視程序,5個service平均配置設定到manager和workder

1.07 容器編排docker Swarm

node02中,删除一個容器

1.07 容器編排docker Swarm

删完立刻去主節點檢視,少了一個demo執行個體

1.07 容器編排docker Swarm

主節點檢視,會自動恢複

1.07 容器編排docker Swarm

主節點删除service

1.07 容器編排docker Swarm

4.使用DockerStack部署VotingApp

進入之前的/home/voting-example目錄,将之前的docker-compose.yml内容删掉

1.07 容器編排docker Swarm

swarm模式編譯運作

1.07 容器編排docker Swarm

檢視運作狀态

1.07 容器編排docker Swarm

檢視運作詳細情況,多次執行,直到部署好

1.07 容器編排docker Swarm

通路IP:5000是投票的頁面

1.07 容器編排docker Swarm

通路IP:5001是檢視結果的頁面

1.07 容器編排docker Swarm

叢集運作狀态下,将vote擴充為3個

1.07 容器編排docker Swarm

檢視到多了一個執行個體

1.07 容器編排docker Swarm

停止并删除所有service

1.07 容器編排docker Swarm

5.使用DockerStack部署可視化應用

建立目錄

1.07 容器編排docker Swarm

部署服務

1.07 容器編排docker Swarm

檢視stack部署情況

1.07 容器編排docker Swarm

浏覽器通路任意節點的9001端口

1.07 容器編排docker Swarm

檢視stack執行個體

1.07 容器編排docker Swarm

叢集運作狀态下,将stack-demo_portainer擴充為3個

1.07 容器編排docker Swarm

浏覽器通路任意節點的9001端口,此時stack-demo_portainer變為了3個執行個體

1.07 容器編排docker Swarm

删除stack執行個體

1.07 容器編排docker Swarm

6.使用并管理DockerSecret

secret可以是使用者名和密碼,也可以是SSH key,可以是任何不想讓别人看到的資料

docker swarm的架構如下,manager節點有基于raft的内置的分布式存儲,是加密後存儲的,worker資訊也是加密是,也是分布式存儲的

1.07 容器編排docker Swarm

随意建立一個檔案

1.07 容器編排docker Swarm

建立secret

1.07 容器編排docker Swarm

此時密碼已經存儲到manager的分布式存儲中了

1.07 容器編排docker Swarm

檢視secret

1.07 容器編排docker Swarm

也可以從标準輸入建立

1.07 容器編排docker Swarm

再次檢視secret

1.07 容器編排docker Swarm

删除secret

1.07 容器編排docker Swarm

建立mysql的service

1.07 容器編排docker Swarm

檢視程序運作的節點,這裡看到是node03運作的

1.07 容器編排docker Swarm

node03中檢視程序

1.07 容器編排docker Swarm

node03中互動運作mysql

1.07 容器編排docker Swarm

互動運作時可以檢視密碼,然後用這個密碼登入mysql

1.07 容器編排docker Swarm
1.07 容器編排docker Swarm
1.07 容器編排docker Swarm

7.更新service版本

建立demo網絡

1.07 容器編排docker Swarm

檢視網絡

1.07 容器編排docker Swarm

建立service,可以去dockerHub檢視nginx版本

1.07 容器編排docker Swarm

通路80端口,會傳回一個歡迎頁

1.07 容器編排docker Swarm

在node01寫一個腳本,不停通路

1.07 容器編排docker Swarm

在另一個會話,更新service的版本到1.13

1.07 容器編排docker Swarm

node02通路業務,自動切換到新版本

1.07 容器編排docker Swarm

在另一個會話,更新通路端口

1.07 容器編排docker Swarm

node02通路,檢視效果

1.07 容器編排docker Swarm

繼續閱讀