Docker roj za orkestracijo kontejnerjev

Vse o Docker Swarm in kako upravlja in orkestrira vse posode v grozdu.


Kaj je Docker Swarm?

Docker roj je način ravnanja s skupino Docker motorjev, od tod tudi ime Swarm. Grozd Docker gostiteljev deluje v načinu roj, ki ga sestavljajo menedžerji in delavci. Primeri motorja, ki sodelujejo v roju, se imenujejo vozlišča.

Umestitev roja na ravni proizvodnje je sestavljena iz docker vozlišč, razporejenih po več strežnikih.

Zakaj ga uporabljati? – Orkestracija zabojnikov

Ko delate v proizvodnem okolju, bo 100s docker posod v njem izvajalo več aplikacij. Upravljanje vseh teh zabojnikov je lahko velika težava za vse inženirje DevOps; tu vam pomaga Docker Swarm. Z lahkoto upravlja in orkestrira grozd, ki poganja več docker posod.

Spodaj je nekaj njegovih značilnosti:

  • Visoka dostopnost – želi ponuditi izpadi ali izpade.
  • Izravnava obremenitve – samodejno razporedi vire in zahteve na druga vozlišča v grozdu, če katero koli vozlišče ne uspe.
  • Decentralizirano – več upravljalskih vozlišč deluje v proizvodnem okolju; zato grozd ni nikoli odvisen od enega vozlišča.
  • Prilagodljivost – Z enim ukazom roj dockerja lahko vsebnike enostavno povečujete ali pomanjšate.

Orkestracija Docker posode

Zdaj, ko poznate osnove Dockerja Swarma, si oglejmo primer njegovega izvajanja.

V tem primeru imam tri stroje, ki delujejo v gruči s spodnjimi podrobnostmi:

manager1: 192.168.56.104

delavec1: 192.168.56.105

delavec2: 192.168.56.102

Za inicializacijo načina roja v dockerju zaženite spodnji ukaz na upraviteljevem vozlišču. Oznaka –advertise-addr se uporablja za samo oglaševanje vozlišč, ki se lahko pridružijo grozdu.

[zaščitena e-pošta]: ~ $ docker roj init – oglaševanje-addr 192.168.56.104

Swarm inicializiran: trenutno vozlišče (lssbyfzuiuh3sye1on63eyixf) je zdaj upravitelj.

Če želite dodati delavca v ta roj, zaženite naslednji ukaz:

docker swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Če želite dodati tega upravitelja v ta roj, zaženite »manager docker swarm join-token manager« in sledite navodilom.

Zgornji ukaz ustvari žeton, ki ga bodo druga vozlišča uporabila za pridružitev tej grozdu. Kopirajte ukaz z ustvarjenim žetonom in ga zaženite na delavskih vozliščih.

Zagon žetona na vozlišču delav1.

[zaščitena e-pošta]: ~ $ pridruži se roj docker -token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

To vozlišče se je pridružilo roju kot delavec.

Zagon žetona na vozlišču delav2.

[zaščitena e-pošta]: ~ $ pridruži se roj docker -token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

To vozlišče se je pridružilo roju kot delavec.

Zdaj lahko na vozlišču upravitelja preverite, katera vozlišča se izvajajo v grozdu.

[zaščitena e-pošta]: ~ $ docker vozlišče ls

ID HOSTNAME STATUS UPRAVLJANJE RAZPOLOŽLJIVOSTI STATUS MOTORNA VERZIJA

lssbyfzuiuh3sye1on63eyixf * manager1 Pripravljen aktivni vodja 18.09.6

utdr3dnngqf1oy1spupy1qlhu delavec1 Pripravljen Aktivno 18.09.6

xs6jqp95lw4cml1i1npygt3cg delavec2 Pripravljen aktiven 18.09.6

Zgradimo sliko dockerja geekflare_mongodb, ki smo jo uporabili v vadnici Dockerfile.

docker build -t geekflare_mongodb .

Zaženite vsebnik slike dockerja MongoDB z ustvarjanjem storitve roj. 27017 je številka vrat, na katerih je izpostavljen MongoDB.

[zaščitena e-pošta]: ~ $ docker storitev create –name "Mongo-kontejner" -p 27017: 27017 geekflare_mongodb

image geekflare_mongodb: najnovejšega v registru ni bilo mogoče dostopati, da bi posneli njegov prebavni zapis. Vsako vozlišče bo dostopalo do geekflare_mongodb: najnovejše neodvisno, morda vodi do različnih vozlišč, ki imajo različne različice slike.

kok58xa4zi05psh3uy6s5x9e6

skupni napredek: 1 od 1 nalog

1/1: tek

verify: Storitev konvergirana

Preverite, ali se je storitev rojevanja priklopnikov začela. REPLICAS 1/1 pomeni, da je posoda ponovljena na vseh vozliščih v grozdu, REPLICAS 1/1 pa pomeni, da se trenutno izvaja samo ena storitev roja.

[zaščitena e-pošta]: ~ $ docker storitev ls

ID NAZIV NAČIN REPLICAS IMAGE PORTS

kok58xa4zi05 Mongo-Container posnema 1/1 geekflare_mongodb: najnovejše *: 27017->27017 / tcp

Preverimo, na katerem vozlišču v grozdu se izvaja ta posamezna storitev. Poteka v vozlišču manager1.

[zaščitena e-pošta]: ~ $ docker storitev ps Mongo-Container

ID IME SLIKA NIZA ŽELJENE DRŽAVE TEKOČE DRŽAVNE NAPAKE PORTS

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: najnovejši manager1 Teče Teče pred približno minuto

Zaženite ukaz docker ps, če želite več podrobnosti o vsebniku, ki izvaja to storitev roj.

[zaščitena e-pošta]: ~ $ docker ps

IMENA ID ID KONTEJNERA USTVARJENA STATUSNA PORTSKA IMENA

05d77e7b4850 geekflare_mongodb: najnovejše   "/ bin / sh -c usr / bin /…"   2 minuti nazaj Up 2 minuti 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

Storitev roj lahko zaženete v “Globalno” tudi namesto privzetega načina “ponovitve”. Globalni način izvaja eno nalogo storitve roj na vseh vozliščih v grozdu.

Preden zaženem storitev v globalnem načinu, naj odstranim obstoječi tekoči vsebnik.

[zaščitena e-pošta]: ~ $ docker storitev rm Mongo-Container

Mongo-kontejner

Zaženite storitev roj znotraj dockerjeve posode v globalnem načinu z zastavico -mode.

[zaščitena e-pošta]: ~ $ docker storitev create –name "Mongo-kontejner" -p 27017: 27017 –mode globalni geekflare_mongodb

image geekflare_mongodb: najnovejšega v registru ni bilo mogoče dostopati, da bi posneli njegov prebavni zapis. Vsako vozlišče bo dostopalo do geekflare_mongodb: najnovejše neodvisno, morda vodi do različnih vozlišč, ki imajo različne različice slike.

mfw8dp0zylffppkllkcjl8391

skupni napredek: 3 od treh nalog

utdr3dnngqf1: teče

lssbyfzuiuh3: tek

xs6jqp95lw4c: teče

verify: Storitev konvergirana

Preverite, ali se je storitev roja začela v globalnem načinu. Ker v grozdu delujejo tri vozlišča (1 vodja, 2 delavca), je torej število replik 3.

[zaščitena e-pošta]: ~ $ docker storitev ls

ID NAZIV NAČIN REPLICAS IMAGE PORTS

mfw8dp0zylff Mongo-Container global 3/3 geekflare_mongodb: najnovejše *: 27017->27017 / tcp

3 storitve se zdaj izvajajo v treh vozliščih, preverite jih tako, da zaženete spodnji ukaz.

[zaščitena e-pošta]: ~ $ docker storitev ps Mongo-Container

ID IME SLIKA NIZA ŽELJENE DRŽAVE TEKOČE DRŽAVNE NAPAKE PORTS

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: zadnji delavec2 Teče Teče pred približno minuto

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: najnovejši delavec1 Tek teče pred približno minuto

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: najnovejši manager1 Teče Teče pred približno minuto

Nato pa naj pokažem, kako lahko določite število replik. Pred tem bom odstranil trenutno posodo, ki se izvaja.

[zaščitena e-pošta]: ~ $ docker storitev rm Mongo-Container

Mongo-kontejner

V ukazu uporabite zastavico -replicas in navedite želeno število kopij storitve roj. Na primer, želim imeti dve repliki službe roj:

[zaščitena e-pošta]: ~ $ docker storitev create –name "Mongo-kontejner" -p 27017: 27017 –replicas = 2 geekflare_mongodb

image geekflare_mongodb: najnovejšega v registru ni bilo mogoče dostopati, da bi posneli njegov prebavni zapis. Vsako vozlišče bo dostopalo do geekflare_mongodb: najnovejše neodvisno, morda vodi do različnih vozlišč, ki imajo različne različice slike.

4yfl41n7sfak65p6zqwwjq82c

skupni napredek: 2 od 2 nalog

1/2: tek

2/2: tek

verify: Storitev konvergirana

Preverite rojev, ki se trenutno izvajajo. Lahko vidite, da ena replika deluje na vozlišču manager1, druga pa na vozlišču1.

[zaščitena e-pošta]: ~ $ docker storitev ps Mongo-Container

ID IME SLIKA NIZA ŽELJENE DRŽAVE TEKOČE DRŽAVNE NAPAKE PORTS

xukodj69h79q Mongo-Container.1 geekflare_mongodb: zadnji delavec1 Tek teče pred 9 sekundami

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnovejši manager1 Tek teče pred 9 sekundami

Pojdite na vozlišče1 in preverite, ali v posodi za docker deluje storitev roj.

[zaščitena e-pošta]: ~ $ docker ps

