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

280fecb4f048de5ecf36bec281609ea4?s=128

Wellington F. Silva

May 27, 2017
Tweet

Transcript

  1. Docker Swarm vs Kubernetes Darkmira Tour PHP 2017

  2. 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.
  3. Agenda • Basic Docker Workflow • Problemas de produção •

    Orquestração • Conceitos • Contêineres • Orquestradores • Swarm • Kubernetes • Como escolher
  4. Disclaimer Não faremos Docker 101

  5. Basic Workflow Uso comum e simples do Docker

  6. Basic Workflow Client Docker Host docker daemon Contêineres Imagens Registry

  7. Basic Workflow Client Docker Host docker run redis docker daemon

    Contêineres Imagens Registry
  8. Basic Workflow Client Docker Host docker run redis docker daemon

    Contêineres Imagens Registry
  9. Basic Workflow Client Docker Host docker run redis docker daemon

    Contêineres Imagens Registry
  10. Basic Workflow Client Docker Host docker run redis docker daemon

    Contêineres Imagens Registry
  11. Basic Workflow Client Docker Host docker run redis docker daemon

    Contêineres Imagens Registry
  12. Analisando Como usar em produção?

  13. Analisando • Problema: Perdeu a máquina, perdeu os serviços

  14. Analisando • Problema: Perdeu a máquina, perdeu os serviços •

    Solução: Distribuímos em mais máquinas
  15. 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
  16. 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
  17. Orquestração Dicionário Oxford: 2. the planning or coordination of the

    elements of a situation to produce a desired effect especially surreptitiously
  18. 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
  19. 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
  20. Orquestração Elementos: • Contêineres • Hosts • Redes • Volumes

    • Monitoramento
  21. 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
  22. Conceitos

  23. Conceitos • Cluster

  24. Conceitos • Cluster • Service Discovery

  25. Conceitos • Cluster • Service Discovery • Load balance

  26. Conceitos • Cluster • Service Discovery • Load balance •

    High Availability (HA)
  27. Conceitos • Cluster • Service Discovery • Load balance •

    High Availability (HA) • Auto Scale
  28. Contêineres

  29. 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
  30. Contêineres

  31. Orquestradores

  32. Orquestradores

  33. Docker Swarm

  34. 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
  35. Docker Swarm Manager (líder) Worker Worker Worker Worker Worker Scheduler

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

    store, scheduler e service discovery
  37. 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/)
  38. 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
  39. 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
  40. Docker Swarm • Permite utilizar labels nos nós e filters

    para influenciar o scheduler (ex.: rodar Redis em máquinas com mais memória)
  41. 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:
  42. 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
  43. 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
  44. 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+)
  45. Docker Swarm • Passou a utilizar serviços, tasks e load

    balancer
  46. Docker Swarm • Passou a utilizar serviços e load balancer

    • Permite serviços globais (ideal para captura de logs por exemplo)
  47. 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
  48. 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)
  49. 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
  50. Docker Swarm • Só roda contêineres Docker

  51. Kubernetes

  52. Kubernetes • Apelidado de k8s

  53. Kubernetes • Apelidado de k8s • Criado em uma parceria

    da Google e da Red Hat
  54. 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)
  55. 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.
  56. 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

  57. 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
  58. 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
  59. Kubernetes • Objetos: • Replication Controller (RC) • Controla a

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

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

    RC • Permite customizar os recursos a serem atualizados • Podem ser expostos como serviços
  62. 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.
  63. Kubernetes • Permite o uso de Volumes

  64. Kubernetes • Permite o uso de Volumes • Permite uso

    de Secrets
  65. Kubernetes • Permite o uso de Volumes • Permite uso

    de secrets • Permite uso de Labels para influenciar o scheduler
  66. 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
  67. 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
  68. Kubernetes • Tem diversas funcionalidades

  69. Kubernetes • Tem diversas funcionalidades • Multiusuário (Role-based access control)

  70. Kubernetes • Tem diversas funcionalidades • Multiusuário (Role-based access control)

    • Melhor monitoramento de CPU e memória
  71. Kubernetes • Tem diversas funcionalidades • Multiusuário (Role-based access control)

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

  73. Kubernetes • Muito trabalhoso para levantar um cluster • Muitos

    recursos para configurar
  74. Kubernetes • Muito trabalhoso para levantar um cluster • Muitos

    recursos para configurar • Muitos conceitos pra assimilar
  75. Temos muito mais Borg Omega Kubernetes Cloud Foundry Mesos

  76. Temos muito mais CGroups OCI RKT/appc Docker LXC LXD CRI-O

  77. Como escolher?

  78. Como escolher? • Analise os requisitos para seu projeto

  79. Como escolher? • Analise os requisitos para seu projeto •

    quantidade de máquinas (dezenas, centenas, milhares)
  80. 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)
  81. 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
  82. 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
  83. –Unknown “Não existe bala de prata na TI.”

  84. Avalie: https://joind.in/talk/06052 https://spearkerdek.com/wsilva