Pular para o conteúdo principal

🔗 Services

Os pods nascem e morrem, e a cada recriação o IP muda. O Service cria um endereço fixo na frente dos pods, para que outras aplicações (ou você) sempre consigam acessá-los.

TipoQuem acessaQuando usar
ClusterIPSó dentro do clusterComunicação entre aplicações
NodePortDe fora, pelo IP do node + portaTestes e acessos simples
LoadBalancerDe fora, por um IP próprioProdução, sem Ingress
informação

Services são criados com o kubectl. O Painel Nuvion é usado para liberar o acesso de rede externo (passo 5).


🚀 Antes de começar​

🚀 1. Criar uma aplicação de teste​

kubectl create deployment web --image=nginx --replicas=2
kubectl get pods

Aguarde os dois pods ficarem Running.

🚀 2. Criar um Service interno (ClusterIP)​

kubectl expose deployment web --name=web-svc --port=80 --target-port=80
kubectl get svc web-svc

Anote o CLUSTER-IP exibido.

🚀 3. Testar o acesso dentro do cluster​

kubectl run teste-curl --rm -it --image=curlimages/curl --restart=Never -- curl http://web-svc

Se aparecer a página Welcome to nginx!, o Service está funcionando.

🚀 4. Criar um Service externo (NodePort)​

kubectl expose deployment web --name=web-nodeport --type=NodePort --port=80
kubectl get svc web-nodeport

Na coluna PORT(S) aparece algo como 80:31245/TCP. O número depois dos dois pontos (31245) é a porta externa. Anote a sua.

🚀 5. Liberar a porta na rede​

Para acessar de fora, a porta precisa estar liberada e o node precisa ter um IP acessível.

  1. Acesse Computar > Grupos de segurança e abra o grupo usado pelos nós do cluster.
  2. Adicione uma regra de entrada, protocolo TCP, na porta anotada no passo 4.
  3. Acesse Computar > IPs flutuantes e associe um IP a um dos workers, caso ainda não tenha.

Regra de entrada no grupo de segurança

🚀 6. Acessar a aplicação​

No navegador, abra http://IP-DO-NODE:PORTA (exemplo: http://203.0.113.10:31245).

✅ Como saber se deu certo​

A página Welcome to nginx! abre no navegador.

❗ Problemas comuns​

SintomaCausaSolução
Página não abre (timeout)Porta não liberada ou node sem IP acessívelRevise o passo 5
ENDPOINTS vazio em kubectl get endpoints web-svcO Service não encontrou podsConfira se os pods estão Running
EXTERNAL-IP aparece como noneNormal para NodePortUse o IP do node

🧹 Limpeza​

kubectl delete svc web-svc web-nodeport
kubectl delete deployment web

➡️ Próximo passo: Ingress

🧠 Dúvidas?​

Fale com nosso time de suporte técnico da SaveinCloud!