SlideShare uma empresa Scribd logo
1 de 43
www.brcloudservices.com www.rancher.com
jonathan@brcloudservices.com
slideshare.net/jonathanbaraldi
Containers Docker
Rancher
Kubernetes
Kubernetes - Arquitetura
Kubernetes - O que é possível
Kubernetes - Soluções
Demos
Agenda
Containers Docker
Docker é um projeto de código aberto que automatiza a
implantação de aplicativos dentro de contêineres e é
mantido pela empresa Docker, Inc.
Containers Docker
O Docker fornece uma camada adicional de abstração e
automação da virtualização em nível operacional, utilizando
recursos de isolamento do kernel do Linux, como cgroups e
namespaces, e um sistema de arquivos union mounting
como padrão o OverlayFS dando possibilidade ao uso de
outros sistema de arquivos.
Containers Docker
Containers Docker
A idéia do Docker é que cada contêiner rode apenas uma
aplicação ou serviço e que seus dados importantes fiquem
persistidos fora do container, facultando assim a
possibilidade do contêiner ser descartável (destruir o
container e recriar sem comprometer a integridade da
instalação da aplicação ou serviço).
Containers Docker
Containers Docker
Containers Docker
Os contêineres e as máquinas virtuais possuem recursos
de isolamento e alocação similares, mas funcionam de
forma diferente, pois os contêineres virtualizam o sistema
operacional e as máquinas virtuais virtualizam um
hardware.
Containers Docker
Containers Docker
POR QUÊ USAR?
- Implementação rápida de aplicativos - os contêineres
incluem os requisitos mínimos de execução do aplicativo,
reduzindo seu tamanho e permitindo que sejam implantados
rapidamente.
- Portabilidade entre máquinas - um aplicativo e todas
as suas dependências podem ser empacotadas em um único
contêiner independente da versão host do kernel Linux,
distribuição ou modelo de implantação.
Containers Docker
POR QUÊ USAR?
- Controle de versão e reutilização de componentes -
Você pode controlar versões sucessivas de um container,
inspecionar diferenças ou reverter para versões anteriores.
- Imagens otimizadas - As imagens do Docker são
tipicamente muito pequenas, o que facilita a entrega rápida
e reduz o tempo de implantação de novos contêineres de
aplicativos.
Containers Docker
POR QUÊ USAR?
- Compartilhamento - você pode usar um repositório
remoto ou local para compartilhar suas imagens.
- Manutenção simplificada - Docker reduz o esforço e o
risco de problemas com dependências de aplicativos.
Containers Docker
Rancher
O Rancher é um software de código aberto, que contém
um conjunto de softwares necessários para o
gerenciamento e orquestração de containers via web.
Rancher
O Rancher aceita tanto hosts Linux de nuvem pública,
nuvem privada, servidores físicos ou máquinas virtuais, o
Rancher não faz distinção em seu uso, implementando
uma camada de serviços de infra-estrutura projetados
especificamente para facilitar o gerenciamento de
aplicações em contêineres.
Os serviços de infraestrutura do Rancher incluem rede,
armazenamento, balanceador de carga, DNS.
Rancher
Rancher
Kubernetes
Kubernetes
Kuberentes é uma plataforma de open source de
gerenciamento de containers de nível enterprise, baseado
em 15 anos de experiência do Google e pronto para o
mundo multi-cloud: nuvem pública, nuvem privada ou
híbrida. Possui desenho modular e pode ser rodado em
quase qualquer lugar.
Kubernetes - Arquitetura
O Kuberentes provê uma arquitetura flexível, e com
mecanismo desacoplado de service discovery. Como a
maioria de plataformas computacionais distribuídas, um
cluster consiste:
- Pelo menos um master e múltiplos nodes de
computação.
O master é responsável pela API, agendamento dos
deployments e gerenciamento total do cluster.
Kubernetes - Arquitetura
Kubernetes - Arquitetura
Kubernetes - Arquitetura
Cada nó do cluster roda:
- Container runtime, Docker ou Rocket, com os agentes
para se comunicar com o master. (Kubelet, Kube-proxy)
- Componentes adicionais para logs, monitoramento,
service discovery e add-ons opcionais.
Os nós, são os trabalhadores do Cluster. Eles expõem os
serviços de computação, rede e armazenamento para as
aplicações.
Kubernetes - Arquitetura
Kubernetes - Componentes
Componentes do Kuberentes para usarmos em nossas
aplicações containeirizadas:
Pods: Containers que trabalham em conjunto.
Services: Pods que trabalham em conjunto
Deployments: Provê um única declaração para Pods e
ReplicaSets.
Labels: Usado para organizar serviços
Kubernetes - Componentes
Daemonsets: Rodar sempre um ou mais pods por nó.
Secrets: Salvar dados sensitivos como senhas de bancos
de dados.
ConfigMaps: Arquivo de configurações que suas
aplicações irão usar.
Cron Jobs: Executar tarefas temporais, uma vez ou
repetidas vezes.
Kubernetes – O que podemos fazer
- Deployment de containers e controle de Rollout.
Descreva seus containers e quantos você quer com o
"Deployment". Kuberentes irá manter esses containers
rodando e irá gerenciar mudanças no deployment (como
atualizar imagens ou mudar variáveis de ambiente) com
um "rollout". Você pode pausar, resumir, e fazer rollback
das alterações como você preferir.
Kubernetes – O que podemos fazer
- Empacotamento de recursos
Você pode declarar um mínimo e máximo de recursos
computacionais (CPU & Memória) para seus containers.
Kuberentes irá alocar seus containers onde eles puderem
caber. Isto incrementa sua eficiência computacional e
ultimamente ajuda a baixar seus custos.
Kubernetes – O que podemos fazer
- Service Discovery e Autoscaling.
Kubernetes pode automaticamente expor seus
containers para a internet e outros containers no cluster.
Ele automaticamente balanceia o tráfego através dos
containers. Kubernetes suporta service discovery através
de variáveis de ambiente e DNS. Você pode também
configurar autoscaling baseado em CPU, Memória e rede
para os containers aumentarem seus recursos de
utilização.
Kubernetes – O que podemos fazer
- Cluster Heterogêneo
Kubernetes roda em qualquer lugar. Você pode
construir seu cluster para um conjunto de VM's rodando na
nuvem, on-premisses, ou bare metal dentro do seu data
center.
Kubernetes – O que podemos fazer
- Armazenamento persistente
Kuberentes inclui suporte para armazenamento
persistente conectado as aplicações stateless. Existe
suporte para AWS EBS, GCP, e muitos, muitos, muitos
outros.
Kubernetes – O que podemos fazer
- HA
Kuberentes é escalável para o planeta Terra. Isto
requer atenção especial para funcionalidades de HA como
multi-master ou cluster federation. Cluster Federation
permite conectar clusters em conjunto, para permitir que
se um cluster caia, os containers podem automaticamente
serem movidos para o outro cluster.
Kubernetes – O que podemos fazer
Estes itens fazem o Kubernetes perfeito para rodar
diferentes arquiteturas de aplicações, desde as
monolíticas aplicações web, até aplicações de
microserviços altamente distribuídos, e até mesmo
aplicações batch.
Kubernetes – Soluções
Alguns dos problemas que você irá enfrentar quando
rodar aplicações containerizadas em um ambiente de
clusterizado, e como o Kubernetes resolve elas.
Kubernetes – Soluções
Scheduling
Você construiu sua grande aplicação baseada em
containers? Seeeensacional!! Agora você precisa se
certificar que ela irá rodar onde e quando ela deve. É
importante para sua aplicação rodar nas máquinas
corretas dentro do seu cluster.
Kubernetes – Soluções
Load balancing
Sua aplicação está up e rodando. Perfeito! agora você
precisa se certificar que o tráfego do cliente é distribuído
até mesmo através dos nós do seu cluster. É importante
que sua aplicação esteja fazendo um bom uso dos recursos
em cada host para aguentar a carga dos clientes. Você não
quer que alguns containers trabalhem em carga máxima
enquanto outros estão sem trabalhar.
Kubernetes – Soluções
Application scaling
Você tem seus containers rodando e o load balancer
está distribuindo a carga muito bem entre eles. Muito,
muito bom!! Agora você precisa trazer mais containers
online para aguentar o tráfego crescente, e mesmo picos
de demanda, e depois terminar os containers quando não
são mais necessários. É importante poder suportar picos
nas requisições do seu serviço.
Kubernetes – Soluções
Cluster management and monitoring
Agora que você tem sua aplicação rodando
eficientemente em um cluster gigantesco, você tem que
gerenciar ela. Você precisa definir, lançar, escalar,
balancear o tráfego, e monitorar a saúde dos containers
que estão rodando. Não é uma tarefa fácil.
Demos
Demos
Autoscaling
Liveness e readiness
Rolling update
Cron Jobs
www.brcloudservices.com www.rancher.com
jonathan@brcloudservices.com
slideshare.net/jonathanbaraldi

