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

Swarm vs Kubernetes (PHPeste 2019)

Swarm vs Kubernetes (PHPeste 2019)

Palestra apresentada dia 19 de outubro de 2019 no PHPeste 2019 em Recife-PE. Mostramos alguns conceitos de orquestração de contêineres e comparamos diversos detalhes e um guia de comparação para escolher um dos dois orquestradores mais utilizados no momento, Kubernetes ou Docker Swarm.

Wellington F. Silva

October 19, 2019
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Wellington F. Silva
    contato:
    @_wsilva
    nicks:
    wsilva, boina, tom, fisi*
    funções:
    pai, tec. telecom,
    programador, sysadmin,
    docker community leader,
    instrutor, escritor, zend
    certified engineer e docker
    certified associate
    * deprecation in favor of Well

    View full-size slide

  2. Agenda
    • Docker 101
    • Fluxo básico de trabalho com contêineres
    • Problemas comuns em produção
    • Orquestração e conceitos
    • Docker Swarm,Swarm mode, Kubernetes
    • Demos

    View full-size slide

  3. Disclaimer
    • Breve explicação sobre Contêineres e e Docker
    • Foco na Orquestração dos contêineres

    View full-size slide

  4. O que é Docker?

    View full-size slide

  5. O que é Docker?

    View full-size slide

  6. O que é Docker
    Contêiner?

    View full-size slide

  7. “Ferramenta para
    virtualização no nível do
    Sistema Operacional”

    View full-size slide

  8. –Wellington F. Silva
    “Ferramenta para
    virtualização no nível do
    Sistema Operacional”

    View full-size slide

  9. Tipos de
    Virtualização

    View full-size slide

  10. Tipos de Virtualização
    • Full Virtualisation

    View full-size slide

  11. Tipos de Virtualização
    • Full Virtualisation
    • Partial Virtualisation

    View full-size slide

  12. Tipos de Virtualização
    • Full Virtualisation
    • Partial Virtualisation
    • Paravirtualisation

    View full-size slide

  13. Tipos de Virtualização
    • Full Virtualisation
    • Partial Virtualisation
    • Paravirtualisation
    • OS Level Virtualisation

    View full-size slide

  14. Tipos de Virtualização
    • Full Virtualisation
    • Partial Virtualisation
    • Paravirtualisation
    • OS Level Virtualisation Contêineres

    View full-size slide

  15. Contêiner NÃO é VM

    View full-size slide

  16. SERVIDOR
    SERVIDOR
    HOST OS
    HOST OS
    CONTAINER ENGINE
    HYPERVISOR
    BINS/LIBS
    GUEST OS APP
    GUEST OS
    BINS/LIBS BINS/LIBS APP
    APP APP
    VM VM
    Container
    Container

    View full-size slide

  17. Diferentes, não excludentes
    SERVIDOR
    XEN
    UBUNTU LINUX
    DOCKER
    ENGINE
    BINS/LIBS MYSQL
    DEBIAN
    LINUX
    BINS/LIBS
    NGINX
    BINS/LIBS
    PHP-FPM
    DOCKER
    ENGINE
    WINDOWS
    2016 SERVER
    BINS/LIBS
    SQL SERVER

    View full-size slide

  18. Fluxo comum de
    trabalho com Docker

    View full-size slide

  19. Fluxo comum
    Client Docker Host
    docker daemon
    Contêineres
    Imagens
    Registry

    View full-size slide

  20. Fluxo comum
    Client Docker Host
    docker run redis docker daemon
    Contêineres
    Imagens
    Registry

    View full-size slide

  21. Fluxo comum
    Client Docker Host
    docker run redis docker daemon
    Contêineres
    Imagens
    Registry

    View full-size slide

  22. Fluxo comum
    Client Docker Host
    docker run redis docker daemon
    Contêineres
    Imagens
    Registry

    View full-size slide

  23. Fluxo comum
    Client Docker Host
    docker run redis docker daemon
    Contêineres
    Imagens
    Registry

    View full-size slide

  24. Fluxo comum
    Client Docker Host
    docker run redis docker daemon
    Contêineres
    Imagens
    Registry

    View full-size slide

  25. Como escalar para
    vários servidores em
    produção?

    View full-size slide

  26. Problemas comuns de
    produção
    • Como gerenciar o ciclo de vida dos
    contêineres?

    View full-size slide

  27. Problemas comuns de
    produção
    • Como gerenciar o ciclo de vida dos
    contêineres?
    • Como escalar?

    View full-size slide

  28. Problemas comuns de
    produção
    • Como gerenciar o ciclo de vida dos
    contêineres?
    • Como escalar?
    • Como recriar contêineres que morrem?

    View full-size slide

  29. Problemas comuns de
    produção
    • Como gerenciar o ciclo de vida dos
    contêineres?
    • Como escalar?
    • Como recriar contêineres que morrem?
    • Como atualizar o sistema sem downtime?

    View full-size slide

  30. Problemas comuns de
    produção
    • Onde colocar meus contêineres?

    View full-size slide

  31. Problemas comuns de
    produção
    • Onde colocar meus contêineres?
    • Como os contêineres vão se comunicar?

    View full-size slide

  32. Problemas comuns de
    produção
    • Onde colocar meus contêineres?
    • Como os contêineres vão se comunicar?
    • Como gerenciar informações sensíveis?

    View full-size slide

  33. Orquestração

    View full-size slide

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

    View full-size slide

  35. 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 livre: O planejamento ou a coordenação dos elementos de
    uma situação para produzir um efeito desejado, especialmente
    evitando chamar atenção

    View full-size slide

  36. 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 livre: O planejamento ou a coordenação dos elementos de
    uma situação para produzir um efeito desejado, especialmente
    evitando chamar atenção

    View full-size slide

  37. Orquestração
    (Elementos)
    • Contêineres
    • Hosts
    • Redes
    • Volumes
    • Monitoramento
    • Logs

    View full-size slide

  38. Orquestração
    (Efeitos desejados)
    • Aplicação sempre rodando
    • Escalabilidade automática
    • Tolerante a falha (failover, balanceamento,
    health checks, etc)
    • Melhor utilização de recursos
    • Minimizar intervenção manual

    View full-size slide

  39. Revisitando
    conceitos

    View full-size slide

  40. Revisitando Conceitos
    • Cluster

    View full-size slide

  41. Revisitando Conceitos
    • Cluster
    • Service Discovery

    View full-size slide

  42. Revisitando Conceitos
    • Cluster
    • Service Discovery
    • Load balance

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  46. Docker Swarm

    View full-size slide

  47. Docker Swarm
    • Criado e mantido pela Docker Inc

    View full-size slide

  48. Docker Swarm
    • Criado e mantido pela Docker Inc
    • Lançado em dezembro de 2014, beta (v0.2) e
    dependente de service discovery externo

    View full-size slide

  49. Docker Swarm
    • Criado e mantido pela Docker Inc
    • Lançado em dezembro de 2014, beta (v0.2) e
    dependente de service discovery externo
    • Incorporado ao engine do Docker na versão
    1.12 (Jul/2016) - pronto para produção - Swarm
    Mode

    View full-size slide

  50. Docker Swarm
    • Criado e mantido pela Docker Inc
    • Lançado em dezembro de 2014, beta (v0.2) e
    dependente de service discovery externo
    • Incorporado ao engine do Docker na versão
    1.12 (Jul/2016) - pronto para produção - Swarm
    Mode
    • Melhorias na versões seguintes com secrets,
    stacks, configs, autolock

    View full-size slide

  51. Kubernetes
    (k8s)

    View full-size slide

  52. Kubernetes
    • Mantido pela CNCF (Cloud Native Computing
    Foundation

    View full-size slide

  53. Kubernetes
    • Mantido pela CNCF (Cloud Native Computing
    Foundation
    • 3ª geração de orquestrador de contêineres do
    Google (Borg, Omega e K8s)

    View full-size slide

  54. Kubernetes
    • Mantido pela CNCF (Cloud Native Computing
    Foundation
    • 3ª geração de orquestrador de contêineres do
    Google (Borg, Omega e K8s)
    • Código aberto desde 2014 (1º release Set/2014)

    View full-size slide

  55. Kubernetes
    • Mantido pela CNCF (Cloud Native Computing
    Foundation
    • 3ª geração de orquestrador de contêineres do
    Google (Borg, Omega e K8s)
    • Código aberto desde 2014 (1º release Set/2014)
    • Grandes contribuições da Red Hat (Openshift
    v3)

    View full-size slide

  56. Kubernetes
    • Mantido pela CNCF (Cloud Native Computing
    Foundation
    • 3ª geração de orquestrador de contêineres do
    Google (Borg, Omega e K8s)
    • Código aberto desde 2014 (1º release Set/2014)
    • Grandes contribuições da Red Hat (Openshift v3)
    • Experiência do Google (Em 2014 mais de 2
    bilhões de contêineres eram criados por semana)

    View full-size slide

  57. Arquitetura (Swarm)
    Nodes - Máquinas que compõe o cluster
    • Worker
    • rodam contêineres e reportam os estados deles
    • Manager
    • rodam contêineres e reportam os estados deles
    • decidem onde contêineres devem ser executados
    • mantém o desired state dos serviços

    View full-size slide

  58. Arquitetura (Swarm)
    Worker Worker Worker Worker Worker
    raft consensus group
    Manager (líder) Manager
    Manager
    CA CA
    CA
    TLS TLS TLS
    TLS
    TLS
    TLS
    TLS
    TLS

    View full-size slide

  59. Arquitetura (Swarm)
    • Managers compartilham dados via raft
    consensus
    • Se o líder falhar outro manager assume
    • Devemos manter o quórum
    (maioria de votos: n/2+1) n é números de nós
    managers

    View full-size slide

  60. Arquitetura (Swarm)
    Qtde managers Quorum Qtde falhas
    1 1 0
    2 2 0
    3 2 1
    4 3 1
    5 3 2
    6 4 2
    7 4 3

    View full-size slide

  61. Arquitetura (Swarm)
    Qtde managers Quorum Qtde falhas
    1 1 0
    2 2 0
    3 2 1
    4 3 1
    5 3 2
    6 4 2
    7 4 3

    View full-size slide

  62. Arquitetura (Swarm)
    Demo:
    https://raft.github.io/

    View full-size slide

  63. Arquitetura (Kubernetes)
    Nodes - Máquinas que compõe o cluster
    • Node
    • rodam contêineres e reportam os estados deles
    • Master
    • decidem onde contêineres devem ser
    executados
    • mantém o desired state dos serviços

    View full-size slide

  64. Arquitetura (Kubernetes)
    Componentes dos Master
    • Etcd
    • Banco de dados (chave/valor) distribuído
    • Podem rodar dentro do master ou em
    máquinas separadas
    • Implementa raft consensus

    View full-size slide

  65. Arquitetura (Kubernetes)
    Componentes dos Master
    • Api sever
    • Expõe a API do K8s para receber
    comandos
    • Interage com os demais componentes para
    controlar o cluster

    View full-size slide

  66. Arquitetura (Kubernetes)
    Componentes dos Master
    • Scheduler
    • Componente que gerencia contêineres
    (pods) que ainda não tem um nó de destino.
    • Escolhe em qual máquina é melhor colocar
    o contêiner (pod)

    View full-size slide

  67. Arquitetura (Kubernetes)
    Componentes dos Master
    • Controller Manager
    • Componete que roda ativamente garantindo
    que as demais estruturas estão rodando:
    • Node Controller
    • Replication Controller
    • ServiceAccount & Token Controllers

    View full-size slide

  68. Arquitetura (Kubernetes)
    Componentes dos Nodes
    • Kubelet
    • Piloto da máquina, executa os contêineres
    • Interage com Api server para controlar os
    contêineres (pods)
    • Interage com Runtime de contêiner
    (Docker, ContêinerD, rkt, etc)

    View full-size slide

  69. Arquitetura (Kubernetes)
    Componentes dos Nodes
    • Kube proxy
    • Controla o acesso aos pod via rede

    View full-size slide

  70. Arquitetura (Kubernetes)
    Componentes dos Nodes
    • Container Runtime Interface (CRI)
    • Interage com o Kubelet que manda rodar
    contêineres

    View full-size slide

  71. Master
    etcd
    etcd
    etcd
    Master
    API
    Server
    Controller
    Manager
    Scheduler
    Node
    kublet Proxy
    Docker
    Pod Pod
    Node
    kublet Proxy
    Docker
    Pod Pod
    Internet
    Arquitetura (Kubernetes)

    View full-size slide

  72. Estruturas (Swarm)
    • Stacks - Agrupa serviços diferentes que se
    comunicam entre si (frontend, backend, apis,
    gerenciadores de fila, consumers, caches,
    bancos, etc)

    View full-size slide

  73. Estruturas (Swarm)
    • Stacks - Agrupa serviços diferentes que se
    comunicam entre si (frontend, backend, apis,
    gerenciadores de fila, consumers, caches,
    bancos, etc)
    • Services - Agrupa as tasks, define o estado
    desejado, coloca um load balancer na frente
    das tasks / containers

    View full-size slide

  74. Estruturas (Swarm)
    • Stacks - Agrupa serviços diferentes que se
    comunicam entre si (frontend, backend, apis,
    gerenciadores de fila, consumers, caches,
    bancos, etc)
    • Services - Agrupa as tasks, define o estado
    desejado, coloca um load balancer na frente
    das tasks / containers
    • Tasks - Gerencia o ciclo de vida do contêiner,
    baixa a imagem, cria o container, executa,
    finaliza. Também reporta o estado

    View full-size slide

  75. Estruturas (Kubernetes)
    • Pods - Menor unidade no Kubernetes,
    composto de 1 ou mais contêineres

    View full-size slide

  76. Estruturas (Kubernetes)
    • Pods - Menor unidade no Kubernetes,
    composto de 1 ou mais contêineres
    • Controllers (ReplicaSet, Deployments,
    StatefulSets, DaemonSets, Jobs, CronJobs,
    etc) - estrutura que agrupam e mantém pods
    rodando de acordo com a necessidade (long
    running, short running, presente em todas as
    máquinas, etc)

    View full-size slide

  77. Estruturas (Kubernetes)
    • Pods - Menor unidade no Kubernetes,
    composto de 1 ou mais contêineres
    • Controllers (ReplicaSet, Deployments,
    StatefulSets, DaemonSets, Jobs, CronJobs,
    etc) - estrutura que agrupam e mantém pods
    rodando de acordo com a necessidade (long
    running, short running, presente em todas as
    máquinas, etc)
    • Services - estrutura que garante acesso a
    todas instâncias (pods), load balancer

    View full-size slide

  78. 1. Controle do cluster
    • Swarm - através da api do Docker usando
    cliente http ou usando o comando docker,
    apenas nas máquinas managers
    • Kubernetes - através da api do Kubernetes
    usando cliente http ou usando o comando
    kubectl, apenas nas máquinas managers

    View full-size slide

  79. 2.Instalação
    • Swarm - Basta instalar o Docker nas
    máquinas do cluster
    • Kubernetes - Temos que instalar os
    componentes separadamente (etcd, api
    server, scheduler, controller manager,
    kubelet, kube-proxy, docker ou outro runtime,
    etc)

    View full-size slide

  80. 2.Configuração
    • Swarm
    Basta rodar o comando:
    $ docker swarm init
    na primeira máquina, copiar o comando da
    saída e repetir nas demais máquinas pra
    juntá-las no cluster
    $ docker swarm join ...
    Podemos promover uma máquina worker
    para manager e vice-versa

    View full-size slide

  81. 2.Configuração
    • Kubernetes
    Para cada componente temos que rodar ou
    via daemon ou via container, criar arquivos
    de config para garantir comunicação com os
    demais componentes, gerar e distribuir os
    certificados e chaves que mantem a
    comunicação encriptado.
    Não conseguimos mudar os papéis das
    máquinas

    View full-size slide

  82. 3. GUI
    • Swarm
    Não possui uma interfacepodemos utilizar
    Rancher, swarmpit.io, Portainer ou o Docker
    Universal Control Plane (só enterprise)
    • Kubernetes
    Existe um projeto com dashboard oficial mas
    não recomendado por falhas de segurança
    Também podemos usar de terceiros

    View full-size slide

  83. 4. Escalabilidade
    • Swarm
    Não possui ferramenta para scale de
    contêineres
    • Kubernetes
    Temos o Vertical e o horizontal pod
    autoscaler que pode controlar o tamanho e
    quantidade de réplicas - depende de
    instalarmos o metric server

    View full-size slide

  84. 5. Balanceamento
    • Swarm
    Para cada serviço criado entrega um Load
    Balancer por padrão que distribui a carga
    entre as réplicas
    • Kubernetes
    Temos que criar um service que apontar para
    as réplicas que estão rodando no cluster

    View full-size slide

  85. 6. Deployments
    • Swarm
    Trabalha apenas com estratégia rolling mas
    com diversas opções de controle que
    permitem recriar um service
    • Kubernetes
    Permite rolling e recreate também com várias
    opções de controle
    Ambos dependem de terceiros para outras
    estratégias como blue/green ou canary

    View full-size slide

  86. 6. Volumes
    • Swarm
    Depende de plugins para controlar o
    sincronismo e disponibilidade dos arquivos
    para todos os nós
    • Kubernetes
    Tem diversas estratégias de utilização e se
    integra bem com cloud providers paramentar
    e desmontar discos

    View full-size slide

  87. Como escolher?

    View full-size slide

  88. Como escolher?
    Analisando os requisitos para seu projeto:
    • Qtde de máquinas (dezenas, centenas,
    milhares)
    • Quais regiões das aplicações (BR, Latin
    America, Mundo Todo)
    • Quanto precisamos controlar o cluster
    • Que container engine é melhor para o projeto

    View full-size slide

  89. Grato
    Quer mais?
    • Curso Docker:
    http://bit.ly/curso-docker
    • Telegram:
    http://t.me/dockerbr
    • Slacks:
    http://bit.ly/docker-slack
    http://dockr.ly/community
    • Meetup em SP:
    http://events.docker.com/
    sao-paulo

    View full-size slide

  90. Slides
    https://speakerdeck.com/wsilva

    View full-size slide