istnieją 3 kontenery (w jednym podzie). Jednen z nich jest zatrzymany tzw. Pauze Container - jest to dodatkowy kontener tworzony przez Kubernetesa który jest właścicielem namespacu sieciowego, który współdzieli z innymi kontenerami w ramnach (jest on niezbędny do komunikacji)
przed uruchominiem Pauzy Kontenera tworzone są 2 wirtualne interfejsy sieciowe dla kontenera, jeden pozostaje w przestrzeni nazw/namespace hosta/noda (vethXXX), a drugi przenoszony jest do przestrzeni nazw sieci kontenera (eth0). Interfejsy te są jak 2 urzędzenia fizyczne połączone kablem.
interfejs w namespace hosta połączony jest z mostkiem sieciowym (Bridge), adres interfejsu w namespace kontenera (eth0) ma przypisany adres IP z puli adresów mostka/Bridge
* adresy IP poda muszą być unikalne w całym klastrze
Service
Pozwala na wystawienie poda pod statycznym IP:PORT
wszystko co jest związane z serwisem jest obsługiwane przez proces kube-proxy działającym na każdym node
w serwisie adres IP jest wirtualny tzn. nie jest przypisany do żadnego interfejsu sieciowego i nigdy nie jest wymieniony jako źródłowy lub docelowy adres IP w pakiecie sieciowym w momencie kiedy opuszcza on node
na adresie IP serwisu nie można wykonać ping
External Service
pozwala na aliasowanie zewnętrznych usług, które będą dostępne dla aplikacji/podów za pomocą FQDN (który będzie można określić) - service.yaml
externalName punkt końcowy adresu usługi do której będziemy się dostawać
metadata.name nazwa za pomocą której aplikacje w podach będą mogły się komunikować z servicem utworzonym/skonfigurowanym za pomocą yaml
Mając service i kilka podów, któe są przez ten serwis obsługiwane za pomocą selektora:
bez Session Affinity (sessionAffinity: node - domyślnie) wykonując request każde z zapytań trafi do losowego poda
z Session Affinity (sessionAffinity: ClientIP), klient łączący się z danego IP jest “przydzielany” do danego poda. Serwer-proxy będzie kierował wszystkie żądania do tego samego poda.