SlideShare uma empresa Scribd logo
Docker em Produção com Kubernetes
Fernando Landell de Moura Ruaro
Software Engineer na Meltwater
O que será apresentado?
Introdução ao Kubernetes
- Recursos Básicos
- Arquitetura
Confiabilidade do cluster
Production Issues/Use Cases
Entrega contínua
Kubernetes
“open-source system for automating
deployment, scaling and management
of containerized applications”
MINION MINIONMINION
MASTER
ETCD
Kubernetes - Tipos de Recursos
Kubernetes - Tipos de Recursos
ConfigMap
Container
CronJob
DaemonSet
Deployment
Endpoints
Ingress
Job
PersistentVolumeClaim
Pod
ReplicaSet
ReplicationController
Secret
Service
StatefulSet
StorageClass
Volume
Kubernetes - Tipos de Recursos
ConfigMap
Container
CronJob
DaemonSet
Deployment
Endpoints
Ingress
Job
PersistentVolumeClaim
Pod
ReplicaSet
ReplicationController
Secret
Service
StatefulSet
StorageClass
Volume
É um grupo de um ou mais containers
Esse containers são criados sempre
em conjunto
Compartilham o mesmo IP e range de
portas
Podem compartilhar volumes
Pod
Deployment
Definição do número de réplicas de
um pod
Você só precisa definir o estado
que você deseja
Rolling updates
Service
É uma forma de tornar os pods
acessíveis, tanto dentro do cluster
quanto externamente.
Utiliza o selector para selecionar
quais os pods respondem aquele
serviço.
Service
É uma forma de tornar os pods
acessíveis, tanto dentro do cluster
quanto externamente.
Utiliza o selector para selecionar
quais os pods respondem àquele
serviço.
A nível de implementação, cada
serviço possui um IP virtual, e
pode ou não ter uma porta dos hosts
vinculada a ele.
my-web-app-service
SERVER:30900
10.100.0.100:80
my-web-app-2:80
my-web-app-1:80
my-web-app-3:80
Kubernetes - Arquitetura
SERVIDORES
SERVER 2SERVER 1
DOCKER
SERVER 2
DOCKER
SERVER 1
DOCKER
KUBELET
SERVER 2
DOCKER
POD 1
KUBELET
POD 2
SERVER 1
DOCKER
POD 1
KUBELET
POD 2
SERVER 3
API SERVER
SERVER 2
DOCKER
POD 1
KUBELET
POD 2
API SERVER
SERVER 1
DOCKER
POD 1
KUBELET
POD 2
SERVER 3
SCHEDULER
SERVER 2
DOCKER
POD 1
KUBELET
POD 2
API SERVER
SCHEDULER
SERVER 1
DOCKER
POD 1
KUBELET
POD 2
SERVER 3
Rede
SERVER 2 - 10.200.2.*
DOCKER
POD 3
10.200.2.1
KUBELET
POD 4
10.200.2.2
API SERVER
SCHEDULER
SERVER 1 - 10.200.1.*
DOCKER
POD 1
10.200.1.1
KUBELET
POD 2
10.200.1.2
SERVER 3
AWS ROUTE TABLE
SERVER 2 - 10.200.2.*
DOCKER
KUBELET
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
API SERVER
SCHEDULER
SERVER 1 - 10.200.1.*
DOCKER
KUBELET
POD 3
10.200.2.1
POD 4
10.200.2.2
POD 1
10.200.1.1
POD 2
10.200.1.2
SERVER 3
KUBE-PROXY
SERVER 2 - 10.200.2.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
API SERVER
SCHEDULER
SERVER 1 - 10.200.1.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
POD 3
10.200.2.1
POD 4
10.200.2.2
POD 1
10.200.1.1
POD 2
10.200.1.2
SERVER 3
KUBE-PROXY
SERVER 2 - 10.200.2.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
API SERVER
SCHEDULER
SERVER 1 - 10.200.1.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
POD 3
10.200.2.1
POD 4
10.200.2.2
POD 1
10.200.1.1
POD 2
10.200.1.2
SERVICE
my-web-app-service
10.100.0.100
POD 4
10.200.2.2
POD 1
10.200.1.1
SERVER 3
KUBE-DNS
SERVER 2 - 10.200.2.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
KUBE-DNS
API SERVER
SCHEDULER
SERVER 1 - 10.200.1.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
POD 3
10.200.2.1
POD 4
10.200.2.2
POD 1
10.200.1.1
POD 2
10.200.1.2
SERVICE
my-web-app-service
10.100.0.100
POD 4
10.200.2.2
POD 1
10.200.1.1
http://my-web-app-service/
CONTROLLER MANAGER
SERVER 2 - 10.200.2.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
KUBE-DNS
API SERVER
CONTROLLER MANAGER
SCHEDULER
SERVER 1 - 10.200.1.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
POD 3
10.200.2.1
POD 4
10.200.2.2
POD 1
10.200.1.1
POD 2
10.200.1.2
ETCD
SERVER 2 - 10.200.2.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
KUBE-DNS
API SERVER
CONTROLLER MANAGER
SCHEDULER
SERVER 1 - 10.200.1.*
IPTABLES
Node Port → SVC IP
SVC IP → POD IP
DOCKER
KUBE-PROXY
KUBELET
POD 3
10.200.2.1
POD 4
10.200.2.2
POD 1
10.200.1.1
POD 2
10.200.1.2
ETCD
Kubernetes - Resumo
MINION MINIONMINION
MASTER
ETCD
API SERVER
CONTROLLER MANAGER
SCHEDULER
DOCKER
KUBE-PROXY
KUBELET
Kubernetes em Produção na AWS
“Meu primeiro cluster”
Provisionamento/configuração do
cluster através comando kube-up
“Meu primeiro cluster”
Provisionamento/configuração do
cluster através comando kube-up
VPC
Subnets
Launch Configurations
Auto Scaling Groups
Route Table
Security Groups
Key Pairs
…
“Meu primeiro cluster”
Provisionamento/configuração do
cluster através comando kube-up
PRINCIPAIS PROBLEMAS:
“Meu primeiro cluster”
Provisionamento/configuração do
cluster através comando kube-up
PRINCIPAIS PROBLEMAS:
- Ponto único de falha (SPOF)
- Falta de controle sobre a
infraestrutura
MASTER CLUSTER
ETCD CLUSTER
Atual cluster
100% Infrastructure as a Code
Utilizando Terraform e Ansible para
provisionamento e configuração.
Adicionada redundância ao master e
etcd em diferentes zonas de
disponibilidade.
github.com/fernandoruaro/kubernetes
MINION MINIONMINION
MASTER
ETCD
ETCDETCD
MASTER MASTER
Issues/Use Cases
Issue: AWS Route Table
Problema: Nodos novos se
registravam no cluster mas o master
nenhum pod era atribuído a eles.
Razão: Limite padrão de 50
registros por Route Table
AWS ROUTE TABLE
10.200.1.* → SERVER 1
10.200.2.* → SERVER 2
Use Case: Limits e Request
Limites de RAM e CPU para um pod.
(limits)
Mínimo de recursos de RAM e CPU
necessários para rodar um pod em um
nodo. (requests)
Issue: KUBE-DNS
Problema: Esporadicamente havia
falhas na resolução de DNS.
Razão: Default do KUBE-DNS
- Somente 1 réplica
- Limite de 0.1 CPU
Use Case: Node Selector
Caso você tenha nodes
especializados para alguma
aplicação (GPU/SSD/NVMe/…)
Necessidade que determinado pod
seja instanciado numa zona
específica (Ex: EBS)
Entrega Contínua
Entrega Contínua
TRAVIS-CI
TEST/BUILD
PROJECT
ECR
ON PUSH DOCKER PUSH
WERCKER
UPDATE
VERSIONS
FILE
HTTP
POST
U
PD
A
TE
TRAVIS-CI
COMPUTE
TEMPLATES
ON PUSH
template.yaml.hbs
versions.json
DEPLOY.SH
kubectl apply --recursive --filename $repo_path
DEPLOYS TO CLUSTER
SSH
Obrigado!
Fernando Landell de Moura Ruaro
Software Engineer na Meltwater
landell.ruaro@gmail.com
github.com/fernandoruaro

Mais conteúdo relacionado

Mais procurados

Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
Ricardo Katz
 
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemasTDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
tdc-globalcode
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
tdc-globalcode
 
Docker de containers a orquestração
Docker de containers a orquestraçãoDocker de containers a orquestração
Docker de containers a orquestração
Italo José
 
Foreman como provisionador
Foreman como provisionadorForeman como provisionador
Foreman como provisionador
Andre "Ramoni" Guimaraes
 
Fisl 10
Fisl 10Fisl 10
Fisl 10
Fabio Akita
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHP
Renato Shirakashi
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
tdc-globalcode
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvem
Ignacio Nin
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunk
Jeison Barros
 
Rancher e ansible
Rancher e ansibleRancher e ansible
Rancher e ansible
Claudemir de Almeida Rosa
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Johnes Castro
 
Apresentação - Citrix Xen Server
Apresentação - Citrix Xen ServerApresentação - Citrix Xen Server
Apresentação - Citrix Xen Server
Mário Monteiro
 
Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio
Fernando Boaglio
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
Fabio Junior Novais Silva
 
Zimbra Anahuac2
Zimbra Anahuac2Zimbra Anahuac2
Zimbra Anahuac2
anahuac2
 
Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Camila Fernandes
 

Mais procurados (17)

Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
 
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemasTDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
Docker de containers a orquestração
Docker de containers a orquestraçãoDocker de containers a orquestração
Docker de containers a orquestração
 
Foreman como provisionador
Foreman como provisionadorForeman como provisionador
Foreman como provisionador
 
Fisl 10
Fisl 10Fisl 10
Fisl 10
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHP
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvem
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunk
 
Rancher e ansible
Rancher e ansibleRancher e ansible
Rancher e ansible
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Apresentação - Citrix Xen Server
Apresentação - Citrix Xen ServerApresentação - Citrix Xen Server
Apresentação - Citrix Xen Server
 
Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Zimbra Anahuac2
Zimbra Anahuac2Zimbra Anahuac2
Zimbra Anahuac2
 
Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4
 

Semelhante a Docker em Produção com Kubernetes

ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
Renato Groff
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
Renato Groff
 
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
Renato Groff
 
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetesk6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
Kelvin Silva
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes Deepdive
Ricardo Katz
 
Workshop kubernetes+kops
Workshop kubernetes+kopsWorkshop kubernetes+kops
Workshop kubernetes+kops
Talita Bernardes Pereira
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
Jose Augusto Carvalho
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Rodrigo Cândido da Silva
 
Webinar: Criando e conectando seu Datacenter Virtual
Webinar: Criando e conectando seu Datacenter VirtualWebinar: Criando e conectando seu Datacenter Virtual
Webinar: Criando e conectando seu Datacenter Virtual
Amazon Web Services LATAM
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Renato Groff
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Renato Groff
 
AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem
AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem
AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem
Amazon Web Services LATAM
 
Introdução ao Windows Azure
Introdução ao Windows AzureIntrodução ao Windows Azure
Introdução ao Windows Azure
Fernando Correia
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-ti
Francisco Gonçalves
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetes
Giovanni Bassi
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
David Ruiz
 
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Ricardo Ferreira Costa
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernas
Amazon Web Services LATAM
 
DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017
Jonathan Baraldi
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com docker
Giovanni Bassi
 

Semelhante a Docker em Produção com Kubernetes (20)

ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
 
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
 
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetesk6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes Deepdive
 
Workshop kubernetes+kops
Workshop kubernetes+kopsWorkshop kubernetes+kops
Workshop kubernetes+kops
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
 
Webinar: Criando e conectando seu Datacenter Virtual
Webinar: Criando e conectando seu Datacenter VirtualWebinar: Criando e conectando seu Datacenter Virtual
Webinar: Criando e conectando seu Datacenter Virtual
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem
AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem
AWS Virtual Private Cloud (VPC): Isolando seus Recursos na Nuvem
 
Introdução ao Windows Azure
Introdução ao Windows AzureIntrodução ao Windows Azure
Introdução ao Windows Azure
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-ti
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetes
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernas
 
DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com docker
 

Último

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 

Último (7)

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 

Docker em Produção com Kubernetes

  • 1. Docker em Produção com Kubernetes Fernando Landell de Moura Ruaro Software Engineer na Meltwater
  • 2. O que será apresentado? Introdução ao Kubernetes - Recursos Básicos - Arquitetura Confiabilidade do cluster Production Issues/Use Cases Entrega contínua
  • 3. Kubernetes “open-source system for automating deployment, scaling and management of containerized applications” MINION MINIONMINION MASTER ETCD
  • 4. Kubernetes - Tipos de Recursos
  • 5. Kubernetes - Tipos de Recursos ConfigMap Container CronJob DaemonSet Deployment Endpoints Ingress Job PersistentVolumeClaim Pod ReplicaSet ReplicationController Secret Service StatefulSet StorageClass Volume
  • 6. Kubernetes - Tipos de Recursos ConfigMap Container CronJob DaemonSet Deployment Endpoints Ingress Job PersistentVolumeClaim Pod ReplicaSet ReplicationController Secret Service StatefulSet StorageClass Volume
  • 7. É um grupo de um ou mais containers Esse containers são criados sempre em conjunto Compartilham o mesmo IP e range de portas Podem compartilhar volumes Pod
  • 8. Deployment Definição do número de réplicas de um pod Você só precisa definir o estado que você deseja Rolling updates
  • 9. Service É uma forma de tornar os pods acessíveis, tanto dentro do cluster quanto externamente. Utiliza o selector para selecionar quais os pods respondem aquele serviço.
  • 10. Service É uma forma de tornar os pods acessíveis, tanto dentro do cluster quanto externamente. Utiliza o selector para selecionar quais os pods respondem àquele serviço. A nível de implementação, cada serviço possui um IP virtual, e pode ou não ter uma porta dos hosts vinculada a ele. my-web-app-service SERVER:30900 10.100.0.100:80 my-web-app-2:80 my-web-app-1:80 my-web-app-3:80
  • 14. KUBELET SERVER 2 DOCKER POD 1 KUBELET POD 2 SERVER 1 DOCKER POD 1 KUBELET POD 2
  • 15. SERVER 3 API SERVER SERVER 2 DOCKER POD 1 KUBELET POD 2 API SERVER SERVER 1 DOCKER POD 1 KUBELET POD 2
  • 16. SERVER 3 SCHEDULER SERVER 2 DOCKER POD 1 KUBELET POD 2 API SERVER SCHEDULER SERVER 1 DOCKER POD 1 KUBELET POD 2
  • 17. SERVER 3 Rede SERVER 2 - 10.200.2.* DOCKER POD 3 10.200.2.1 KUBELET POD 4 10.200.2.2 API SERVER SCHEDULER SERVER 1 - 10.200.1.* DOCKER POD 1 10.200.1.1 KUBELET POD 2 10.200.1.2
  • 18. SERVER 3 AWS ROUTE TABLE SERVER 2 - 10.200.2.* DOCKER KUBELET AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2 API SERVER SCHEDULER SERVER 1 - 10.200.1.* DOCKER KUBELET POD 3 10.200.2.1 POD 4 10.200.2.2 POD 1 10.200.1.1 POD 2 10.200.1.2
  • 19. SERVER 3 KUBE-PROXY SERVER 2 - 10.200.2.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2 API SERVER SCHEDULER SERVER 1 - 10.200.1.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET POD 3 10.200.2.1 POD 4 10.200.2.2 POD 1 10.200.1.1 POD 2 10.200.1.2
  • 20. SERVER 3 KUBE-PROXY SERVER 2 - 10.200.2.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2 API SERVER SCHEDULER SERVER 1 - 10.200.1.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET POD 3 10.200.2.1 POD 4 10.200.2.2 POD 1 10.200.1.1 POD 2 10.200.1.2 SERVICE my-web-app-service 10.100.0.100 POD 4 10.200.2.2 POD 1 10.200.1.1
  • 21. SERVER 3 KUBE-DNS SERVER 2 - 10.200.2.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2 KUBE-DNS API SERVER SCHEDULER SERVER 1 - 10.200.1.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET POD 3 10.200.2.1 POD 4 10.200.2.2 POD 1 10.200.1.1 POD 2 10.200.1.2 SERVICE my-web-app-service 10.100.0.100 POD 4 10.200.2.2 POD 1 10.200.1.1 http://my-web-app-service/
  • 22. CONTROLLER MANAGER SERVER 2 - 10.200.2.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2 KUBE-DNS API SERVER CONTROLLER MANAGER SCHEDULER SERVER 1 - 10.200.1.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET POD 3 10.200.2.1 POD 4 10.200.2.2 POD 1 10.200.1.1 POD 2 10.200.1.2
  • 23. ETCD SERVER 2 - 10.200.2.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2 KUBE-DNS API SERVER CONTROLLER MANAGER SCHEDULER SERVER 1 - 10.200.1.* IPTABLES Node Port → SVC IP SVC IP → POD IP DOCKER KUBE-PROXY KUBELET POD 3 10.200.2.1 POD 4 10.200.2.2 POD 1 10.200.1.1 POD 2 10.200.1.2 ETCD
  • 24. Kubernetes - Resumo MINION MINIONMINION MASTER ETCD API SERVER CONTROLLER MANAGER SCHEDULER DOCKER KUBE-PROXY KUBELET
  • 26. “Meu primeiro cluster” Provisionamento/configuração do cluster através comando kube-up
  • 27. “Meu primeiro cluster” Provisionamento/configuração do cluster através comando kube-up VPC Subnets Launch Configurations Auto Scaling Groups Route Table Security Groups Key Pairs …
  • 28. “Meu primeiro cluster” Provisionamento/configuração do cluster através comando kube-up PRINCIPAIS PROBLEMAS:
  • 29. “Meu primeiro cluster” Provisionamento/configuração do cluster através comando kube-up PRINCIPAIS PROBLEMAS: - Ponto único de falha (SPOF) - Falta de controle sobre a infraestrutura
  • 30. MASTER CLUSTER ETCD CLUSTER Atual cluster 100% Infrastructure as a Code Utilizando Terraform e Ansible para provisionamento e configuração. Adicionada redundância ao master e etcd em diferentes zonas de disponibilidade. github.com/fernandoruaro/kubernetes MINION MINIONMINION MASTER ETCD ETCDETCD MASTER MASTER
  • 32. Issue: AWS Route Table Problema: Nodos novos se registravam no cluster mas o master nenhum pod era atribuído a eles. Razão: Limite padrão de 50 registros por Route Table AWS ROUTE TABLE 10.200.1.* → SERVER 1 10.200.2.* → SERVER 2
  • 33. Use Case: Limits e Request Limites de RAM e CPU para um pod. (limits) Mínimo de recursos de RAM e CPU necessários para rodar um pod em um nodo. (requests)
  • 34. Issue: KUBE-DNS Problema: Esporadicamente havia falhas na resolução de DNS. Razão: Default do KUBE-DNS - Somente 1 réplica - Limite de 0.1 CPU
  • 35. Use Case: Node Selector Caso você tenha nodes especializados para alguma aplicação (GPU/SSD/NVMe/…) Necessidade que determinado pod seja instanciado numa zona específica (Ex: EBS)
  • 37. Entrega Contínua TRAVIS-CI TEST/BUILD PROJECT ECR ON PUSH DOCKER PUSH WERCKER UPDATE VERSIONS FILE HTTP POST U PD A TE TRAVIS-CI COMPUTE TEMPLATES ON PUSH template.yaml.hbs versions.json DEPLOY.SH kubectl apply --recursive --filename $repo_path DEPLOYS TO CLUSTER SSH
  • 38. Obrigado! Fernando Landell de Moura Ruaro Software Engineer na Meltwater landell.ruaro@gmail.com github.com/fernandoruaro