Junior
Czym różni się usługa headless od innych typów usług?
sobes.tech AI
Odpowiedź od AI
Usługa bez głowy nie ma adresu IP klastra i nie wykonuje równoważenia obciążenia. Zamiast tego, DNS bezpośrednio zwraca adresy IP wszystkich podów odpowiadających selektorowi usługi. To pozwala klientowi samodzielnie wybrać, z którym podem się połączyć, lub użyć własnego algorytmu równoważenia.
Typowe zastosowania:
- StatefulSets: Dla aplikacji wymagających unikalnej identyfikacji sieciowej i stabilnego przechowywania danych.
- Discovery: Klienci mogą bezpośrednio wykrywać pody i zarządzać połączeniami.
- Własne równoważenie obciążenia: Aplikacje mogą implementować własne algorytmy równoważenia.
Porównanie z usługami ClusterIP i NodePort:
| Typ usługi | IP klastra | Równoważenie obciążenia | DNS |
|---|---|---|---|
| ClusterIP | Tak | Kubernetes | Zwraca IP usługi |
| NodePort | Tak | Kubernetes | Zwraca IP usługi |
| Bez głowy | Nie | Nie (klient) | Zwraca adresy IP podów |
Definicja usługi bez głowy w YAML:
apiVersion: v1
kind: Service
metadata:
name: moja-usluga-bez-glowy
spec:
selector:
app: moja-aplikacja # Selekcja dla podów
clusterIP: None # Kluczowa różnica - brak IP klastra
ports:
- protocol: TCP
port: 80
targetPort: 8080
Zamiast odwoływać się do moja-usluga-bez-glowy za pomocą pojedynczego IP, klient otrzyma listę adresów IP podów:
$ kubectl get pods -l app=moja-aplikacja -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME IP
moja-aplikacja-abcde 10.42.0.10
moja-aplikacja-fghij 10.42.0.11
moja-aplikacja-klmno 10.42.0.12
Następnie klient może wybrać dowolny z tych adresów IP, aby nawiązać połączenie.