欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker中的集群管理與應(yīng)用方式

 更新時間:2025年05月21日 11:03:44   作者:阿無@_@  
這篇文章主要介紹了Docker中的集群管理與應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、項(xiàng)目案例

1、準(zhǔn)備主機(jī)

(1)關(guān)閉防火墻,或者開放TCP端口2377(用于集群管理通信)、TCP/UPD端口7946(用于節(jié)點(diǎn)之間的通信)、UDP端口4789(用于overlay網(wǎng)絡(luò)流量監(jiān)控)

(2)安裝docker

(3)設(shè)置靜態(tài)ip

(4)修改主機(jī)名

2、創(chuàng)建Swarm集群

(1)主節(jié)點(diǎn)創(chuàng)建新的Swarm集群

[root@manager01 ~]# docker swarm init --advertise-addr 192.168.75.129
Swarm initialized: current node (y8rm15jh2qs5e3qsh6n13cxfh) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-48xia8024q8de6jxhca3whxenfeayo7hx8tdvg7lb1c28i4zfo-e8m7203crmlpwsmdfn3afyyss 192.168.75.129:2377

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

(2)第一個工作節(jié)點(diǎn)加入集群

[root@worker01 ~]# docker swarm join --token SWMTKN-1-48xia8024q8de6jxhca3whxenfeayo7hx8tdvg7lb1c28i4zfo-e8m7203crmlpwsmdfn3afyyss 192.168.75.129:2377

(3)第二個工作節(jié)點(diǎn)加入集群

[root@worker02 ~]# docker swarm join --token SWMTKN-1-48xia8024q8de6jxhca3whxenfeayo7hx8tdvg7lb1c28i4zfo-e8m7203crmlpwsmdfn3afyyss 192.168.75.129:2377
This node joined a swarm as a worker.

(4)查看集群節(jié)點(diǎn)信息

[root@manager01 ~]# docker info

3、查看節(jié)點(diǎn)信息

[root@manager01 ~]# docker node inspect worker01 --pretty

注:

(1)STATUS列表示節(jié)點(diǎn)當(dāng)前狀態(tài),Ready表示正常,Down表示已宕機(jī)

(2)AVAILABILITY列表示該節(jié)點(diǎn)的可用性狀態(tài),有3種狀態(tài)

  • 活動(Active):調(diào)度器能夠安排任務(wù)到該節(jié)點(diǎn)。
  • 暫停(Pause):調(diào)度器不能安排任務(wù)到該節(jié)點(diǎn)。但是已經(jīng)存在的任務(wù)會繼續(xù)運(yùn)行
  • 候選者(Drain):調(diào)度器不能安排任務(wù)到該節(jié)點(diǎn),且會停止已存在的任務(wù),并將這些任務(wù)分配到其他處于活動狀態(tài)的節(jié)點(diǎn)中。

(3)MANAGER STATUS列表示管理器狀態(tài),共有以下4中狀態(tài)

  • 領(lǐng)導(dǎo)者(Leader):為Swarm集群做出所有管理和編排的主要管理器節(jié)點(diǎn)
  • 候選者(Reachable):如果領(lǐng)導(dǎo)節(jié)點(diǎn)變?yōu)椴豢捎茫瑒t候選者節(jié)點(diǎn)有資格成為新的領(lǐng)導(dǎo)者節(jié)點(diǎn)。
  • 不可用(Unavailable):該節(jié)點(diǎn)不能和其他管理節(jié)點(diǎn)產(chǎn)生任何聯(lián)系,這種情況下,應(yīng)該添加一個新的管理器節(jié)點(diǎn)到集群中,或者將一個工作節(jié)點(diǎn)升級為管理器節(jié)點(diǎn)。
  • 空白:表明該節(jié)點(diǎn)是工作者節(jié)點(diǎn)

4、讓節(jié)點(diǎn)脫離集群

(1)在工作節(jié)點(diǎn)執(zhí)行,使worker02脫離集群,要在worker02主機(jī)上執(zhí)行

[root@worker02 ~]# docker swarm leave

(2)在主節(jié)點(diǎn)查看worker02的信息,并刪除該節(jié)點(diǎn)

[root@manager01 ~]# docker node ls
ID                            HOSTNAME    STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
y8rm15jh2qs5e3qsh6n13cxfh *   manager01   Ready     Active         Leader           23.0.2
f0aw8dor6hlkth9kzy4m3k0vt     worker01    Ready     Active                          23.0.2
xjpsue874nrm0hm3tw39mvwhl     worker02    Down      Active                          23.0.2
[root@manager01 ~]# docker node rm worker02
worker02
[root@manager01 ~]#

