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 sem cabeça não possui um endereço IP de cluster e não realiza balanceamento de carga. Em vez disso, o DNS retorna diretamente os endereços IP de todos os pods que correspondem ao seletor do serviço. Isso permite que o cliente escolha por si próprio qual o pod conectar ou use seu próprio algoritmo de balanceamento.
Opções típicas de uso:
- StatefulSets: Para aplicações que requerem uma identificação de rede única e armazenamento de dados estável.
- Discovery: Os clientes podem descobrir diretamente os pods e gerenciar as conexões.
- Balanceamento de carga próprio: As aplicações podem implementar algoritmos de balanceamento personalizados.
Comparação com serviços ClusterIP e NodePort:
| Tipo de serviço | IP de cluster | Balanceamento de carga | DNS |
|---|---|---|---|
| ClusterIP | Sim | Kubernetes | Retorna o IP do serviço |
| NodePort | Sim | Kubernetes | Retorna o IP do serviço |
| Sem cabeça | Não | Não (cliente) | Retorna os endereços IP dos pods |
Definição do serviço sem cabeça em YAML:
apiVersion: v1
kind: Service
metadata:
name: meu-servico-sem-cabeca
spec:
selector:
app: minha-aplicacao # Seletor para os pods
clusterIP: None # A diferença chave - ausência de IP de cluster
ports:
- protocol: TCP
port: 80
targetPort: 8080
Em vez de acessar meu-servico-sem-cabeca por um IP único, o cliente receberá uma lista de endereços IP dos pods:
$ kubectl get pods -l app=minha-aplicacao -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME IP
minha-aplicacao-abcde 10.42.0.10
minha-aplicacao-fghij 10.42.0.11
minha-aplicacao-klmno 10.42.0.12
Depois, o cliente pode escolher qualquer um desses IPs para estabelecer a conexão.