ANÚNCIO

~/questoes/devops

Qual é a função de um Service no Kubernetes durante a migração de Docker Compose?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Como Migrar do Docker Compose para Kubernetes
Para fixar

A Função do Service no Kubernetes: Descoberta e Balanceamento de Carga

Conceito central

Um Service no Kubernetes é um objeto que expõe seus Pods para comunicação interna ou externa, funcionando como um ponto de acesso estável. Ele substitui o sistema de rede do Docker Compose, fornecendo descoberta automática de serviços e distribuição inteligente de tráfego entre os Pods.

Por que essa resposta faz sentido

O Service é responsável por fazer a descoberta de serviços (permitir que Pods encontrem uns aos outros pelo nome), balancear a carga de requisições entre múltiplos Pods e expor a aplicação tanto internamente (dentro do cluster) quanto externamente (para o mundo). É como um 'intermediário' que redireciona o tráfego de forma inteligente.

Armadilhas comuns

  • Confundir Service com Deployment: muitos iniciantes pensam que o Service gerencia replicas e atualizações, quando na verdade essa é a função do Deployment.
  • Achar que Service é apenas para comunicação externa: Services podem ser internas (ClusterIP) para comunicação entre Pods, não apenas para expor ao mundo.
  • Esquecer que Service depende de labels: sem labels corretos nos Pods, o Service não consegue encontrá-los e rotear tráfego.

Entenda as alternativas

A

Essa é a função do Deployment, não do Service. O Deployment gerencia réplicas dos Pods, define políticas de replicação e controla como os contêineres são criados e atualizados. O Service trabalha em conjunto com o Deployment, mas não gerencia o ciclo de vida.

B

Essa é a responsabilidade dos Secrets e ConfigMaps no Kubernetes. Secrets armazenam dados sensíveis como senhas e tokens, enquanto ConfigMaps guardam configurações. O Service não trata de armazenamento de dados.

C

Monitoramento e coleta de métricas são funções de ferramentas externas como Prometheus, Grafana ou o kubelet nativo. O Service não coleta métricas; ele apenas roteia o tráfego entre Pods.

D

O Service executa exatamente essas três funções: descobre Pods automaticamente pelo seletor de labels, distribui requisições entre eles (balanceamento de carga) e pode expor a aplicação internamente (ClusterIP) ou para fora do cluster (LoadBalancer, NodePort).

Dica prática: Ao migrar um serviço do Docker Compose para Kubernetes, crie primeiro um Deployment para o contêiner, depois um Service apontando para ele usando o seletor correto de labels. Teste a comunicação usando o nome do Service dentro do cluster (ex: meu-servico.default.svc.cluster.local).

Revise pensando: Se você tivesse três instâncias da mesma aplicação rodando em Pods diferentes, como o Service saberia para qual deles enviar cada requisição?