5、讓節(jié)點(diǎn)以管理器角色加入集群

(1)獲取加入管理角色的命令

[root@manager01 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-48xia8024q8de6jxhca3whxenfeayo7hx8tdvg7lb1c28i4zfo-3davlb9zjkr6gvvkrtu8mz3w2 192.168.75.129:2377

[root@manager01 ~]# 

(2)worker02加入集群的管理節(jié)點(diǎn)

[root@worker02 ~]# docker swarm join --token SWMTKN-1-48xia8024q8de6jxhca3whxenfeayo7hx8tdvg7lb1c28i4zfo-3davlb9zjkr6gvvkrtu8mz3w2 192.168.75.129:2377

(3)查看集群節(jié)點(diǎn)信息

[root@manager01 ~]# docker node ls
ID                            HOSTNAME    STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
y8rm15jh2qs5e3qsh6n13cxfh *   manager01   Ready     Active         Leader           23.0.2
f0aw8dor6hlkth9kzy4m3k0vt     worker01    Ready     Active                          23.0.2
pgm7vq62akim0ms9kz8duguru     worker02    Ready     Active         Reachable        23.0.2
[root@manager01 ~]# 

6、降級和升級節(jié)點(diǎn)

(1)在管理節(jié)點(diǎn)降級為工作節(jié)點(diǎn),在管理節(jié)點(diǎn)執(zhí)行

[root@worker02 ~]# docker node demote worker02

(2)在工作節(jié)點(diǎn)升級為管理節(jié)點(diǎn),在工作節(jié)點(diǎn)執(zhí)行

[root@worker02 ~]# docker node promote worker02

二、Docker Swarm 集群部署和管理服務(wù)

1、將服務(wù)部署到Swarm集群中

(1)創(chuàng)建服務(wù)

# docker service create --name swarm-web01 nginx

(2)使用docker service ls 命令查看正在運(yùn)行的服務(wù)列表

# docker service ls
ID             NAME          MODE         REPLICAS   IMAGE          PORTS
r5wx100nb2t6   swarm-web01   replicated   1/1        nginx:latest 

REPLICAS列為m/n:n代表副本數(shù),m代表正在運(yùn)行的副本

(3)使用 docker service ps 命令查看顯示任務(wù)列表信息,查看每個副本運(yùn)行節(jié)點(diǎn)的狀態(tài)信息

[root@master01 ~]# docker service ps swarm-web01

(4)使用docker service inspect 顯示有關(guān)服務(wù)的詳細(xì)信息,–pretty選項(xiàng)表示易于閱讀的格式

[root@master01 ~]# docker service inspect --pretty swarm-web01

ID:		r5wx100nb2t6vrtdsobnc1deg     #服務(wù)ID
Name:		swarm-web01               #服務(wù)名稱
Service Mode:	Replicated            #服務(wù)模式,這里為復(fù)制模式
 Replicas:	1                         #副本數(shù)
Placement:                            #服務(wù)配置
UpdateConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:                       #回滾配置
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:                        #容器定義
 Image:		nginx:latest@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
 Init:		false
Resources:
Endpoint Mode:	vip                   #端點(diǎn)模式

2、伸縮服務(wù)

(1)增加服務(wù)副本數(shù)

# docker service scale  swarm-web01=5 

查看任務(wù)列表(管理節(jié)點(diǎn))

# docker service ps swarm-web01

(2)減少文件副本數(shù)

# docker service scale swarm-web01=3

3、刪除swarm服務(wù)

# docker service rm swarm-web01

4、對服務(wù)的任務(wù)進(jìn)行滾動更新

(1)部署nginx到集群中,并配置8秒的更新延遲策略

# docker service create --replicas 3 --name my-web01 --update-delay 8s nginx

–update-delay 選項(xiàng)用于配置更新一個或多個任務(wù)之間的延遲時間,時間可以使用的單位有秒(s)、分鐘(min)或小時(h)、還可以組合使用更多單位的時間,如5min30s,表示延遲5分鐘30秒

默認(rèn)情況下,調(diào)度器一次更新一個任務(wù),可以通過 --update-parallelism 選項(xiàng)來配置調(diào)度器同事(并發(fā))更新的最大服務(wù)任務(wù)數(shù)。

默認(rèn)情況下,當(dāng)對單個任務(wù)的更新完成并返回運(yùn)行狀態(tài)時,調(diào)度器會調(diào)度另一個任務(wù)來更新,直到所有任務(wù)被更新。如果在任務(wù)更新期間的任何時間都返回失?。‵AILED)狀態(tài),則調(diào)度器會暫停更新??梢允褂?--update-failure-action 選項(xiàng)來控制 docker service create 或 docker service update 命令的行為。

