Egy IP minden kapszulának – a Kubernetes hálózat
Korábbi cikkeimben már felépítettük a Kubernetes világának alapjait: beszéltünk a szerepéről a modern szoftverfejlesztésben, arról, hogyan támogatja a mikroszolgáltatásokat, és miként erősíti a digitális jelenlétet.
Most képzeld el, hogy ebben a világban sétálsz egy városban, ahol minden háznak (a kapszulának) van saját, egyedi címe (IP-je). Ezzel a címmel bárki rátalálhat, és eljuthat a megfelelő ajtóhoz. Olyan mint egy házszám, vagy GPS koordináta.
Hogyan működik ez a címkiosztás, és hogyan kapcsolódnak a kapszulák a külvilághoz? Erről szeretnék neked írni néhány gondolatot.
Kapszula és hálózati névtér
Egy Kubernetes kapszula (Pod) olyan, mintha több szoba lenne egy közös lakásban: minden konténer külön szobát kap, de ugyanazt a hálózati névteret (network namespace) osztják meg. Ez azt jelenti, hogy a kapszula minden konténere ugyanazzal az IP-címmel rendelkezik.

A háttérben egy különleges szereplő, a pause konténer gondoskodik arról, hogy a kapszula egy IP-címet kapjon.
- A pause konténer önmagában nem futtat alkalmazást, de létrehozza a hálózati környezetet.
- A kapszula többi konténere ebbe a környezetbe csatlakozik, így osztoznak az IP-címen és a hálózati interfészen.
Ez a megoldás egyszerűsíti a fejlesztők életét: nincs szükség külön IP-címek kiosztására minden konténerhez, és a belső kommunikáció is egyszerűbb.
Konténerek közti kommunikáció
Ha a kapszulán belüli konténerek egymással akarnak kommunikálni, több lehetőségük van:
- használhatják a loopback interfészt (localhost),
- írhatnak és olvashatnak közös fájlrendszerből,
- vagy folyamatközi kommunikációval (IPC) üzenhetnek egymásnak.
Ez olyan, mintha egy lakásban élő családtagok néha egymáshoz szólnak, néha pedig egyszerűen cetlit hagynak a hűtőn.
A kapszulától a külvilágig: Service és NodePort
A fürtön belül minden kapszula elérhető a saját IP-címén, de a külvilág számára ez nem elegendő. Ahhoz, hogy egy külső felhasználó vagy rendszer is elérje a kapszulát, szükség van egy Service objektumra.
A legegyszerűbb típus a NodePort:
- a Kubernetes egy magas sorszámú portot nyit meg a node-on (például 30000-32767 tartományban),
- ezen a porton keresztül érkezik a forgalom a kapszulába,
- a Service egy endpointot hoz létre, amely összeköti a kapszula IP-címét és a portját.
Ez biztosítja, hogy a hálózati csomagok a megfelelő konténerhez jussanak.
A hálózati forgalom útja

A NodePort és más szolgáltatások működésében kulcsszereplők a Kubernetes hálózati komponensei:
- A kube-proxy figyeli a szolgáltatásokat, és gondoskodik arról, hogy a forgalom a megfelelő kapszulába jusson. Ehhez iptables vagy ipvs szabályokat használ.
- Az iptables a Linux kernel beépített tűzfal- és forgalomirányító eszköze, amely szabályokkal határozza meg, hogyan kell kezelni a csomagokat.
- Az ipvs (IP Virtual Server) modernebb, nagy teljesítményű forgalomirányítási megoldás, amely hatékonyabb load balancingot biztosít.
- A kube-controller-manager pedig állandóan figyel (ún. watch loop-okkal), hogy ha változás történik – például új kapszula indul, vagy egy régi törlődik – a szolgáltatások és az endpointok mindig naprakészek legyenek.
Ez a háttérmunka szinte láthatatlan, de garantálja, hogy a felhasználó mindig eléri a szolgáltatást.
Miért fontos ez a modell?
Az „egy IP minden kapszulának” megközelítés egyszerre biztosít egyszerűséget és kiszámíthatóságot:
- a fejlesztőknek nem kell bonyolult port mappingot kezelniük,
- a hálózat minden kapszula esetében azonos módon viselkedik,
- a skálázás, frissítés és hibaelhárítás is könnyebb.
Nem véletlen, hogy ez a modell vált iparági szabvánnyá: a Kubernetes a világ legnagyobb rendszereiben is megbízhatóan működik ezen az alapokon.