Created
August 13, 2019 13:28
-
-
Save roncat/e366ac2c10328aae6753dfff9b90ee59 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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