Mais conteúdo relacionado

Mais procurados

Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2Azuki
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
Docker + Kubernetes (devOps)
Docker + Kubernetes (devOps)Docker + Kubernetes (devOps)
Docker + Kubernetes (devOps)Andre Straube
 
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosClaudio Eckert
 
Docker | Meetspark - #2
Docker | Meetspark - #2Docker | Meetspark - #2
Docker | Meetspark - #2Lucas Martins
 
Lxde
LxdeLxde
Lxdeweb04
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Drupal Camp CI&T - Kubernetes and Google Container Engine
Drupal Camp CI&T - Kubernetes and Google Container EngineDrupal Camp CI&T - Kubernetes and Google Container Engine
Drupal Camp CI&T - Kubernetes and Google Container EngineFrancis Fernandes da Luz
 
Virtualização Teste
Virtualização TesteVirtualização Teste
Virtualização Testegabrielca200
 
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIDocker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIRicardo Ferreira Costa
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerHylson Netto
 
Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarVinícius Feitosa
 

Mais procurados (20)

Docker meetup
Docker meetupDocker meetup
Docker meetup
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 
containers-workshop
containers-workshopcontainers-workshop
containers-workshop
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2
 
Flisol 2015
Flisol 2015 Flisol 2015
Flisol 2015
 
