Junior
Jaký je rozdíl mezi headless službou a jinými typy služeb?
sobes.tech AI
Odpověď od AI
Služba bez hlavy nem má klastr IP adresu a nevykonáva záťažové vyvažovanie. Namiesto toho DNS priamo vracia IP adresy všetkých podov, ktoré zodpovedajú selektoru služby. To umožňuje klientovi sám si vybrať, ku ktorému podu sa pripojí, alebo použiť vlastný algoritmus vyvažovania záťaže.
Typické možnosti použitia:
- StatefulSets: Pre aplikácie, ktoré vyžadujú jedinečnú sieťovú identifikáciu a stabilné ukladanie dát.
- Discovery: Klienti môžu priamo objavovať pody a spravovať spojenia.
- Vlastné vyvažovanie záťaže: Aplikácie môžu implementovať vlastné algoritmy vyvažovania.
Porovnanie s službami ClusterIP a NodePort:
| Typ služby | Klastr IP | Vyvažovanie záťaže | DNS |
|---|---|---|---|
| ClusterIP | Áno | Kubernetes | Vracia IP služby |
| NodePort | Áno | Kubernetes | Vracia IP služby |
| Bez hlavy | Nie | Nie (klient) | Vracia IP adresy podov |
Definícia služby bez hlavy v YAML:
apiVersion: v1
kind: Service
metadata:
name: moje-bezhlavé-sluzba
spec:
selector:
app: moja-aplikacia # Selektor pre pody
clusterIP: None # Kľúčový rozdiel - chýba klastr IP
ports:
- protocol: TCP
port: 80
targetPort: 8080
Namiesto prístupu k moje-bezhlavé-sluzba cez jedinú IP, klient dostane zoznam IP adries podov:
$ kubectl get pods -l app=moja-aplikacia -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME IP
moje-aplikacia-abcde 10.42.0.10
moje-aplikacia-fghij 10.42.0.11
moje-aplikacia-klmno 10.42.0.12
Potom si klient môže vybrať ktorúkoľvek z týchto IP na nadviazanie spojenia.