Entendendo um pouco o Kubernetes
- #Kubernetes
- #Docker
Oi gente, tudo bem ?
Galera, hoje vamos falar um pouco de kubernetes...ou o remo do barco.
Mas antes de falar do Kubernetes, eu tenho que falar o que é um container.
Container
Um container é um local onde você guarda alguma coisa ou carga, para que ela seja transportada de um lado para o outro sem sofrer danos. No mundo da informática, um container é um ambiente isolado do seu sistema operacional aonde você pode colocar a sua aplicação e as configurações dela, sem que ela quebre. Isso evita aquele famoso problema "na minha máquina pega".
Existem vários softwares de containerização hoje no mercado, um deles é o Docker.
Podemos ter um container em uma máquina, entretanto se essa máquina estiver consumindo muita memória e precisarmos ter mais containers o que podemos fazer ?
Podemos comprar mais máquinas e encher elas de containers, chamamos isso de escalabilidade vertical. Esse nome se dá porque temos que adquirir sempre mais hardware para manter nossas aplicações de pé.
Um outro cenário chamamos de escalabilidade vertical, onde criamos um cluster de máquinas, neste caso virtuais, dentro de uma máquina física para rodarmos vários containers compartilhando informações entre sí. Neste modelo, se uma máquina cair, as outras continuam operando chamamos esse conceito de corum. Mas é neste cenário que o Kubernetes entra!
O Kubernetes é um orquestrador de containers, com ele podemos gerenciar os nossos containers dentro de máquinas virtuais. Funciona assim:
Imagine que o kubernetes esteja gerenciando 2 máquinas e uma delas está rodando dois containers, porém ele percebe que precisa criar mais um container para continuar rodando, mas a máquina 1 não suporta. O Kubernetes carrega esse container automaticamente na máquina 2, fazendo o balanceamento de carga.
Se for necessário criar mais máquinas para ter mais containers rodando, o Kubernetes se encarrega de criar essa máquina virtual e atribui a ela os novos containers a medida em que é necessário mais processamento. Caso o nível de processamento diminua o Kubernetes destroy os containers não necessários.
Podemos pensar em um site na black Friday, onde há uma grande quantidade de acesso, o site pode estar dentro do container e o Kubernetes não deixa o site cair fazendo a distribuição de cargas. Neste contexto entebde-se como carga o número de usuários que está entrando no site.
Pod:
Dentro do kubernetes utilizamos a nomenclatura Pod para se referir a um conjunto de containers, por exemplo :
Então quando criamos um pod, estamos criando dentro dele um ou mais containers para serem executados na nossa máquina virtual.
Quando criamos um Pod, o seu container por padrão é criado na porta 80 ou 8080. Para acessa-lo, podemos acessar o IP do POD 100.85.125.26 e a porta do container 8080
100.85.125.26:8080 esse número é importante quando queremos que os pods se comuniquem.
Imagine que em um pod eu tenha 5 containers de MySql, no outro 5 containers de Java e no outro 3 com uma aplicação Front. É a partir do IP do Pod que as aplicações podem se comunicar através da API do Kubernetes.
Então temos que o Kubernetes pode substituir os Pods quantas vezes forem necessários, um Pod é um conjunto de containers docker e os Pods rodam em uma máquina física ou virtual que pode ser ou não escalável os Pods ou as máquinas podem compartilhar seus dados entre si.
Bom gente eu quis trazer mais uma questão teórica sobre o Kubernetes porque ele é um pouco difícil para quem está iniciando e a linguagem dele ou arquivo de configuração .YAML para algumas pessoas também não é fácil de ser entendido.
Bom galera, por hoje é isso. Fiquem com Deus e um abraço!