Introdução ao Kubernetes
Kubernetes
Definição
“Kubernetes é uma plataforma de código aberto, portável e extensiva para gerenciamento de cargas de trabalho e serviços distribuídos em containers, que facilita tanto a configuração declarativa quanto automação.” - Mantenedores
Orquestrador (gestão e entrega) de aplicações (containers):
É um framework de infraestrutura para containers declarativo (através de arquivos .yaml
) e operado de maneira autónoma por meio dos controllers.
Origens
-
Borg: criado pelo Google com a finalidade de rodar processos (jobs) em uma grande quantidade de clusters
-
Omega: aprimoramento do Borg
OBS: devido à origem do K8S, o GCP (Google Could Platform) é o melhor Cloud Provider para Kubernetes
Características
-
É disponibilizado através de ua conjunto de APIs
-
Normalmente o acesso à API é feito a partir do CLI (Command Line Interface):
kubectl
-
É baseado em estados, a configuração do estado é feito a partir de um conjunto de objetos
Principais objetos
-
Pods
-
Services
-
Deployments
Vantagens
-
Economia de recursos com a capacidade de escalar a aplicação de acordo com a demanda
-
Implantação e atualização sem downtime
-
Facilidade na realização de rollbacks
-
Interface agradável para desenvolvedores
“É uma framework declarativo para containers operado de maneira autónoma por containers que viabiliza a interface entre as equipes de desenvolvimento e da infraestrutura que hospedará suas aplicações”
-
Alta disponibilidade
Auto diagnóstico
Load Balancer
-
Escalabilidade
Cluster
Definição
É um conjunto de nodes.
Node: Virtual Machine (VM) ou máquina física
Cada máquina possui uma quantidade de vCPU e memória.
Os recursos de cada node são especificados no arquivo de configuração do Kubernetes
Exemplos
-
AWS
-
Azure
-
Google Cloud Platform
-
Ambientes On-promises (máquinas físicas com Kubernetes)
Estrutura do Cluster Kubernetes
Master Node
-
Definição: responsável por gerenciar os outros nós do cluster (tomadas de decisões)
-
Serviços disponibilizados pelo Kubernetes
-
Kube-apiserver
-
Kube-controller-manager
-
Kube-scheduler
-
Node
-
Definição: responsável por rodar a aplicação (container)
-
Serviços disponibilizados pelo Kubernetes
-
Kubelet
-
Kubeproxy
-
Master e node(s) se comunicam entre si.
Ferramentas
Minikube
-
Definição: criar clusters Kubernetes localmente (ambiente On-promises)
-
Vantagens
-
Boa comunidade
-
Várias funcionalidades e add-ons
-
Boa documentação
-
-
Instalação: Docker + Minikube
Kubectl (Kube control)
-
Definição: uma ferramenta CLI para gerenciar clusters Kubernetes
-
Algumas ações com Kubectl
-
Deploy
-
Inspecionar
-
Editar recursos
-
Depurar
-
Ver logs
-