Kubernetes pozwala na komunikację w ramach klastra, zarówno pomiędzy kontenerami, podami jak i serwisami.
Komunikacja między kontenerami w ramach jednego poda
Kubernetes pozwala na użycie locolhost w celu komunikacji pomiędzy dwoma kontenerami w ramach jednego poda.
Pod-Pod
Z racji tego, że każdy pod w ramach klastra Kubernetes posiada adres IP, możemy wykorzystać te adresy do komunikacji pomiędzy podami.
DNS (w ramach klastra)
Alternatywą dla podawania adresów IP, jest użycie nazw domenowych przypisanych do adresów IP podów (działa tylko w ramach klastra Kubernetes). Nazwy domenowe są przypisywane na podstawie nazw zasobów (metadata.name) czyli w tym przypadku poda.
Serwis-serwis
Z racji tego, że każdy serwis w ramach klastra Kubernetes posiada adres IP, możemy wykorzystać te adresy do komunikacji pomiędzy serwisami.
DNS
Alternatywą dla podawania adresów IP, jest użycie nazw domenowych przypisanych do adresów IP serwisów (działa tylko w ramach klastra Kubernetes). Nazwy domenowe są przypisywane na podstawie nazw zasobów (metadata.name) czyli w tym przypadku serwisu.
Zmienne środowiskowe od Kubernetes
Alternatywą dla stosowania adresów IP jest używanie tworzonych dynamicznie przez Kubernetes zmiennych środowiskowych, przechowujących adresy IP (to rozwiązanie działa tylko dla serwisów).
Na podstawie nazwy serwisu powstaje zmienna środowiskowa składająca się z ustandaryzowanej nazwy serwisu oraz z końcówki _SERVICE_HOST. Standaryzacja nazwy polega na zamianie wszystkich małych liter na duże oraz na zamianie myślników na znaki podkreślenia. Przykładowo dla nazwy my-app zmienna będzie miała nazwę MY_APP_SERVICE_HOST.
Warto zajrzeć
1. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
2. https://kubernetes.io/docs/concepts/services-networking/
