O que você precisa saber sobre Kubernetes para não passar vergonha
Uma bate papo feito no meetup do iFood Sem Fronteiras sobre Kubernetes.
Vários assuntos bordados e comentados, todos com referências no final da apresentação!
Bons estudos! ;)
Quem sou eu Daniel Requena ● Pai e marido ● Bacharel em Ciência da Computação ● Mestre em Engenharia de Computação ● 15+ anos de experiência na área ● SRE iFood ● Apaixonado por: Tecnologia, Infraestrutura, DevOps, IAC, Cloud, Containers, K8S e + buzzwords. ● Problemas com cafeína
O que estou fazendo aqui? ● 3 objetivos ○ Vender o iFood pra vocês ○ Dar uma visão geral e contextualizada sobre Kubernetes ○ Tentar dar um exemplo prático de utilização ○ Deixar muitas referências de cursos, livros, vídeos, podcasts, etc... sobre os tópicos aqui abordados
iFood ● Funcionários em Tech: ~650 foodlovers ● ~50 milhões de pedidos/mês ● 9K orders por minuto ● Quantidade de Aplicações: ~550 apps ● EC2s: ~3500 ● Número de deploys: +1000 mês ● Tráfego de rede: +4.0M RPM
Por que aprender Kubernetes? ● Quase a totalidade das aplicações do iFood rodam em Kubernetes ○ Realidade cada vez maior e que só tende a aumentar ● Criado para o atual padrão arquitetural de aplicações ● Padrão de fato de orquestração de containers ● Diferencial profissional ● Se isso ainda não for o suficiente...
Containers ● Tecnologia criada na década de 70 (pra variar) ● Isolamento entre aplicações na camada de Sistema Operacional (processo) ● Renascimento há cerca de 6 anos atrás ● Principal referência (mas não mais a única): Docker ● Revolucionou a forma de desenvolver, empacotar e executar aplicações. ○ Rapidez de inicialização ○ Portabilidade ○ Efêmeros ○ Imutável ○ Mais performance (na teoria) ● Reforçou e endossou o padrão que voltava à moda ○ microservices (também dos anos 70)
Containers Crédito das imagens: https://www.docker.com/resources/what-container Hardware Hypervisor Virtual Machine Guest OS Docker App A App B App C App D
Containers ● Arquitetura de microservices ○ Escopo único por aplicação ○ Alta escalabilidade ○ Debug difícil ○ Gerenciamento difícil ● Se uma andorinha não faz verão, 1 container não faz um sistema ○ Escalar ○ Detectar falha ○ Reiniciar ○ Distribuição de carga
Kubernetes ● O que é? ○ Um orquestrador de containers ○ Distribuído ○ Resiliente ● O que faz? ○ Executa, Monitora, Expõe, Distribui Carga, Escala, e muito mais, aplicações empacotadas como containers. ● Como tirar melhor proveito? ○ Microservices ○ Stateless ○ Escalável ○ 12 fatores ○ Lembrando que não existe bala de prata
Kubernetes ● Como interagimos com o Kubernetes? ○ kubectl ■ Interage com a API ■ Comanda a criação, destruição, replicação de serviços. ● Se é uma API, precisamos conhecer seus objetos e specs ○ JSON / YAML ■ Deployment ■ Service ■ HPA (Horizontal Pod AutoScaler) ■ … ■ muitos outros mais...