Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker Swarm vs Kubernetes (Darkmira Tour 2017)

Docker Swarm vs Kubernetes (Darkmira Tour 2017)

Palestra apresentada dia 27 de maio de 2017 no Darkmira Tour PHP 2017 na Universidade Católica de Brasília. Mostramos alguns conceitos de orquestração de contêineres e comparamos diversos detalhes dos orquestradores mais utilizados no momento, Kubernetes e Docker Swarm

Wellington F. Silva

May 27, 2017
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Who am I? • @_wsilva • wsilva, boina, tom, fisi

    • Pai, téc. em telecom, programador, sysadmin, instrutor (bit.ly/curso-docker), escritor (Aprendendo Docker), organizador de meetups.
  2. Agenda • Basic Docker Workflow • Problemas de produção •

    Orquestração • Conceitos • Contêineres • Orquestradores • Swarm • Kubernetes • Como escolher
  3. Analisando • Problema: Perdeu a máquina, perdeu os serviços •

    Solução: Distribuímos em mais máquinas
  4. Analisando • Problema: Perdeu a máquina, perdeu os serviços •

    Solução: Distribuímos em mais máquinas • Problema: Com diversas máquinas como controlamos
  5. Analisando • Problema: Perdeu a máquina, perdeu os serviços •

    Solução: Distribuímos em mais máquinas • Problema: Com diversas máquinas como controlamos • Solução: Orquestração
  6. Orquestração Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously
  7. Orquestração Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously Tradução: O planejamento ou a coordenação dos elementos de uma situação para produzir um efeito desejado, especialmente evitando chamar atenção
  8. Orquestração Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously Tradução: O planejamento ou a coordenação dos elementos de uma situação para produzir um efeito desejado, especialmente evitando chamar atenção
  9. Orquestração Efeito Desejado: • Aplicação rodando • Escalabilidade automática •

    Tolerante a falha (failover, rebalanceamento, health checks, etc) • Melhor uso de recursos • Minimizar intervenção manual
  10. Contêineres • Virtual environment, NÃO É VIRTUAL MACHINE • Isolamento

    de processos baseado em funcionalidades do Kernel • Baseado em • CGroups - Tudo que o processo pode usar • Namespaces - Tudo o que o processo pode ver
  11. Docker Swarm • Criado e gerido pela Docker Inc •

    Lançado em junho de 2015, beta e dependente se service discovery • Incorporado ao engine do Docker na versão 1.12 (28/07/2016) - pronto para produção
  12. Docker Swarm Manager (líder) Worker Worker Worker Worker Worker Scheduler

    Service Discovery Manager Scheduler Service Discovery Manager Scheduler Service Discovery Storage Storage Storage
  13. Docker Swarm • Sem necessidade de levantar serviços de KV

    store, scheduler e service discovery • Os nós implementam algoritmo RAFT Consensus
 (http://thesecretlivesofdata.com/raft/)
  14. Docker Swarm • Sem necessidade de levantar serviços de KV

    store, scheduler e service discovery • Os nós implementam algoritmo RAFT Consensus
 (http://thesecretlivesofdata.com/raft/) • Ideal de 3, 5 ou 7 nós para alta disponibilidade
  15. Docker Swarm • Sem necessidade de levantar serviços de KV

    store, scheduler e service discovery • Os nós implementam algoritmo RAFT Consensus
 (http://thesecretlivesofdata.com/raft/) • Ideal de 3 ou 5 nós para alta disponibilidade • Se o nó líder cair através do consensus outro manager assume o controle através de eleição
  16. Docker Swarm • Permite utilizar labels nos nós e filters

    para influenciar o scheduler (ex.: rodar Redis em máquinas com mais memória)
  17. Docker Swarm • Permite utilizar labels nos nós e filters

    para influenciar o scheduler (ex.: rodar Redis em máquinas com mais memória) • Seguro por padrão:
  18. Docker Swarm • Permite utilizar labels nos nós e filters

    para influenciar o scheduler (ex.: rodar Redis em máquinas com mais memória) • Seguro por padrão: • com encriptação TLS entre todos os nós
  19. Docker Swarm • Permite utilizar labels nos nós e filters

    para influenciar o scheduler (ex.: rodar Redis em máquinas com mais memória) • Seguro por padrão: • com encriptação TLS entre todos os nós • certificados rotacionados automaticamente
  20. Docker Swarm • Permite utilizar labels nos nós e filters

    para influenciar o scheduler (ex.: rodar Redis em máquinas com mais memória) • Seguro por padrão: • com encriptação TLS entre todos os nós • certificados rotacionados automaticamente • permite o uso de Secrets nas aplicações (1.13+)
  21. Docker Swarm • Passou a utilizar serviços e load balancer

    • Permite serviços globais (ideal para captura de logs por exemplo)
  22. Docker Swarm • Passou a utilizar serviços e load balancer

    • Permite serviços globais (ideal para captura de logs por exemplo) • Se um container morre há um reagendamento para rodar outro para garantir o estado declarado do serviço
  23. Docker Swarm • Passou a utilizar serviços e load balancer

    • Permite serviços globais (ideal para captura de logs por exemplo) • Se um container morre há um reagendamento para rodar outro para garantir o estado declarado do serviço • Permite implementar health check (o container pode estar de pé mas a aplicação não necessariamente)
  24. Docker Swarm • Absurdamente simples de subir: • Para criar

    o swarm
 docker swarm init • Para se juntar ao cluster
 docker swarm join TOKEN ip-do- manager
  25. Kubernetes • Apelidado de k8s • Criado em uma parceria

    da Google e da Red Hat • Baseado no Borg e Omega (paper: https:// research.google.com/pubs/pub44843.html)
  26. Kubernetes • Apelidado de k8s • Criado em uma parceria

    da Google e da Red Hat • Baseado no Borg e Omega (paper: https:// research.google.com/pubs/pub44843.html) • Em 2014 o Google criava e destruir 2 bilhões de contenderes por semana.
  27. Kubernetes • Apelidado de k8s • Criado em uma parceria

    da Google e da Red Hat • Baseado no Borg e Omega (paper: https:// research.google.com/pubs/pub44843.html) • Em 2014 o Google criava e destruir 2 bilhões de contenderes por semana. • Doado para e mantido pela Cloud Native Computing Foundation - CNCF

  28. Kubernetes etcd etcd etcd Master API Server Controller Manager Scheduler

    Master API Server Controller Manager Scheduler Node (minion) kublet Proxy Docker Pod Pod Node (minion) kublet Proxy Docker Pod Pod
  29. Kubernetes • Objetos: • Pod (cápsula) • menor unidade escalável

    • Executa as tasks • Pode ter mais contêineres • Containers compartilham rede e storage dentro do Pod
  30. Kubernetes • Objetos: • Replication Controller (RC) • Controla a

    quantidade de pods • Controla o lifecycle dos pods
  31. Kubernetes • Objetos: • Deployment • Espécie de substituto do

    RC • Mas também permite roll out de mudanças e roll back
  32. Kubernetes • Objetos: • Replica Set (RS) • Similar ao

    RC • Permite customizar os recursos a serem atualizados • Podem ser expostos como serviços
  33. Kubernetes • Objetos: • Services • Agrupamento lógico de Pods

    • Implementa balanço de carga para os Pods • Ao ser exposto dispõe um endereço IP ou um serviço de Load Balancer (AWS ou Google Cloud) para acesso externo.
  34. Kubernetes • Permite o uso de Volumes • Permite uso

    de secrets • Permite uso de Labels para influenciar o scheduler
  35. Kubernetes • Permite o uso de Volumes • Permite uso

    de secrets • Permite uso de Labels para influenciar o scheduler • Utiliza namespaces para separar recursos no mesmo cluster
  36. Kubernetes • Permite o uso de Volumes • Permite uso

    de secrets • Permite uso de Labels para influenciar o scheduler • Utiliza namespaces para separar recursos no mesmo cluster • Permite rodar contêineres diferentes do Docker
  37. Kubernetes • Tem diversas funcionalidades • Multiusuário (Role-based access control)

    • Melhor monitoramento de CPU e memória • Horizontal Pod Autoscaling
  38. Kubernetes • Muito trabalhoso para levantar um cluster • Muitos

    recursos para configurar • Muitos conceitos pra assimilar
  39. Como escolher? • Analise os requisitos para seu projeto •

    quantidade de máquinas (dezenas, centenas, milhares)
  40. Como escolher? • Analise os requisitos para seu projeto •

    quantidade de máquinas (dezenas, centenas, milhares) • que lugares do mundo vai receber acesso (BR, Latin America, Mundo Todo)
  41. Como escolher? • Analise os requisitos para seu projeto •

    quantidade de máquinas (dezenas, centenas, milhares) • que lugares do mundo vai receber acesso (BR, Latin America, Mundo Todo) • sensibilidade na escalabilidade da aplicação
  42. Como escolher? • Analise os requisitos para seu projeto •

    quantidade de máquinas (dezenas, centenas, milhares) • que lugares do mundo vai receber acesso (BR, Latin America, Mundo Todo) • sensibilidade na escalabilidade da aplicação • que container engine é melhor para o projeto