Como criar as networks no kubernetes
- 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: redisEntre 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-deploymentVamos 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-podPerceba 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
exitPara 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