Docker
DockerDocker
Docker
 
Nginx, Apache e Varnish
Nginx, Apache e VarnishNginx, Apache e Varnish
Nginx, Apache e Varnish
 
Ambiente de desenvolvimento com docker e ruby on rails
Ambiente de desenvolvimento com  docker e ruby on railsAmbiente de desenvolvimento com  docker e ruby on rails
Ambiente de desenvolvimento com docker e ruby on rails
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Docker + Kubernetes (devOps)
Docker + Kubernetes (devOps)Docker + Kubernetes (devOps)
Docker + Kubernetes (devOps)
 
Escalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizadosEscalonamento de processos em sistemas virtualizados
Escalonamento de processos em sistemas virtualizados
 
Docker | Meetspark - #2
Docker | Meetspark - #2Docker | Meetspark - #2
Docker | Meetspark - #2
 
Docker compose
Docker composeDocker compose
Docker compose
 
Lxde
LxdeLxde
Lxde
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Drupal Camp CI&T - Kubernetes and Google Container Engine
Drupal Camp CI&T - Kubernetes and Google Container EngineDrupal Camp CI&T - Kubernetes and Google Container Engine
Drupal Camp CI&T - Kubernetes and Google Container Engine
 
Virtualização Teste
Virtualização TesteVirtualização Teste
Virtualização Teste
 
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIDocker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistar
 

Semelhante a DevOpsDays Brasilia 2017

Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineDaniel Costa Gimenes
 
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-2018Renato Groff
 
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-2018Renato Groff
 
Docker basicão e sem mistérios
Docker basicão e sem mistériosDocker basicão e sem mistérios
Docker basicão e sem mistériosIsaac Maciel
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Marcel Cattaneo
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...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/2018Renato Groff
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Renato Groff
 
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Renato Groff
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 

