Junior
Aký je rozdiel medzi headless službou a inými typmi služieb?
sobes.tech AI
Odpoveď od AI
Headless služba nemá klastrovú IP adresu a nevykonáva vyvažovanie záťaže. 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.
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 | Vráti IP služby |
| NodePort | Áno | Kubernetes | Vráti IP služby |
| Bez hlavy | Nie | Nie (klient) | Vráti IP adresy podov |
Definícia bezhlavej služby v YAML:
apiVersion: v1
kind: Service
metadata:
name: moja-bezhlavá-služba
spec:
selector:
app: moja-aplikácia # Selektor pre pody
clusterIP: None # Kľúčový rozdiel - chýba klastrová IP
ports:
- protocol: TCP
port: 80
targetPort: 8080
Namiesto prístupu k moja-bezhlavá-služba cez jedinú IP, klient dostane zoznam IP adries podov:
$ kubectl get pods -l app=moja-aplikácia -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME IP
moja-aplikácia-abcde 10.42.0.10
moja-aplikácia-fghij 10.42.0.11
moja-aplikácia-klmno 10.42.0.12
Potom si klient môže vybrať ktorúkoľvek z týchto IP na nadviazanie spojenia.