L3 a kontejnery bez overlay: Project Calico prakticky (5) – Docker libnetwork plugin

V předchozích dílech jsme spustili Docker kontejner bez sítě, tu tam přidali později přes Calico a také vytvořili komunikační skupiny. Calico ale můžete s Dockerem integrovat těsněji a využívat jeho síťových funkcí k nastavení této technologie. Dnes si ukážeme libnetwork driver pro Docker.

Připravme si prostředí

Nejprve si musíme vytvořit páreček Docker hostitelů s podporou Docker networking. Ten využívá service discovery a sdílení stavu v Etcd (přečtěte si o něm na cloudsvet.cz). Použijme znovu Docker Machine a vytvořme si nového hostitele.

docker-machine create -d virtualbox etcd

Načtěme si proměnné (namíříme lokálního Docker klienta na tohoto hostitele) – v této ukázce jsem na Windows.

docker-machine env etcd

SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.109:2376
SET DOCKER_CERT_PATH=C:\Users\kubicat\.docker\machine\machines\etcd
SET DOCKER_MACHINE_NAME=etcd
REM Run this command to configure your shell:
REM     FOR /f "tokens=*" %i IN ('docker-machine env etcd') DO %i

FOR /f "tokens=*" %i IN ('docker-machine env etcd') DO %i

Etcd nebudeme ručně instalovat, existuje hotový a pěkný image kontejneru, který jednoduše spustíme (jen nezapomeňte upravit IP adresu hostitele podle skutečnosti).

docker run -d -p 2379:2379 quay.io/coreos/etcd -advertise-client-urls http://192.168.99.109:2379 -listen-client-urls http://0.0.0.0:2379

Máme hotovo – vytvořme teď dva Docker hostitele. V rámci Docker Machine jim předáme jako parametr informace o tom, kde Etcd najdou.

docker-machine create -d virtualbox --engine-opt="cluster-store=etcd://192.168.99.109:2379" --engine-opt="cluster-advertise=eth1:2376" node1
docker-machine create -d virtualbox --engine-opt="cluster-store=etcd://192.168.99.109:2379" --engine-opt="cluster-advertise=eth1:2376" node2

Otevřete si terminál do node1 a nainstalujte Calico v režimu libnetwork.

docker-machine ssh node1
docker@node1:~$ export ETCD_AUTHORITY=192.168.99.109:2379
docker@node1:~$ sudo wget -qO /usr/local/bin/calicoctl http://www.projectcalico.org/builds/calicoctl
docker@node1:~$ sudo chmod +x /usr/local/bin/calicoctl
docker@node1:~$ sudo -E calicoctl node --libnetwork

Udělejte totéž pro node2.

docker-machine ssh node2
docker@node2:~$ export ETCD_AUTHORITY=192.168.99.109:2379
docker@node2:~$ sudo wget -qO /usr/local/bin/calicoctl http://www.projectcalico.org/builds/calicoctl
docker@node2:~$ sudo chmod +x /usr/local/bin/calicoctl
docker@node2:~$ sudo -E calicoctl node --libnetwork

Docker networkig

Připraveno, můžeme vytvářet sítě. Je jedno, na kterém nodu to uděláte, protože state je sdílen přes Etcd. Nejprve založte novou síť s názvem mojesit s calico driverem.

docker@node1:~$ docker network create --driver calico --ipam-driver calico mojesit

Nastartuje dva kontejnery v této síti – jeden na node1, druhý na node2.

docker@node1:~$ docker run --net mojesit --name srv1 -tid busybox

docker@node2:~$ docker run --net mojesit --name srv2 -tid busybox

Zkusíme ping a všimněte si, že díky libnetwork integraci můžete použít přímo doménová jména!.

docker@node1:~$ docker exec -ti srv1 ping -c 1 srv2
PING srv2 (192.168.0.64): 56 data bytes
64 bytes from 192.168.0.64: seq=0 ttl=62 time=1.143 ms

Kromě konektivity vytvořil libnetwork driver také novou skupinu v Calico, takže komunikace mezi členy stejné „sítě“ je možná. Podívejte se.