Semelhante a DevOpsDays Brasilia 2017 (20)

Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container Engine
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
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
 
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 basicão e sem mistérios
Docker basicão e sem mistériosDocker basicão e sem mistérios
Docker basicão e sem mistérios
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
 
Docker
DockerDocker
Docker
 
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
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
 
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Docker
DockerDocker
Docker
 

Mais de Jonathan Baraldi

DevOpsDays - Apresentação
DevOpsDays - ApresentaçãoDevOpsDays - Apresentação
DevOpsDays - ApresentaçãoJonathan Baraldi
 
Tesla ADS - Além da fraude com inteligência artificial
Tesla ADS - Além da fraude com inteligência artificialTesla ADS - Além da fraude com inteligência artificial
Tesla ADS - Além da fraude com inteligência artificialJonathan Baraldi
 
Treinamento Tropa de Elite Aws - Business - D2
Treinamento Tropa de Elite Aws - Business - D2Treinamento Tropa de Elite Aws - Business - D2
Treinamento Tropa de Elite Aws - Business - D2Jonathan Baraldi
 
Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1Jonathan Baraldi
 

Mais de Jonathan Baraldi (8)

Blockchain Day RJ
Blockchain Day RJBlockchain Day RJ
Blockchain Day RJ
 
Treinamento Rancher
Treinamento RancherTreinamento Rancher
Treinamento Rancher
 
DevOpsDays - Apresentação
DevOpsDays - ApresentaçãoDevOpsDays - Apresentação
DevOpsDays - Apresentação
 
Fraude eletronica
Fraude eletronicaFraude eletronica
Fraude eletronica
 
Tesla ADS - Além da fraude com inteligência artificial
Tesla ADS - Além da fraude com inteligência artificialTesla ADS - Além da fraude com inteligência artificial
Tesla ADS - Além da fraude com inteligência artificial
 
Solid presentation
Solid presentationSolid presentation
Solid presentation
 
Treinamento Tropa de Elite Aws - Business - D2
Treinamento Tropa de Elite Aws - Business - D2Treinamento Tropa de Elite Aws - Business - D2
Treinamento Tropa de Elite Aws - Business - D2
 
Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1
 