(2)查看my-web01服務(wù)的詳細(xì)信息

[root@master01 ~]# docker service inspect my-web01 --pretty

ID:		c5k770ixaswchg3p96lsh9g3p
Name:		my-web01
Service Mode:	Replicated
 Replicas:	3
Placement:
UpdateConfig:                     #更新配置
 Parallelism:	1                 #同時更新的最大任務(wù)數(shù)
 Delay:		8s                    #更新之間的延遲操作時間
 On failure:	pause             #更新失敗后的操作
 Monitoring Period: 5s            #每個任務(wù)更新后的延遲時間
 Max failure ratio: 0             #更新期間容許的失敗率
 Update order:      stop-first    #更新順序
RollbackConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:                    #容器定義
 Image:		nginx:latest@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
 Init:		false
Resources:
Endpoint Mode:	vip

(3)使用 docker service update 命令更新容器鏡像

# docker service update --image nginx:latest my-web01

(4)手動回滾到前一個版本

# docker service update --rollback my-web01

三、配置和管理Docker Swarm網(wǎng)絡(luò)

1、創(chuàng)建自定義overlay網(wǎng)絡(luò)

# docker network create -d overlay nginx-net01

查看創(chuàng)建的overlay網(wǎng)絡(luò)

# docker network ls

2、將swarm服務(wù)連接到自定義overlay網(wǎng)絡(luò)

部署服務(wù)時,如果不使用 --network 選項(xiàng)顯示聲明,則服務(wù)將連接到默認(rèn)的ingress網(wǎng)絡(luò),在生產(chǎn)環(huán)境下,建議使用自定義 overlay 網(wǎng)絡(luò)。

(1)創(chuàng)建服務(wù)并連接到 nginx-net01 網(wǎng)絡(luò)

# docker service create --name my-nginx01 --publish published=8000,target=80 --replicas=3 --network nginx-net01 nginx

(2)查看該服務(wù)的詳細(xì)信息

[root@master01 ~]# docker service inspect my-nginx01 --pretty

ID:		qxmmj8przpjlrdulxm57sz1l6
Name:		my-nginx01
Service Mode:	Replicated
 Replicas:	3
Placement:
UpdateConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:		nginx:latest@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
 Init:		false
Resources:
Networks: nginx-net01 
Endpoint Mode:	vip
Ports:
 PublishedPort = 8000         #發(fā)布端口
  Protocol = tcp              #發(fā)布協(xié)議
  TargetPort = 80             #目標(biāo)端口
  PublishMode = ingress       #發(fā)布模式

注:自定義 overlay 網(wǎng)絡(luò)的服務(wù)發(fā)布模式仍然為ingress,即通過路由網(wǎng)發(fā)布。

(3)為 swarm 服務(wù)更換overlay 網(wǎng)絡(luò)連接。

創(chuàng)建新的網(wǎng)絡(luò)

# docker network create -d overlay nginx-net100

為服務(wù)添加overlay網(wǎng)絡(luò)

# docker service update --network-add nginx-net100 my-nginx01

(4)overlay 網(wǎng)絡(luò)在工作節(jié)點(diǎn)上會隨著服務(wù)的刪除而自動刪除,但在管理器節(jié)點(diǎn)上并不會自動刪除,在管理器節(jié)點(diǎn)上一次執(zhí)行以下命令刪除上述服務(wù)和網(wǎng)絡(luò)

# docker service rm my-nginx01
# docker network rm nginx-net01 nginx-net100

3、驗(yàn)證swarm服務(wù)發(fā)布模式

  • ipgress:路由網(wǎng)模式,不管該節(jié)點(diǎn)有沒有部署該服務(wù),都能通過該節(jié)點(diǎn)訪問該服務(wù)
  • host:主機(jī)模式,如果該節(jié)點(diǎn)沒有部署該服務(wù),這 curl http://未部署節(jié)點(diǎn)ip:80 無法訪問

