Published on

Realizando um troubleshooting básico de redes no Kubernetes

Authors

Realizando um troubleshooting básico de redes no Kubernetes

Documentação de Troubleshooting de Redes no Kubernetes

Sumário

Esta documentação fornece um guia passo a passo para solucionar problemas de rede em um cluster Kubernetes, utilizando uma aplicação de exemplo (Jaeger).

Passos de Troubleshooting

1. Obter o DNS Interno do Kubernetes

O DNS interno de um serviço no Kubernetes segue o formato:

<serviceName>.<namespaceName>.svc.cluster.local

Por exemplo, para o serviço jaeger-collector no namespace jaeger, o DNS interno seria:

jaeger-collector.jaeger.svc.cluster.local

2. Obter o Endereço IP do Serviço

Para obter o endereço IP de um serviço específico, use o comando kubectl get svc no namespace apropriado.

kubectl get svc jaeger-collector -n jaeger

Saída esperada:

NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
jaeger-collector   ClusterIP   172.28.100.178   <none>        14250/TCP,14268/TCP,4317/TCP    33d

O endereço IP do serviço é o valor na coluna CLUSTER-IP.

3. Teste de Resolução de DNS

Verifique se o nome do serviço está sendo resolvido corretamente.

kubectl run dns-test --image=busybox:1.28 --rm -it --restart=Never -- nslookup jaeger-collector.jaeger.svc.cluster.local

4. Descrever o Serviço

Verifique os detalhes do serviço para garantir que ele está configurado corretamente.

kubectl describe svc jaeger-collector -n jaeger

5. Verificar Endpoints

Verifique os endpoints associados ao serviço.

kubectl get endpoints jaeger-collector -n jaeger

6. Teste HTTP/Thrift (via curl)

Teste a conectividade HTTP com o serviço usando curl.

Usando o nome do serviço:

kubectl run curl-test --image=curlimages/curl --rm -it -- curl -v http://jaeger-collector.jaeger.svc.cluster.local:14268/api/traces

Usando o endereço IP do serviço:

kubectl run curl-test --image=curlimages/curl --rm -it -- curl -v http://172.28.100.178:14268/api/traces

7. Verificar Pods

Verifique os pods associados ao serviço.

kubectl get pods -n jaeger -l app.kubernetes.io/component=collector

8. Teste de Conectividade com Curl

Crie um pod de depuração e teste a conectividade com o serviço usando curl.

kubectl run debug-pod -n jaeger --image=curlimages/curl -- sleep infinity
kubectl exec -it debug-pod -n jaeger -- sh

Dentro do container:

curl -v http://jaeger-collector.jaeger.svc.cluster.local:14268/api/traces

9. Teste de Conectividade Externa

Teste a conectividade com um endpoint externo para garantir que a rede externa está funcionando.

curl -v -k https://jaeger-http-collector.nataliagranato.xyz/api/traces

10. Teste de Conectividade com Ping

Teste a conectividade com o serviço usando ping.

ping jaeger-collector.jaeger.svc.cluster.local

Conclusão

Se algum dos testes acima falhar, pode haver um problema de configuração de DNS, rede ou serviço no cluster Kubernetes. Verifique as configurações de DNS, as políticas de rede e a configuração do serviço para resolver o problema.

Referências