Sobes.tech
Junior

Qual é a diferença entre um serviço headless e outros tipos de serviços?

sobes.tech IA

Resposta da IA

O serviço Headless no Kubernetes diferencia-se pela ausência de ClusterIP e, consequentemente, de balanceamento de carga fornecido pelo próprio serviço. Em vez disso, o DNS devolve um conjunto de endereços IP de pods que correspondem ao seletor do serviço, permitindo que o cliente escolha diretamente o ponto final.

Serviço normal (ClusterIP, NodePort, LoadBalancer):

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP # ou NodePort, LoadBalancer
  • Possui seu próprio ClusterIP.
  • Balanceia o tráfego entre os pods.
  • DNS devolve o ClusterIP do serviço.

Serviço Headless:

apiVersion: v1
kind: Service
metadata:
  name: my-headless-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  clusterIP: None # Diferença chave
  • Não possui ClusterIP.
  • Não realiza balanceamento de carga.
  • DNS devolve uma lista de endereços IP dos pods que correspondem ao seletor.

Comparação:

Característica Serviço normal Serviço Headless
ClusterIP Presente Não
Balanceamento de carga Integrado Ausente
Resolução DNS ClusterIP do serviço Endereços IP dos pods
Uso Padrão Descoberta de serviços, bases de dados, estado da aplicação

Serviços Headless são frequentemente utilizados nos seguintes cenários:

  • Descoberta de serviços: Os clientes podem obter uma lista de todos os pods disponíveis e escolher o adequado com base na sua lógica interna.
  • Bases de dados: Permite que os clientes se conectem diretamente a réplicas específicas do banco de dados.
  • Aplicações com estado: Permite que os clientes enderecem instâncias específicas da aplicação que mantêm estado.