IMENA ID ID KONTEJNERA USTVARJENA STATUSNA PORTSKA IMENA

5042b7f161cb geekflare_mongodb: najnovejše   "/ bin / sh -c usr / bin /…"   Pred približno eno minuto Up približno minuto 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

Če želite ustaviti ta vsebnik, zaženite spodnji ukaz.

[zaščitena e-pošta]: ~ $ docker stop 5042b7f161cb

5042b7f161cb

Zdaj v vozlišču manager1, če preverite, katera vsa vozlišča izvajajo storitev, boste videli, da se ta izvaja na vozlišču manager1 in radnika2. TRENUTNO STANJE vozlišča radnika1 je izklop (ko smo ustavili vsebnik, ki izvaja storitev). Ker pa morata dve storitvi te storitve izvajati, se je na delavcu 2 začela druga storitev.

Tako dosežete visoko razpoložljivost z rokom dockerjev.

[zaščitena e-pošta]: ~ $ docker storitev ps Mongo-Container

ID IME SLIKA NIZA ŽELJENE DRŽAVE TEKOČE DRŽAVNE NAPAKE PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: zadnji delavec2 Tek teče pred 30 sekundami

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: zadnji delavec1 Izklop ni uspel pred 38 sekundami    "naloga: izhod brez nič (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnovejši manager1 Tek teče pred 3 minutami

Zelo enostavno je povečati ali pomanjšati zabojnike za dokerje. Spodnji ukaz bo pomanjšal vsebnik mongo na 5.

[zaščitena e-pošta]: ~ $ lestvica storitve docker Mongo-Container = 5

Mongo-Container se je zmanjšal na 5

skupni napredek: 5 od 5 nalog

1/5: tek

2/5: tek

3/5: tek

4/5: tek

5/5: tek

verify: Storitev konvergirana

Preverite, koliko replik posode mongo trenutno deluje, mora biti 5.

[zaščitena e-pošta]: ~ $ docker storitev ls

ID NAZIV NAČIN REPLICAS IMAGE PORTS

4yfl41n7sfak Mongo-Container je ponovil 5/5 geekflare_mongodb: najnovejše *: 27017->27017 / tcp

Preverite, kje v grozdu deluje teh 5 replik. 1 replika deluje na vozlišču manager1 in 2 repliki na obeh delovnih vozliščih.

[zaščitena e-pošta]: ~ $ docker storitev ps Mongo-Container

ID IME SLIKA NIZA ŽELJENE DRŽAVE TEKOČE DRŽAVNE NAPAKE PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: zadnji delavec2 Tek teče pred 2 minutami

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: zadnji delavec1 Izklop ni uspel pred 2 minutami     "naloga: izhod brez nič (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnovejši manager1 Tek teče pred 5 minutami

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: zadnji delavec2 Tek teče pred 47 sekundami

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: zadnji delavec1 Tek teče pred 46 sekundami

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: zadnji delavec1 Tek teče pred 44 sekundami

Če ne želite, da se vaše storitve izvajajo v upravnih vozliščih in jih želite uporabljati samo za upravljanje vozlišč, lahko vozlišče upravitelja izpraznite.

[zaščitena e-pošta]: ~ posodobitev vozlišča $ docker – upravitelj odtoka razpoložljivosti1

manager1

Preverite razpoložljivost upraviteljevega vozlišča.

[zaščitena e-pošta]: ~ $ docker vozlišče ls

ID HOSTNAME STATUS UPRAVLJANJE RAZPOLOŽLJIVOSTI STATUS MOTORNA VERZIJA

lssbyfzuiuh3sye1on63eyixf * manager1 Pripravljen vodnik odtoka 18.09.6

utdr3dnngqf1oy1spupy1qlhu delavec1 Pripravljen Aktivno 18.09.6

xs6jqp95lw4cml1i1npygt3cg delavec2 Pripravljen aktiven 18.09.6

Videli boste, da se storitve ne izvajajo več na vozlišču upravitelja; razpršeni so po delavskih vozliščih v grozdu.

[zaščitena e-pošta]: ~ $ docker storitev ps Mongo-Container

ID IME SLIKA NIZA ŽELJENE DRŽAVE TEKOČE DRŽAVNE NAPAKE PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: zadnji delavec2 Tek teče pred 5 minutami

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: zadnji delavec1 Izklop ni uspel pred 5 minutami      "naloga: izhod brez ničle (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: zadnji delavec1 Tek teče pred 41 sekundami

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: najnovejši manager1 Shutdown Shutdown 44 sekund ago

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: zadnji delavec2 Tek teče pred 3 minutami

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: zadnji delavec1 Tek teče pred 3 minutami

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: zadnji delavec1 Tek teče pred 3 minutami

To je bilo vse v zvezi z Dockerjem rojem in kako orkestrirati zabojnike v načinu docker roj. Preizkusite jih v neprodukcijskem okolju, da dobite predstavo o tem, kako deluje.

Oznake:

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map