DevOpsDays Brasilia 2017

  • 1.
  • 3. Containers Docker Rancher Kubernetes Kubernetes - Arquitetura Kubernetes - O que é possível Kubernetes - Soluções Demos Agenda
  • 5. Docker é um projeto de código aberto que automatiza a implantação de aplicativos dentro de contêineres e é mantido pela empresa Docker, Inc. Containers Docker
  • 6. O Docker fornece uma camada adicional de abstração e automação da virtualização em nível operacional, utilizando recursos de isolamento do kernel do Linux, como cgroups e namespaces, e um sistema de arquivos union mounting como padrão o OverlayFS dando possibilidade ao uso de outros sistema de arquivos. Containers Docker
  • 8. A idéia do Docker é que cada contêiner rode apenas uma aplicação ou serviço e que seus dados importantes fiquem persistidos fora do container, facultando assim a possibilidade do contêiner ser descartável (destruir o container e recriar sem comprometer a integridade da instalação da aplicação ou serviço). Containers Docker
  • 11. Os contêineres e as máquinas virtuais possuem recursos de isolamento e alocação similares, mas funcionam de forma diferente, pois os contêineres virtualizam o sistema operacional e as máquinas virtuais virtualizam um hardware. Containers Docker
  • 13. POR QUÊ USAR? - Implementação rápida de aplicativos - os contêineres incluem os requisitos mínimos de execução do aplicativo, reduzindo seu tamanho e permitindo que sejam implantados rapidamente. - Portabilidade entre máquinas - um aplicativo e todas as suas dependências podem ser empacotadas em um único contêiner independente da versão host do kernel Linux, distribuição ou modelo de implantação. Containers Docker
  • 14. POR QUÊ USAR? - Controle de versão e reutilização de componentes - Você pode controlar versões sucessivas de um container, inspecionar diferenças ou reverter para versões anteriores. - Imagens otimizadas - As imagens do Docker são tipicamente muito pequenas, o que facilita a entrega rápida e reduz o tempo de implantação de novos contêineres de aplicativos. Containers Docker
  • 15. POR QUÊ USAR? - Compartilhamento - você pode usar um repositório remoto ou local para compartilhar suas imagens. - Manutenção simplificada - Docker reduz o esforço e o risco de problemas com dependências de aplicativos. Containers Docker
  • 17. O Rancher é um software de código aberto, que contém um conjunto de softwares necessários para o gerenciamento e orquestração de containers via web. Rancher
  • 18. O Rancher aceita tanto hosts Linux de nuvem pública, nuvem privada, servidores físicos ou máquinas virtuais, o Rancher não faz distinção em seu uso, implementando uma camada de serviços de infra-estrutura projetados especificamente para facilitar o gerenciamento de aplicações em contêineres. Os serviços de infraestrutura do Rancher incluem rede, armazenamento, balanceador de carga, DNS. Rancher
  • 21. Kubernetes Kuberentes é uma plataforma de open source de gerenciamento de containers de nível enterprise, baseado em 15 anos de experiência do Google e pronto para o mundo multi-cloud: nuvem pública, nuvem privada ou híbrida. Possui desenho modular e pode ser rodado em quase qualquer lugar.
  • 22. Kubernetes - Arquitetura O Kuberentes provê uma arquitetura flexível, e com mecanismo desacoplado de service discovery. Como a maioria de plataformas computacionais distribuídas, um cluster consiste: - Pelo menos um master e múltiplos nodes de computação. O master é responsável pela API, agendamento dos deployments e gerenciamento total do cluster.
  • 25. Kubernetes - Arquitetura Cada nó do cluster roda: - Container runtime, Docker ou Rocket, com os agentes para se comunicar com o master. (Kubelet, Kube-proxy) - Componentes adicionais para logs, monitoramento, service discovery e add-ons opcionais. Os nós, são os trabalhadores do Cluster. Eles expõem os serviços de computação, rede e armazenamento para as aplicações.
  • 27. Kubernetes - Componentes Componentes do Kuberentes para usarmos em nossas aplicações containeirizadas: Pods: Containers que trabalham em conjunto. Services: Pods que trabalham em conjunto Deployments: Provê um única declaração para Pods e ReplicaSets. Labels: Usado para organizar serviços
  • 28. Kubernetes - Componentes Daemonsets: Rodar sempre um ou mais pods por nó. Secrets: Salvar dados sensitivos como senhas de bancos de dados. ConfigMaps: Arquivo de configurações que suas aplicações irão usar. Cron Jobs: Executar tarefas temporais, uma vez ou repetidas vezes.
  • 29. Kubernetes – O que podemos fazer - Deployment de containers e controle de Rollout. Descreva seus containers e quantos você quer com o "Deployment". Kuberentes irá manter esses containers rodando e irá gerenciar mudanças no deployment (como atualizar imagens ou mudar variáveis de ambiente) com um "rollout". Você pode pausar, resumir, e fazer rollback das alterações como você preferir.
  • 30. Kubernetes – O que podemos fazer - Empacotamento de recursos Você pode declarar um mínimo e máximo de recursos computacionais (CPU & Memória) para seus containers. Kuberentes irá alocar seus containers onde eles puderem caber. Isto incrementa sua eficiência computacional e ultimamente ajuda a baixar seus custos.
  • 31. Kubernetes – O que podemos fazer - Service Discovery e Autoscaling. Kubernetes pode automaticamente expor seus containers para a internet e outros containers no cluster. Ele automaticamente balanceia o tráfego através dos containers. Kubernetes suporta service discovery através de variáveis de ambiente e DNS. Você pode também configurar autoscaling baseado em CPU, Memória e rede para os containers aumentarem seus recursos de utilização.
  • 32. Kubernetes – O que podemos fazer - Cluster Heterogêneo Kubernetes roda em qualquer lugar. Você pode construir seu cluster para um conjunto de VM's rodando na nuvem, on-premisses, ou bare metal dentro do seu data center.
  • 33. Kubernetes – O que podemos fazer - Armazenamento persistente Kuberentes inclui suporte para armazenamento persistente conectado as aplicações stateless. Existe suporte para AWS EBS, GCP, e muitos, muitos, muitos outros.
  • 34. Kubernetes – O que podemos fazer - HA Kuberentes é escalável para o planeta Terra. Isto requer atenção especial para funcionalidades de HA como multi-master ou cluster federation. Cluster Federation permite conectar clusters em conjunto, para permitir que se um cluster caia, os containers podem automaticamente serem movidos para o outro cluster.
  • 35. Kubernetes – O que podemos fazer Estes itens fazem o Kubernetes perfeito para rodar diferentes arquiteturas de aplicações, desde as monolíticas aplicações web, até aplicações de microserviços altamente distribuídos, e até mesmo aplicações batch.
  • 36. Kubernetes – Soluções Alguns dos problemas que você irá enfrentar quando rodar aplicações containerizadas em um ambiente de clusterizado, e como o Kubernetes resolve elas.
  • 37. Kubernetes – Soluções Scheduling Você construiu sua grande aplicação baseada em containers? Seeeensacional!! Agora você precisa se certificar que ela irá rodar onde e quando ela deve. É importante para sua aplicação rodar nas máquinas corretas dentro do seu cluster.
  • 38. Kubernetes – Soluções Load balancing Sua aplicação está up e rodando. Perfeito! agora você precisa se certificar que o tráfego do cliente é distribuído até mesmo através dos nós do seu cluster. É importante que sua aplicação esteja fazendo um bom uso dos recursos em cada host para aguentar a carga dos clientes. Você não quer que alguns containers trabalhem em carga máxima enquanto outros estão sem trabalhar.
  • 39. Kubernetes – Soluções Application scaling Você tem seus containers rodando e o load balancer está distribuindo a carga muito bem entre eles. Muito, muito bom!! Agora você precisa trazer mais containers online para aguentar o tráfego crescente, e mesmo picos de demanda, e depois terminar os containers quando não são mais necessários. É importante poder suportar picos nas requisições do seu serviço.
  • 40. Kubernetes – Soluções Cluster management and monitoring Agora que você tem sua aplicação rodando eficientemente em um cluster gigantesco, você tem que gerenciar ela. Você precisa definir, lançar, escalar, balancear o tráfego, e monitorar a saúde dos containers que estão rodando. Não é uma tarefa fácil.
  • 41. Demos