docker@node1:~$ calicoctl profile show --detailed
+------------------------------------------------------------------+-------+-----------------+-------------+------------------------------------------------------------------+--------+
|                               Name                               |  Host | Orchestrator ID | Workload ID |
             Endpoint ID                            | State  |
+------------------------------------------------------------------+-------+-----------------+-------------+------------------------------------------------------------------+--------+
| aa0f985531466803d9c536d1383b73a05dbe3d5cec1737f0547e2858740dc4c5 | node1 |    libnetwork   |  libnetwork | 02e10a676c57f6772035827e66c322b8e06c64b8afc56e8776b161f67dac79f7 | active |
| aa0f985531466803d9c536d1383b73a05dbe3d5cec1737f0547e2858740dc4c5 | node2 |    libnetwork   |  libnetwork | f4308cc5a8b12f58cdb3cb8c2cd1ba861118964d6f491730856a07abe53f6467 | active |
+------------------------------------------------------------------+-------+-----------------+-------------+------------------------------------------------------------------+--------+

Dnes jsme využili univerzálního Docker rámce libnetwork, který podporuje různé síťové implementace – Calico je jedna z nich. Díky tomu nemusíme opustit Docker svět na to, abychom spustili server s Calico síťařinou a nastavili automaticky základní filtrační pravidla. Příště vyzkoušíme Calico v Docker Swarm, tedy v clusteru centrálně řízených hostitelů.

Series Navigation<< L3 a kontejnery bez overlay: Project Calico prakticky (4) – mikrosegmentaceL3 a kontejnery bez overlay: Project Calico prakticky (6) – Docker Swarm >>
Similar posts
  • Moderní 10G v datovém centru s novou ... HPE tento týden oznámilo evoluční vývoj portfolia v oblasti data center 1U prvků s 10G/40G/100G technologií, konkrétně novou řadu 5940. Co je nového? Hardwarové vlastnosti Prvky přichází s novou generací 10/40/100 čipů, které umožnily mít nově prvky se 100G uplinky (a to hned šesti) a také přináší podporou nových vlastností jako je směrování VXLAN (předchozí [...]
  • OpenSwitch a Ansible automatizace pra... Posledně jsme si nastavili naší virtuální OpenSwitch leaf-spine topologii a vybudovali jsme BGP L3 fabric. Dnes si ukážeme více z životního cyklu s použitím Ansible – otestování sítě, vrácení odchylek do požadovaného stavu sítě a rolování změn. Jste líní číst? Mrkněte na video: Playbook pro testování sítě Ansible můžete použít i pro testování, že síť [...]
  • OpenSwitch a Ansible automatizace pra... Minule jsme napojili naši virtuální topologii na Ansible a spustili náš první testovací Playbook. Dnes provodeme automatizovanou konfiguraci L3 fabric a otestujeme síť. Příprava konfiguračních podkladů Pro zprovoznění L3 fabric potřebujeme Loopback adresu, IP adresy na jednotlivých spojeních mezi prvky a nastavení BGP (autonomní systémy, peering). V našem Ansible prostředí si vytvoříme jeden YAML soubor, [...]
  • OpenSwitch a Ansible automatizace pra... V minulém díle jsme si rozjeli Lead-Spine OpenSwitch topologii s využitím Dockeru a skript nám vygeneroval také hosts file pro Ansible. Dnes se vyzkoušíme napojení na Ansible 2.1. Příprava Ansible a vašeho VM První co potřebujeme udělat je nainstalovat Ansible minimálně ve verzi 2.1. Postup najdete zde: http://docs.ansible.com/ansible/intro_installation.html Dále vyřešíme nastavení SSH klienta v naší [...]
  • L3 a kontejnery bez overlay: Project ... Část 6 z celkových 6 v seriálu L3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico prakticky (1) – architekturaL3 a kontejnery bez overlay: Project Calico prakticky (2) – rozjezdL3 a kontejnery bez overlay: Project Calico prakticky (3) – BGPL3 a kontejnery bez [...]

No Comments Yet

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *