andré carvalho @andresantostc - 14 a 16 de dezembro · e para onde queremos ir 7. início 2012 8....

Post on 30-Jun-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Containers na Passado, Presente e Futuro

1

André Carvalho@andresantostc

whoami

Desenvolvedor na globo.comPlataforma de deploys

2

+ de 500 desenvolvedores fazendo centenas de

deploys por dia

3

4

1300 aplicações3300 containers450 máquinas virtuais

5

time < 10 pessoas

6

Como chegamos aquiOnde estamosE para onde queremos ir

7

Início2012

8

Cada equipeFazia 1 deploy a cada 2 semanasMantinha scripts de deploy e provisionamento de infra

9

Cada aplicação

Maquinas físicas em 4 ambientesSetup inicial demorava 1 mês

10

Pouca inovação Aplicações monolíticasAlto custo

11

Como melhorar?

12

Abstrair a infraestruturaDar poder ao

desenvolvedor

13

Premissas

14

Open Source Extensível

Escalável Simples

Multi Linguagem

Alta Disponibilidade

“I’m convinced the majority of people managing infrastructure

just want a PaaS. The only requirement: it has to be built by

them.”

15

100% Open SourcePremissasInspirado no Heroku

16

app create <name> <platform>

17

static go php…

app create <name> <platform>

18

app deploy <files>

requirements.txttsuru.yamlapp.py…

app create <name> <platform>

19

app deploy <files>unit add/remove <# units>

Não tem Dockerfileapenas código e suas

dependencias

20

O conceito de containers não é exposto

21

22

https://www.infoq.com/news/2013/03/Docker

Na verdade…ainda não existem docker

containers

Cada unit era uma VM provisionada com Juju

23

Primeiro deploy: 40 minutosDeploys seguintes: 5

minutos

24

Primeira aplicação em produçãoAWS e Juju

25

2012

Docker2013

26

Queríamos fazer melhor

Deploys ainda mais rápidosDeploys reproduzíveis

27

28

Imagens e Plataformas

29

Deploy gera uma nova layer

Imagens e PlataformasBaseadas no ubuntuTrade-off entre simplicidade e tamanhoArmazenadas em um Registry

30

Registry

31

docker/distribution

Open Source

Diversos backends

Sem autenticação

S3SwiftDisco{

Registry

32

Time dedicado

Autenticação (LDAP)

Garbage collection

Ainda existe um problema:Como escolher onde rodar o

container?

33

Docker-clusterScheduler de containers extensível

Utilizado como biblioteca

github.com/tsuru/docker-cluster

34

Heurística de Scheduling

Segregamos os nós em pools

Cada aplicação está associada a um pool

35

Heurística de SchedulingEspalhar as units de uma mesma aplicaçãoLevamos em consideração

memória requisitada

quantidade de containers

metadados36

ExemploAdicionando 3 units do

Cartola

37

38

Docker-

cluster

pool=g1

pool=esporte

pool=esporte

zone=us-east-1

zone=us-east-2

zone=us-east-1

N1

N2

N3pool=esporte

zone=us-east-2N4

39

zone=us-east-2

zone=us-east-1

N2

N3

zone=us-east-2

N4

Docker-

cluster

40

zone=us-east-2

zone=us-east-1

N2

N3

zone=us-east-2

N4

Docker-

cluster

41

zone=us-east-2

zone=us-east-1

N2

N3

zone=us-east-2

N4

Docker-

cluster

42

zone=us-east-2

zone=us-east-1

N2

N3

zone=us-east-2

N4

Docker-

cluster

Como acessar os containers?

43

44

curl app.cloud.tsuru.com

Router

45

curl app.com Router

Aplicação em produção com Docker

VMs pré-provisionadas

46

2013

Serviços2014

47

Poucas aplicações são completamente stateless

48

“Kelsey’s guide to running traditional databases on

Kubernetes. Strongly consider using a managed service.”

49

Outros times começaram a ofertar serviços

50

ServiçosUsuário cria uma instância do serviço

Usuário faz bind da instância com a app

Serviço injeta variáveis de ambiente

Serviço é informado sobre containers

51

ServiçosSwift (https://github.com/openstack/swift)

DBaaS (https://github.com/globocom/database-as-a-service)

RPaaS (https://github.com/tsuru/rpaas)

52

Fórum Techtudo+ de 4 milhões de usuáriosIntegração com Cloudstack

53

2014

Resiliência2015-2016

54

Investimentos em resiliência

Troubleshooting

55

ProblemasAplicações mal comportadas

VMs com filesystem read-only

Containers e VMs zumbis

Bugs do docker56

“Do yourself a favor and walk away from docker 1.13.0 and 1.13.1. Containerd randomly

panics and never recovers and it will give you serious agony.”

57

Troubleshootingsysdig (https://sysdig.com/opensource/)

58

Troubleshootingdocker events

59

Troubleshootingdmesg

60

Não é o bastantePrecisamos automatizar e

agregar

61

Big-SiblingContainer que roda em todos os nós

• https://github.com/tsuru/bs

Realiza checks de sanidade

Processa e redireciona logs

Envia métricas (dashboard e autoscale)

62

HealingNunca atualizar/reiniciar o Docker em uma instância em uso

Big-sibling identifica VMs problemáticas

Tsuru cria nova VM e move containers

63

VMs

Ubuntu LTS (Kernel 4)

4 vCPU, 8gb mem

Docker 12.x~13.x

64

VMsLog driver

Syslog (big-sibling)

65

Storage driver

AUFS

Overlay/Overlay2 (!POSIX)

Devicemapper

Globoplay e CartolaMigração de Datacenter

66

2015-2016

Kubernetes2017-2018

67

Porque?

68

KubernetesDeploy de componentes da Plataforma

69

Kubernetes

70

Kubernetes

71

KubernetesDestruímos e criamos clusters todos os dias

AWS, GCE e Cloudstack

Validações do tsuru, scripts e puppet

github.com/tsuru/integration_{gce,ec2}

72

A plataforma continua sendo o tsuru

73

“Limit the scope of access to a Kubernetes cluster to

automation tools and cluster administrators who may have to debug it or keep it running.”

74

Tsuru + Kubernetes

Provisioners

Configurado por pool

75

Leva em consideração os recursos

Espalha pods de um mesmo deployment

Nodes com labels

Pods com nodeAffinity e podAntiAffinity

76

Tsuru + Kubernetes

Tsuru + KubernetesKubernetes-router

Cria serviços de LoadBalancer e Ingresses

77

curl app.cloud.tsuru.com

Tsuru + KubernetesVolumes

NFS

volume create <name>

volume bind <volume> <app>

78

Crescimento do CartolaVotação do BBB

Componentes e aplicações no Kubernetes

79

2017-Hoje

80

Futuro2018+

81

Kubernetes++

82

Multi-Cloud

83

Service Mesh

84

Obrigado!andrestc.com

85

@andresantostc

top related