0Pricing
DevOps Bootcamp · Aula

DNS e descoberta de serviços

Entenda como os Pods encontram uns aos outros usando o DNS integrado do Kubernetes e como funciona a descoberta de serviços internamente.

DNS e descoberta de serviços é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

O problema da descoberta de serviços

Os pods entram e saem, e seus IPs mudam constantemente. Codificar IPs diretamente faria tudo parar de funcionar imediatamente. O Kubernetes resolve isso com a descoberta de serviços baseada em DNS.

Em vez de usar um IP, você se comunica com um nome estável.

DNS do cluster

Todo cluster executa um serviço DNS (geralmente o CoreDNS). Ele cria automaticamente registros DNS para serviços e pods, fazendo com que os nomes sejam resolvidos para o ClusterIP correto.

Nomes DNS de serviços

Um serviço recebe um nome DNS seguindo um padrão previsível:

service-name.namespace.svc.cluster.local

No mesmo espaço de nomes, basta usar o service-name curto.

# from a Pod in the same namespace
curl http://payment-service:8080

# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080

Espaços de nomes e nomenclatura

O espaço de nomes faz parte do nome. Para acessar um serviço em outro espaço de nomes, inclua-o: service.namespace.

# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.local

Testando o DNS de um pod

Você pode iniciar um pod descartável para testar a resolução de nomes.

kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-service

Como o CoreDNS resolve nomes

Quando um pod consulta um nome, a solicitação vai para o CoreDNS. Ele procura o serviço correspondente e retorna seu ClusterIP. Para serviços sem IP virtual, ele retorna diretamente os IPs dos pods.

Serviços sem IP virtual

Um serviço sem IP virtual (clusterIP: None) não usa um único IP virtual. Em vez disso, o DNS retorna os IPs individuais dos pods, o que é essencial para aplicativos com estado que acessam os pods diretamente.

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
  - port: 5432

Registros DNS de pods

Com um serviço sem IP virtual, cada pod associado também pode receber seu próprio registro DNS, o que é útil para StatefulSets, nos quais os pods têm identidades estáveis, como db-0 e db-1.

# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432

Inspecionando o resolv.conf do pod

O Kubernetes injeta configurações de DNS em cada pod. Os domínios de pesquisa permitem que nomes curtos sejam resolvidos corretamente.

kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.local

Variáveis de ambiente versus DNS

O Kubernetes também injeta informações de conexão dos serviços como variáveis de ambiente, mas apenas para serviços que já existiam quando o pod foi iniciado. O DNS é preferível porque sempre reflete o estado atual.

Armadilhas comuns do DNS

  • Esquecer o espaço de nomes ao acessar serviços entre espaços de nomes
  • Esperar DNS para um serviço sem pods correspondentes (sem pontos de extremidade)
  • Armazenar em cache IPs obsoletos no aplicativo em vez de resolver o nome novamente

Verificação rápida

Escolha o formato correto de nome DNS.

Recapitulação

Você aprendeu que o Kubernetes usa o CoreDNS para fornecer aos serviços nomes DNS estáveis seguindo o formato service.namespace.svc.cluster.local. Nomes curtos funcionam dentro de um espaço de nomes, os serviços sem IP virtual expõem os IPs individuais dos pods e o DNS sempre reflete o estado atual do cluster.

Perguntas Frequentes

A aula “DNS e descoberta de serviços” é grátis?

Sim — o texto completo de “DNS e descoberta de serviços” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “DNS e descoberta de serviços”?

Entenda como os Pods encontram uns aos outros usando o DNS integrado do Kubernetes e como funciona a descoberta de serviços internamente. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “DNS e descoberta de serviços”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Expondo aplicações com serviços
  2. Tipos de serviço: ClusterIP, NodePort, LoadBalancer
  3. Ingress para acesso externo
  4. DNS e descoberta de serviços
← Voltar para DevOps Bootcamp