top of page

Como criar as networks no kubernetes

  • Foto do escritor: Rodrigo Saito
    Rodrigo Saito
  • há 2 dias
  • 3 min de leitura

Fala pessoal, tudo bem?


Vamos explorar um pouco sobre o Network do K8s:




Container to Container communication:

  • Todos os Containers compartilham o mesmo endereço IP, mas ele funciona em uma porta diferente.

  • Cada POD tem o seu próprio enderecçamento IP

  • Comunicação entre os containers acontece entre o próprio POD, mas em uma porta diferente.


POD to POD communication:

  • Intra Nod POD network é a comunicação entre PODs executando em um single Node. Neste caso, todos os endereços IP´s dos PODs serão diferentes e atribuídos de sua rede local (compartilham o mesmo host)

  • O K8s tem uma rede completa dentro dele (dns, dhcp, proxy)

  • Inter Node POD communication , temos a comunicação de Worker Nodes executando em PODs diferentes. A comunicação entre Worker Nodes acontece com um plugin de rede do K8s, que cria as tabelas necessários de rota, par que um container encontre outro container dentro de um POD diferente, que está num worker node diferente. Não importa se ele estiver em uma nuvem ou local.


Toda essa orquestração fica por conta do K8s, para que o administrador do K8s se preocupe mais com as aplicações.


Preparação do ambiente.


Veja se voce está com minikube executando:

minikube status


Caso não esteja, execute o comando para iniciar o minikube:

minikube start

Demonstração de comunicação entre PODs.


Vamos utilizar de maneira muito simples a comunicação entre 2 aplicações, a qual nao temos a intenção de utilizar as funcionalidades de cada uma delas.


Vamos utilizar o Tomcat e o Redis.


Crie o primeiro arquivo chamado my-tomcat-pod.yaml dentro de Downloads, com o seguinte conteúdo:


apiVersion: v1
kind: Pod
metadata:
  name: tomcat-pod
  labels:
    apps: app-java

spec:
  containers:
    - name: container-tomcat
      image: tomcat

Crie o outro arquivos chamado my-redis-pod.yaml dentro da pasta Downloas, com o seguinte conteúdo


apiVersion: v1
kind: Pod
metadata:
  name: redis-pod
  labels:
    apps: backend
spec:
  containers:
    - name: container-redis
      image: redis

Entre na sua pasta que voce está salvando os seus arquivos. No meu caso, está em Downloads, e aplique os arquivos my-tomcat-pod.yaml e my-redis-pod.yaml


cd Downloads
kubectl apply -f my-tomcat-pod.yaml

Aplique o outro arquivo:

kubectl apply -f my-redis.pod.yaml

Veja os 2 PODs que foram criados:

kubectl get pods

Caso voce tenha mais deployments dos exercicios anteriores, apague-os:

kubectl get deployments
kubectl delete deployment.app/frontend-deployment

Vamos pegar mais informações sobre o redis-pod

kubectl describe pods redis-pod |grep IP

Vamos dar o comando para ir para dentro do container (que está dentro do POD) do Tom Cat. Em um outro terminal dê o seguinte comando:

cd Downloads
kubectl exec -it tomcat-pod -- bash

Veja que estamos como root do linux dentro do container. Vamos fazer a atualizacao do repositório

apt update -y

Faça a instalação do aplicativo de ping dentro do linux:

apt-get install iputils-ping -y

Como já temos o IP do redis, podemos dar um ping para ver se temos comunicação, do container Tomcat: (Verifique o seu numero IP que foi atribuído)

ping 172.17.0.4

Pressione <Ctrl> + <C> para cancelar o ping


Dessa forma, podemos perceber que temos comunicação entre o POD TomCat e Redis.


Podemos fazer outro teste. Vamos excluir o POD Redis. Do terminal 1, que está fora do container, digite o seguinte comando

kubectl delete pod redis-pod

Perceba que a partir do momento que deletamos o Pod Redis, ele já não mais consegue alcançar o ping para o destinatário:



Vamos deixar tudo como estava, sem que estes componentes estejam criados.


No terminal 2, digite o comando para sair do container

exit

Para listar os pods

kubectl get pods

Par excluir o tomcat

kubectl delete pods tomcat-pod
kubectl get pods

Gostou dessa demo?


Obrigado e até+, pessoal!











Comentários


Nunca perca um post. Assine agora!

Caso queira receber noticias sobre o blog, assine!

© 2022 por datalib

  • Ícone do Facebook Cinza
  • Ícone do Linkedin Cinza
bottom of page