Skip to content

Instantly share code, notes, and snippets.

@roncat
Created August 13, 2019 13:28
Show Gist options
  • Save roncat/e366ac2c10328aae6753dfff9b90ee59 to your computer and use it in GitHub Desktop.
Save roncat/e366ac2c10328aae6753dfff9b90ee59 to your computer and use it in GitHub Desktop.
Em outras palavras, o Kubernetes é uma ferramenta de código aberto usada para orquestrar e gerenciar clusters de containers. Só que aqui o cluster são várias máquinas com um engine de container, que no nosso caso e na maioria de todos os casos é o Docker, a engine mais usada para esse trabalho de provisionar os containers nos hosts do cluster.
O Kubernetes entra aqui para gerenciar esses hosts e executar demandas que são recebidas pelo cluster. Muita gente ainda tem dúvida ou faz confusão tentando comparar Docker e Kubernetes, mas a comparação correta seria “Docker Swarm” e Kubernetes, ambas ferramentas de orquestração de cluster. O Kubernetes usa o Docker para criar os containers nos nós do cluster. O trabalho dele aqui é gerenciar, controlar e monitorar o estado desses containers ao longo do cluster.
Estrutura do Kubernetes
O Kubernetes possui alguns termos e componentes para determinadas funções e tarefas. Inicialmente pode parecer confuso e não fazer muito sentido alguns desses componentes, mas ao começar a usar o Kubernetes e a entender a forma como ele trabalha fica mais fácil saber o que cada carinha desse faz.
Master, por sua vez, é a máquina que controla os nós do Kubernetes. É nela que todas as atribuições de tarefas do cluster se originam. No Master temos todos os componentes rodando, assim:
Agora vamos aos componentes, ou os serviços que sobem na máquina Master para manter o estado desejado dos nossos serviços no cluster. São quatro:
- ETCD: é uma base de dados de chave valor. Ele armazena os dados de configuração do cluster e o estado do cluster;
- API Server: fornece API kubernetes usando Json. Estados de objetos da API são armazenados no ETCD, e o kubectl usa o API Serve para se comunicar com o cluster;
- Controller Manager: monitora os controladores de replicação e cria os pods para manter o estado desejado;
- Scheduler: é responsável por executar as tarefas de agendamento, como execução de contêineres nos minions com base na disponibilidade de recursos.
- Kubectl é um utilitário de linha de comando que se conecta ao servidor API, usado pelos administradores para criar pods, deployments, serviços etc. Esse cara vamos usar bastante para gerenciar nosso cluster. Workes é o nome dado para cada host do cluster (nós ou nodes). São as máquinas que realizam as tarefas solicitadas.
Componentes que rodam nos Minions
Kubelet: agente que é executado em cada nó worker, se conecta ao Docker e cuida da criação, execução e exclusão de contêineres;
Docker: É responsável por rodar e executar os containers, só que quem vai solicitar é o Kubernetes;
Kube-Proxy: encaminha o tráfego para os contêineres apropriados com base no endereço IP e no número da porta da solicitação recebida.
Além desses, ainda temos alguns conceitos que são interessantes ter em mente no Kubernetes:
Pod, que pode ser definido como um grupo de contêineres que são implantados em um único nó de trabalho. É a menor unidade dentro de um cluster Kubernetes e nada mais é do que containers rodando dentro de seu cluster de Kubernetes.
Replication Controller é o responsável por manter um número determinado de pods em execução. É no RC que você diz quantos containers você deseja que fiquem rodando para atender determinado serviço, e caso um caia o RC outra instância é criada automaticamente.
Services é o responsável por atrelar uma faixa de IP para um determinado RC. Cada vez que o RC cria uma nova instância de pod, ele inicia com um IP determinado pelo service. Services vai ser o ponto de entrada dos nossos serviços.
Namespace recurso que possibilita dividir seu Cluster de Kubernetes em dois ambientes, como Produção e Teste, por exemplo, podendo limitar os recursos computacionais para ambos.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment