Changes

Docker Swarm Mode

8 bytes added, 14:03, 22 July 2018
Networking
:[[File:ClipCapIt-180718-213610.PNG|700px]]
<br>
 
==Ingress hálózat==
Ahogy azt már láthattuk, az ingress network virtuálisan összeköti az összes swarm node-ot, még akkor is ha azok nem egy lokális hálózaton vannak. Annyi a megkötés, hogy a node-oknak el kell tudni egymást érni az alábbi portokon:
* 7946 TCP/UDP for container network discovery.
* 4789 UDP for the container ingress network.
 
Az ingress hálózat segítségével tudja megvalósítani a swarm a stateless load balancer funkciót alapértelmezetten round rubin módon.
 
 
Bármelyik swarm node-on (akár manager, akár worker) kiadhatjuk a '''docker network ls''' parancsot, ugyan azt kell látni.
<pre>
# docker-machine ssh mg0 docker network ls
NETWORK ID NAME DRIVER SCOPE
b71223c228cd bridge bridge local
410e603aa9c2 docker_gwbridge bridge local
53cd23b3594b host host local
idf7f51tp95i ingress overlay swarm <<<<
4fb53b47cf55 none null local
</pre>
Ha mi magunk nem hoztunk létre új overlay hálózatot kézzel, akkor csak az ingress hálózat lesz swarm scope-ú, az összes többi hálózat lokális lesz
 
<br>
<br>
* overlay hálózatból többet is csinálhatunk, de csak egynek lehet '''ingress''' a típusa. Az alapértelmezett ingress hálózaton felül a '''--network''' kapcsolóval adhatunk meg további overlay hálózatokat a '''docker service create''' -nek.
* Ha az ingress hálózatnak nem megfelelőek az alapértelmezett beállításai, pl nem jó az IP tartomány, vagy a service-ek egymás között kommunikációját is titkosítani a akarjuk, akkor sajnos ki kell törölni és kézzel létre kell hozni '''--ingress''' kapcsolóval.
* Ez a docker által létrehozott eszköz, nem a linux kernel hozza létre
* Egyszerre csak egy '''ingress''' típusú hálózat lehet létezhet egy swarm-ban, ezért fontos, hogy előtt kitöröljük. A neve bármi lehet, nem csak ingress. A swarm nem a neve alapján fogja megtalálni, hanem a típusa alapján. Mivel csak egy lehet, ezért ez egyértelmű.
* az egyetlen hálózat swarm scope-al
<pre>
docker network create \
--driver overlay \
--ingress \
--subnet=10.11.0.0/16 \
--gateway=10.11.0.2 \
-- --opt encrypted \ <<< a service-ek kommunikációját titkosítja
--opt com.docker.network.driver.mtu=1200 \
my-ingress
</pre>
<br>
</pre>
Láthatjuk, hogy a '''mg0'''-án lévő konténer képes kommunikálni a '''worker2'''-n lévő másik '''test''' konténerrel, mivel mind a ketten ugyan ahhoz az overlay hálózathoz (is) csatlakoznak.
<br><br>
==Ingress hálózat==
Ahogy azt már láthattuk, az ingress network virtuálisan összeköti az összes swarm node-ot, még akkor is ha azok nem egy lokális hálózaton vannak. Annyi a megkötés, hogy a node-oknak el kell tudni egymást érni az alábbi portokon:
* 7946 TCP/UDP for container network discovery.
* 4789 UDP for the container ingress network.
 
Az ingress hálózat segítségével tudja megvalósítani a swarm a stateless load balancer funkciót alapértelmezetten round rubin módon.
 
 
Bármelyik swarm node-on (akár manager, akár worker) kiadhatjuk a '''docker network ls''' parancsot, ugyan azt kell látni.
<pre>
# docker-machine ssh mg0 docker network ls
NETWORK ID NAME DRIVER SCOPE
b71223c228cd bridge bridge local
410e603aa9c2 docker_gwbridge bridge local
53cd23b3594b host host local
idf7f51tp95i ingress overlay swarm <<<<
4fb53b47cf55 none null local
</pre>
Ha mi magunk nem hoztunk létre új overlay hálózatot kézzel, akkor csak az ingress hálózat lesz swarm scope-ú, az összes többi hálózat lokális lesz
 
<br>
<br>
* overlay hálózatból többet is csinálhatunk, de csak egynek lehet '''ingress''' a típusa. Az alapértelmezett ingress hálózaton felül a '''--network''' kapcsolóval adhatunk meg további overlay hálózatokat a '''docker service create''' -nek.
* Ha az ingress hálózatnak nem megfelelőek az alapértelmezett beállításai, pl nem jó az IP tartomány, vagy a service-ek egymás között kommunikációját is titkosítani a akarjuk, akkor sajnos ki kell törölni és kézzel létre kell hozni '''--ingress''' kapcsolóval.
* Ez a docker által létrehozott eszköz, nem a linux kernel hozza létre
* Egyszerre csak egy '''ingress''' típusú hálózat lehet létezhet egy swarm-ban, ezért fontos, hogy előtt kitöröljük. A neve bármi lehet, nem csak ingress. A swarm nem a neve alapján fogja megtalálni, hanem a típusa alapján. Mivel csak egy lehet, ezért ez egyértelmű.
* az egyetlen hálózat swarm scope-al
<pre>
docker network create \
--driver overlay \
--ingress \
--subnet=10.11.0.0/16 \
--gateway=10.11.0.2 \
-- --opt encrypted \ <<< a service-ek kommunikációját titkosítja
--opt com.docker.network.driver.mtu=1200 \
my-ingress
</pre>