$30 off During Our Annual Pro Sale. View Details »

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. Docker Swarm vs
    Kubernetes
    Darkmira Tour PHP 2017

    View Slide

  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.

    View Slide

  3. Agenda
    • Basic Docker Workflow
    • Problemas de produção
    • Orquestração
    • Conceitos
    • Contêineres
    • Orquestradores
    • Swarm
    • Kubernetes
    • Como escolher

    View Slide

  4. Disclaimer
    Não faremos Docker 101

    View Slide

  5. Basic Workflow
    Uso comum e simples do Docker

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. Analisando
    Como usar em produção?

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  20. Orquestração
    Elementos:
    • Contêineres
    • Hosts
    • Redes
    • Volumes
    • Monitoramento

    View Slide

  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

    View Slide

  22. Conceitos

    View Slide

  23. Conceitos
    • Cluster

    View Slide

  24. Conceitos
    • Cluster
    • Service Discovery

    View Slide

  25. Conceitos
    • Cluster
    • Service Discovery
    • Load balance

    View Slide

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

    View Slide

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

    View Slide

  28. Contêineres

    View Slide

  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

    View Slide

  30. Contêineres

    View Slide

  31. Orquestradores

    View Slide

  32. Orquestradores

    View Slide

  33. Docker Swarm

    View Slide

  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

    View Slide

  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

    View Slide

  36. Docker Swarm
    • Sem necessidade de levantar serviços de KV
    store, scheduler e service discovery

    View Slide

  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/)

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  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:

    View Slide

  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

    View Slide

  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

    View Slide

  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+)

    View Slide

  45. Docker Swarm
    • Passou a utilizar serviços, tasks e load balancer

    View Slide

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

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide

  50. Docker Swarm
    • Só roda contêineres Docker

    View Slide

  51. Kubernetes

    View Slide

  52. Kubernetes
    • Apelidado de k8s

    View Slide

  53. Kubernetes
    • Apelidado de k8s
    • Criado em uma parceria da Google e da Red Hat

    View Slide

  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)

    View Slide

  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.

    View Slide

  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


    View Slide

  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

    View Slide

  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

    View Slide

  59. Kubernetes
    • Objetos:
    • Replication Controller (RC)
    • Controla a quantidade de pods
    • Controla o lifecycle dos pods

    View Slide

  60. Kubernetes
    • Objetos:
    • Deployment
    • Espécie de substituto do RC
    • Mas também permite roll out de mudanças e
    roll back

    View Slide

  61. Kubernetes
    • Objetos:
    • Replica Set (RS)
    • Similar ao RC
    • Permite customizar os recursos a serem
    atualizados
    • Podem ser expostos como serviços

    View Slide

  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.

    View Slide

  63. Kubernetes
    • Permite o uso de Volumes

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  68. Kubernetes
    • Tem diversas funcionalidades

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  72. Kubernetes
    • Muito trabalhoso para levantar um cluster

    View Slide

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

    View Slide

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

    View Slide

  75. Temos muito mais
    Borg
    Omega
    Kubernetes
    Cloud Foundry
    Mesos

    View Slide

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

    View Slide

  77. Como escolher?

    View Slide

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

    View Slide

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

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

  83. –Unknown
    “Não existe bala de prata na TI.”

    View Slide

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

    View Slide