Sobes.tech
Junior

Каква е разликата между headless услуга и други типове услуги?

sobes.tech AI

Отговор от AI

Headless-сервисът няма кластерен IP адрес и не извършва балансировка на натоварването. Вместо това DNS директно връща IP адресите на всички подове, които съответстват на селектора на услугата. Това позволява на клиента сам да избере към кой под да се свърже или да използва собствен алгоритъм за балансировка.

Типични варианти за използване:

  • StatefulSets: За приложения, които изискват уникална мрежова идентификация и стабилно съхранение на данни.
  • Discovery: Клиентите могат директно да откриват подовете и да управляват връзките.
  • Собствена балансировка на натоварването: Приложенията могат да реализират свои собствени алгоритми за балансировка.

Сравнение с ClusterIP и NodePort услуги:

Тип услуга Кластерен IP Балансировка на натоварването DNS
ClusterIP Да Kubernetes Връща IP на услугата
NodePort Да Kubernetes Връща IP на услугата
Headless Не Не (клиент) Връща IP адресите на подовете

Дефиниция на headless услуга в YAML:

apiVersion: v1
kind: Service
metadata:
  name: my-headless-service
spec:
  selector:
    app: my-app # Селектор за подовете
  clusterIP: None # Основната разлика - липсва кластерен IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Вместо да се обръща към my-headless-service чрез един IP, клиентът ще получи списък с IP адреси на подовете:

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

След това клиентът може да избере който и да е IP за установяване на връзка.