Notas do Editor

  1. - Autoscaling https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ >>> Fazer deployment $ kubectl run php-apache --image=gcr.io/google_containers/hpa-example --requests=cpu=200m --expose --port=80 >>> Configurar autoscaling $ kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=20 >>> Mostrar status do autoscaling $ kubectl get hpa >>> Gerar carga - container $ kubectl run -i --tty load-generator --image=busybox /bin/sh >>> Gerar carga - script $ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done - Liveness e readiness https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { duration := time.Now().Sub(started) if duration.Seconds() > 10 { w.WriteHeader(500) w.Write([]byte(fmt.Sprintf("error: %v", duration.Seconds()))) } else { w.WriteHeader(200) w.Write([]byte("ok")) } }) $ kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/http-liveness.yaml Depois de 10 segundos, verificamos que o container reiniciou. $ kubectl describe pod liveness-http $ kubectl get pod liveness-http - Rolling update https://kubernetes.io/docs/tasks/run-application/rolling-update-replication-controller/#updating-the-container-image $ kubectl apply -f rolling-update.yml Agora iremos fazer o upgrade da imagem de 1.7.9 para 1.9.1 $ kubectl rolling-update my-nginx --image=nginx:1.9.1 Vamos ver no dashboard e no console, o Kubernetes fazendo o upgrade das imagens, mantendo o serviço, e sempre 5 pods rodando. Está sendo feito 1 a 1. - Jobs https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs $ kubectl create -f cronjob.yaml $ kubectl get cronjob hello $ kubectl get jobs --watch $ kubectl delete cronjob hello