1. 程式人生 > >10、docke swarm安裝和使用

10、docke swarm安裝和使用

簡介
    Swarm 在 Docker 1.12 版本之前屬於一個獨立的專案,在 Docker 1.12 版本釋出之後,該專案合併到了 Docker 中,成為 Docker 的一個子命令。目前,Swarm 是 Docker 社群提供的唯一一個原生支援 Docker 叢集管理的工具。它可以把多個 Docker 主機組成的系統轉換為單一的虛擬 Docker 主機,使得容器可以組成跨主機的子網網路。
Docker Swarm 是一個為 IT 運維團隊提供叢集和排程能力的編排工具。使用者可以把叢集中所有 Docker Engine 整合進一個「虛擬 Engine」的資源池,通過執行命令與單一的主 Swarm 進行溝通,而不必分別和每個 Docker Engine 溝通。在靈活的排程策略下,IT 團隊可以更好地管理可用的主機資源,保證應用容器的高效執行。

1、基本概念
    節點--docker 節點 分為工作(worker)節點和管理(master)節點 ,管理節點用於swarm叢集管理,工作節點是任務執行節點
    服務和任務--任務是swarm中的最小排程單元,目前就是一個簡單的容器,服務是指一組任務的集合,它定義了任務的屬性

2、建立swarm叢集
    2.1、建立管理節點
        docker swarm init
        執行成功後會輸出docker swarm join --token ... 命令,在其他機器上執行這個命令,就可以讓這臺機器加入這個叢集

        預設管理節點也是工作節點,可以使用以下命令禁止叢集上的服務部署到管理節點,保證管路節點只做管理角色
        docker node update --availability drain [naem|ID]

    2.2、建立工作節點
        在工作節點機器上執行上述輸出的命令,執行成功後,工作節點就加入成功了,如果忘記上述命令可以在管理節點執行 docker swarm join-token worker 命令獲得

    2.3、建立備份管理節點
        在主管理節點即第一次建立叢集的機器上執行docker swarm join-token manager
        會輸出建立管理節點的命令,在要建立管理叢集的節點上執行上述命令

    2.4、檢視叢集狀態
        docker node ls

    2.5、退出叢集
        docker swarm leave(在工作節點執行)
        注意命令執行後立即在管理節點執行docker node ls 可以看到狀態依然是Ready,需要等待一段時間狀態才會變成DOWN
        如果要刪除管理節點,首先要在管理節點將要刪除的管理節點降級成工作節點即使用
        docker node demote [ID|name] ,再在已經降級為工作節點上執行dokcer swarm leave,如果使用docker swarm leave --force直接刪除一個管理節點將會使叢集崩潰

        注意要退出叢集時最好將此節點的狀態先置為drain,使用如下命令
        docker node update --availability drain [naem|ID]
        使用上述命令後此節點上所有容器將遷移到其他工作節點上,
    
    2.6、刪除節點
        在管理節點執行 docker node rm [ID|NAME] 刪除一個退出叢集的節點即狀態必須是DOWN

    2.7、升級和降級工作節點
        將工作節點升級成管理節點
        docker node promote [ID|name]
        將管理節點降級為工作節點
        docker node demote [ID|name]

    2.8、調整節點訪問屬性
        docker node update --availability active [ID|name]
        將節點訪問屬性置為active, 表明節點可以被被分配任務
        docker node update --availability pause [ID|name]
        將節點訪問屬性置為pause, 表明節點暫停分配任務,當舊的任務或容器將保持,
        docker node update --availability drain [ID|name]
        將節點訪問屬性置為drain, 表明節點停止任務分配,並將已執行的任務分配到其他機器上

3、叢集服務相關命令
    3.1、檢視服務列表
        docker service ls
        
    3.2、檢視某個服務的具體資訊
        docker service ps [service_name]
        
    3.3、建立一個服務
        docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine
        
    3.4、更新服務引數
        更新埠
            docker service update --publish-rm 80:80 my_web
        刪除埠
            docker service update --publish-rm 80:80 my_web
        更新映象
            docker service update --image redis:3.0.7 redis
        更改所分配的cpu和記憶體
            docker service update --reserve-cpu 1 --reserve-memory 256m my_nginx
        指定每次更新的容器數量
            --update-parallelism
        指定容器更新的間隔
            --update-delay
        
    3.5、服務回退
        docker service rollback nginx
        
    3.6、檢視服務log
        docker service ps nginx
        
    3.7、刪除一個映象
        docker service rm my_web

    3.8、建立群組並配置cpu和記憶體
        docker service create --name my_nginx --reserve-cpu 2 --reserve-memory 512m --replicas 3 nginx

    3.9、服務伸縮
        docker service scale nginx=5

    3.10、docker swarm web管理工具
        下載protainer映象
            docker pull portainer/portainer
        啟動映象
            docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer:/data portainer/portainer
        使用瀏覽器開啟頁面

        注意
        docker swarm 的命令一般只能在管理節點上執行,但docker swarm leave是可以在工作節點上執行的

    3.11、錯誤彙總
        1、Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid
            原因:主機時間不同步導致的
            解決方法:同步主機時間  ntpdate -u ntp.api.bz
            參考
                https://www.cnblogs.com/Peter2014/p/7728762.html
                https://blog.csdn.net/weiyuefei/article/details/71514133