Sobes.tech
Junior

Wat is het verschil tussen een headless-service en andere typen services?

sobes.tech AI

Antwoord van AI

De headless-service heeft geen cluster-IP-adres en voert geen load balancing uit. In plaats daarvan geeft DNS rechtstreeks de IP-adressen van alle pods die overeenkomen met de service-selector terug. Dit stelt de client in staat om zelf te kiezen naar welke pod hij verbinding maakt of zijn eigen load balancing-algoritme te gebruiken.

Typische gebruiksopties:

  • StatefulSets: Voor applicaties die een unieke netwerkidentificatie en stabiele gegevensopslag vereisen.
  • Discovery: Clients kunnen direct pods ontdekken en verbindingen beheren.
  • Eigen load balancing: Applicaties kunnen aangepaste load balancing-algoritmen implementeren.

Vergelijking met ClusterIP- en NodePort-services:

Servicetype Cluster-IP Load balancing DNS
ClusterIP Ja Kubernetes Geeft de IP van de service terug
NodePort Ja Kubernetes Geeft de IP van de service terug
Headless Nee Nee (client) Geeft de IP-adressen van de pods terug

Definitie van headless-service in YAML:

apiVersion: v1
kind: Service
metadata:
  name: mijn-headless-service
spec:
  selector:
    app: mijn-app # Selector voor pods
  clusterIP: None # Het belangrijkste verschil - geen cluster-IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

In plaats van toegang tot mijn-headless-service via een enkel IP, ontvangt de client een lijst met IP-adressen van de pods:

$ kubectl get pods -l app=mijn-app -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME            IP
mijn-app-abcde    10.42.0.10
mijn-app-fghij    10.42.0.11
mijn-app-klmno    10.42.0.12

Vervolgens kan de client een van deze IP's kiezen om verbinding te maken.