(1)創(chuàng)建2個副本的服務(wù),并以路由網(wǎng)模式對外發(fā)布端口

# docker service create --name my-nginx01 --publish published=8088,target=80 --replicas 2 nginx

(2)訪問worker02 節(jié)點(diǎn)上的服務(wù)(目前在worker02 節(jié)點(diǎn)未運(yùn)行該服務(wù)),發(fā)現(xiàn)可以訪問

[root@master01 ~]# curl http://192.168.65.141:8088

(3)創(chuàng)建2個副本的服務(wù),并以主機(jī)模式對外發(fā)布端口

# docker service create --name my-nginx02 --publish published=8080,target=80,mode=host --replicas 2 nginx

(4)查看服務(wù)的發(fā)布模式

[root@master01 ~]# docker service inspect my-nginx02 --pretty
...
...
Ports:
 PublishedPort = 8080
  Protocol = tcp
  TargetPort = 80
  PublishMode = host   #發(fā)布模式

(5)訪問worker02 節(jié)點(diǎn)上的服務(wù)(目前在worker02 節(jié)點(diǎn)未運(yùn)行該服務(wù)),發(fā)現(xiàn)訪問被拒絕

[root@master01 ~]# curl http://192.168.65.141:8080
curl: (7) Failed connect to 192.168.65.141:8080; 拒絕連接

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 新手必看docker安裝jenkins詳細(xì)教程

    新手必看docker安裝jenkins詳細(xì)教程

    今天給大家分享一篇教程關(guān)于docker安裝jenkins的步驟,在文中給大家提到了jenkins基本工作原理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-06-06
  • 詳解通過Docker搭建Mysql容器+Tomcat容器連接環(huán)境

    詳解通過Docker搭建Mysql容器+Tomcat容器連接環(huán)境

    本篇文章主要介紹了通過Docker搭建Mysql容器+Tomcat容器連接環(huán)境,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • Docker鏡像構(gòu)建的兩種方法解析

    Docker鏡像構(gòu)建的兩種方法解析

    這篇文章主要為大家詳細(xì)介紹了Docker鏡像構(gòu)建的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • IDEA遠(yuǎn)程連接Docker的流程步驟

    IDEA遠(yuǎn)程連接Docker的流程步驟

    這篇文章主要介紹了IDEA遠(yuǎn)程連接Docker的流程步驟,文中通過代碼示例給大家介紹的非常詳細(xì),對大家學(xué)習(xí)IDEA遠(yuǎn)程連接Docker有一定的幫助,需要的朋友可以參考下
    2024-10-10
  • docker部署運(yùn)行jar全過程

    docker部署運(yùn)行jar全過程

    這篇文章主要介紹了docker部署運(yùn)行jar全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • docker下安裝Elasticsearch設(shè)置賬號密碼的步驟記錄

    docker下安裝Elasticsearch設(shè)置賬號密碼的步驟記錄

    這篇文章主要介紹了docker下安裝Elasticsearch設(shè)置賬號密碼的步驟,包括拉取鏡像、創(chuàng)建配置文件和用戶密碼文件、掛載文件到容器、使用Kibana或API創(chuàng)建用戶、驗(yàn)證配置、以及持久化數(shù)據(jù)和日志,需要的朋友可以參考下
    2025-04-04
  • Docker容器沒有權(quán)限寫入宿主機(jī)目錄的解決方案

    Docker容器沒有權(quán)限寫入宿主機(jī)目錄的解決方案

    這篇文章主要介紹了Docker容器沒有權(quán)限寫入宿主機(jī)目錄的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker如何運(yùn)行一個python腳本

    docker如何運(yùn)行一個python腳本

    這篇文章主要介紹了docker如何運(yùn)行一個python腳本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker數(shù)據(jù)卷掛載及宿主機(jī)目錄掛載使用和區(qū)別

    Docker數(shù)據(jù)卷掛載及宿主機(jī)目錄掛載使用和區(qū)別

    本文主要介紹了Docker數(shù)據(jù)卷掛載及宿主機(jī)目錄掛載使用和區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • docker容器通過ping直接運(yùn)行獲取公網(wǎng)IP操作

    docker容器通過ping直接運(yùn)行獲取公網(wǎng)IP操作

    這篇文章主要介紹了docker容器通過ping直接運(yùn)行獲取公網(wǎng)IP操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論