SlideShare uma empresa Scribd logo
1 de 22
/in/andre-straube
/astraube
André Straube
andre@keepi.media
andre@idooh.com.br
Docker + Kubernetes
Orquestrando containers e escalando
Rapidamente aplicações
Um pouco sobre containers Docker
“ É a abstração de infraestrutura que atua na virtualização em
nível de sistema operacional. Em termos simples, um contêiner é
capaz de isolar um processo do resto do sistema, de forma que ele
‘pense’ que está rodando em uma máquina completamente
separada, quando na verdade ele é só mais um processo sendo
executado pelo sistema operacional. ”
O que é?
• Isolamento (limitações)
• Ganho de performance
• Utilização mais racional de recursos
• Rapidez no deployment (imagens Dockerfile)
• Menor dependência do ambiente
• Menor dependência do ambiente
Motivação para o uso
• Como escalar containers?
• Como garantir o trabalho coordenado entre os
diferentes containers de uma aplicação?
• Como detectar containers com falhas e corrigir
isso automaticamente?
Dificuldades
“O Kubernetes (K8s ou kube) é um sistema de código
aberto para automatizar a implantação,
dimensionamento e gerenciamento de aplicativos em
contêiner. Ele agrupa contêineres que compõem um
aplicativo em unidades lógicas para facilitar o
gerenciamento e a descoberta ”
O que é?
Contêineres antes e depois do Kubernetes
Kubernetes: uma visão geral
• Também conhecido como K8s ou kube
• Desenvolvido originalmente pela Google
• Mantido pela Cloud Native Computing Foundation
• Escrito em Go
• Open source
Kubernetes: uma visão geral
• Cluster com máquina Master e Nodes
• Criação de objetos através de arquivos no formato YAML
• Diversas funcionalidades para gerenciamento
• kubectl (ferramenta de linha de comando)
• Minikube (ambiente de testes)
Kubernetes: gerenciamento de containers
• Orquestração
• Auto recuperação
• Reinício
• Replicação
• Escalonamento
Worker Node
Arquitetura
• Master
• Máquina que controla os Nodes (Nós)
• Responsável pelas atribuições de tarefas
aos Nodes
• Nodes
• Máquinas que realizam as tarefas
atribuídas pelo Master
Cluster
• Agente do nó primário (Primary node agent)
• Garante a inicialização e o correto funcionamento
dos containers
• É a “terceirização” do master
Kubelet
Arquitetura
Cluster
• Pods são instâncias de implantações , grupo de um ou mais containers implantados em um Node (Nó)
• Um Pod pode hospedar vários contêineres e volumes de armazenamento
• Uma implantação pode ter vários pods
• Podem ser interrompidos automaticamente com base no uso da CPU
• Os contêineres no mesmo pod têm acesso a volumes compartilhados
• Cada Pod tem seu IP exclusivo no cluster
• Os pods estão em funcionamento até
que alguém os destrua
• Todos os dados salvos no Pod
desaparecerão sem um armazenamento
persistente
Pod
Arquitetura
• Abstração de um Pod com recursos adicionais.
• É um modelo para a criação dos Pods.
• Conta com gerenciamento de estados.
• Lida com a atualização de seus respectivos Pods.
• Seu objetivo é manter os Pods em execução e
atualizá-los de uma maneira mais controlada.
• O Deployment pode aumentar as réplicas dos Pods.
Deployment
Arquitetura
• É um objeto, onde podemos armazenar informações confidenciais.
• Nos arquivos de secret, os valores são codificados em base64.
• Para usar um segredo, precisamos nos referir ao segredo em nosso Pod.
• Ou podemos colocá-lo dentro de um volume e montá-lo dinamicamente no contêiner.
• Segredos não são criptografados por padrão. Para criptografia, precisamos criar um EncryptionConfig.
Secret
Arquitetura
• Um serviço é responsável por tornar nossos Pods detectáveis ​​dentro da rede ou expô-los à Internet
• Um serviço identifica os pods por seu LabelSelector
Existem 3 tipos de serviços:
• ClusterIP: Expõe o serviço em um IP interno do cluster. A escolha desse valor torna o Serviço acessível apenas
de dentro do cluster.
• NodePort : Expõe o serviço no IP de cada nó em uma porta estática. Um ClusterIP é criado automaticamente
para o qual o NodePort encaminha as solicitações. É possivel entrar em contato com o NodePort de fora do
cluster, solicitando <NodeIP>:<NodePort>
• Load Balancer: Expõe o serviço externamente usando o balanceador de carga do provedor do cluster. É criado
um NodePorte e ClusterIP automaticamente, para os quais o balanceador de carga externo é roteado.
Service
Arquitetura
• Controla quantas cópias idênticas de um Pod serão executadas e em
quais locais do cluster
Replication Controller
Arquitetura
ReplicaSets
Arquitetura
• Um ReplicaSet garante que um número especificado de réplicas de
pod esteja em execução a qualquer momento.
Exemplo Prático
• API REST criada com o NodeJs
• Criação de um cluster através do Azure
Kubernetes Service (AKS)
github.com/astraube/kubernetes-nodejs
andre@keepi.media | andre@idooh.com.br

Mais conteúdo relacionado

Mais procurados

Virtualização e Kernel, vistos por dentro
Virtualização e Kernel, vistos por dentroVirtualização e Kernel, vistos por dentro
Virtualização e Kernel, vistos por dentro
ehabkost
 

Mais procurados (20)

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
 
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
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 
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
 
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...
 
Aplicações poderosas e elegantes aprenda a usar Kubernetes
Aplicações poderosas e elegantes aprenda a usar KubernetesAplicações poderosas e elegantes aprenda a usar Kubernetes
Aplicações poderosas e elegantes aprenda a usar Kubernetes
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
 
iBeer: Docker
iBeer: DockeriBeer: Docker
iBeer: Docker
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Aprenda como tirar proveito do kubernetes
Aprenda como tirar proveito do kubernetesAprenda como tirar proveito do kubernetes
Aprenda como tirar proveito do kubernetes
 
Docker
DockerDocker
Docker
 
Python na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftPython na nuvem: OpenStack Swift
Python na nuvem: OpenStack Swift
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 
containers-workshop
containers-workshopcontainers-workshop
containers-workshop
 
Workshop Docker
Workshop DockerWorkshop Docker
Workshop Docker
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloud
 
Iseltech13 – Node.Js Like a Star Wars episode
Iseltech13 –  Node.Js Like a Star Wars episodeIseltech13 –  Node.Js Like a Star Wars episode
Iseltech13 – Node.Js Like a Star Wars episode
 
Virtualização e Kernel, vistos por dentro
Virtualização e Kernel, vistos por dentroVirtualização e Kernel, vistos por dentro
Virtualização e Kernel, vistos por dentro
 
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
 

Semelhante a Docker + Kubernetes (devOps)

Semelhante a Docker + Kubernetes (devOps) (20)

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
 
DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
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...
 
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na PráticaKubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
 
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...
 
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...
 
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
 
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
 
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
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
 
Docker e outras ferramentas Devops
Docker e outras ferramentas DevopsDocker e outras ferramentas Devops
Docker e outras ferramentas Devops
 

Docker + Kubernetes (devOps)

  • 1. /in/andre-straube /astraube André Straube andre@keepi.media andre@idooh.com.br Docker + Kubernetes Orquestrando containers e escalando Rapidamente aplicações
  • 2. Um pouco sobre containers Docker
  • 3. “ É a abstração de infraestrutura que atua na virtualização em nível de sistema operacional. Em termos simples, um contêiner é capaz de isolar um processo do resto do sistema, de forma que ele ‘pense’ que está rodando em uma máquina completamente separada, quando na verdade ele é só mais um processo sendo executado pelo sistema operacional. ” O que é?
  • 4.
  • 5. • Isolamento (limitações) • Ganho de performance • Utilização mais racional de recursos • Rapidez no deployment (imagens Dockerfile) • Menor dependência do ambiente • Menor dependência do ambiente Motivação para o uso
  • 6. • Como escalar containers? • Como garantir o trabalho coordenado entre os diferentes containers de uma aplicação? • Como detectar containers com falhas e corrigir isso automaticamente? Dificuldades
  • 7.
  • 8. “O Kubernetes (K8s ou kube) é um sistema de código aberto para automatizar a implantação, dimensionamento e gerenciamento de aplicativos em contêiner. Ele agrupa contêineres que compõem um aplicativo em unidades lógicas para facilitar o gerenciamento e a descoberta ” O que é?
  • 9. Contêineres antes e depois do Kubernetes
  • 10. Kubernetes: uma visão geral • Também conhecido como K8s ou kube • Desenvolvido originalmente pela Google • Mantido pela Cloud Native Computing Foundation • Escrito em Go • Open source
  • 11. Kubernetes: uma visão geral • Cluster com máquina Master e Nodes • Criação de objetos através de arquivos no formato YAML • Diversas funcionalidades para gerenciamento • kubectl (ferramenta de linha de comando) • Minikube (ambiente de testes)
  • 12. Kubernetes: gerenciamento de containers • Orquestração • Auto recuperação • Reinício • Replicação • Escalonamento
  • 13. Worker Node Arquitetura • Master • Máquina que controla os Nodes (Nós) • Responsável pelas atribuições de tarefas aos Nodes • Nodes • Máquinas que realizam as tarefas atribuídas pelo Master Cluster
  • 14. • Agente do nó primário (Primary node agent) • Garante a inicialização e o correto funcionamento dos containers • É a “terceirização” do master Kubelet Arquitetura Cluster
  • 15. • Pods são instâncias de implantações , grupo de um ou mais containers implantados em um Node (Nó) • Um Pod pode hospedar vários contêineres e volumes de armazenamento • Uma implantação pode ter vários pods • Podem ser interrompidos automaticamente com base no uso da CPU • Os contêineres no mesmo pod têm acesso a volumes compartilhados • Cada Pod tem seu IP exclusivo no cluster • Os pods estão em funcionamento até que alguém os destrua • Todos os dados salvos no Pod desaparecerão sem um armazenamento persistente Pod Arquitetura
  • 16. • Abstração de um Pod com recursos adicionais. • É um modelo para a criação dos Pods. • Conta com gerenciamento de estados. • Lida com a atualização de seus respectivos Pods. • Seu objetivo é manter os Pods em execução e atualizá-los de uma maneira mais controlada. • O Deployment pode aumentar as réplicas dos Pods. Deployment Arquitetura
  • 17. • É um objeto, onde podemos armazenar informações confidenciais. • Nos arquivos de secret, os valores são codificados em base64. • Para usar um segredo, precisamos nos referir ao segredo em nosso Pod. • Ou podemos colocá-lo dentro de um volume e montá-lo dinamicamente no contêiner. • Segredos não são criptografados por padrão. Para criptografia, precisamos criar um EncryptionConfig. Secret Arquitetura
  • 18. • Um serviço é responsável por tornar nossos Pods detectáveis ​​dentro da rede ou expô-los à Internet • Um serviço identifica os pods por seu LabelSelector Existem 3 tipos de serviços: • ClusterIP: Expõe o serviço em um IP interno do cluster. A escolha desse valor torna o Serviço acessível apenas de dentro do cluster. • NodePort : Expõe o serviço no IP de cada nó em uma porta estática. Um ClusterIP é criado automaticamente para o qual o NodePort encaminha as solicitações. É possivel entrar em contato com o NodePort de fora do cluster, solicitando <NodeIP>:<NodePort> • Load Balancer: Expõe o serviço externamente usando o balanceador de carga do provedor do cluster. É criado um NodePorte e ClusterIP automaticamente, para os quais o balanceador de carga externo é roteado. Service Arquitetura
  • 19. • Controla quantas cópias idênticas de um Pod serão executadas e em quais locais do cluster Replication Controller Arquitetura
  • 20. ReplicaSets Arquitetura • Um ReplicaSet garante que um número especificado de réplicas de pod esteja em execução a qualquer momento.
  • 21. Exemplo Prático • API REST criada com o NodeJs • Criação de um cluster através do Azure Kubernetes Service (AKS) github.com/astraube/kubernetes-nodejs

Notas do Editor

  1. Ele não fornece uma VM, mas sim um ambiente virtual semelhante ao chroot, mas com um isolamento maior. Essa característica permite definir limitações de recursos por container, por exemplo, CPU, memória, I/O, entre outros. Na prática, o SO convidado e o hypervisor são eliminados e o host entra em contato direto com as bibliotecas. Com essa ligação, os itens ficam portáveis para qualquer outro host que também possua o sistema de virtualização instalado. A consequência é a redução do tempo de deploy de uma aplicação ou infraestrutura. Assim, é desnecessário ajustar o ambiente para que o serviço funcione corretamente. Ou seja, ele é sempre igual e é configurado uma vez. A partir disso, basta replicá-lo.
  2. Ele não fornece uma VM, mas sim um ambiente virtual semelhante ao chroot, mas com um isolamento maior. Essa característica permite definir limitações de recursos por container, por exemplo, CPU, memória, I/O, entre outros. Na prática, o SO convidado e o hypervisor são eliminados e o host entra em contato direto com as bibliotecas. Com essa ligação, os itens ficam portáveis para qualquer outro host que também possua o sistema de virtualização instalado. A consequência é a redução do tempo de deploy de uma aplicação ou infraestrutura. Assim, é desnecessário ajustar o ambiente para que o serviço funcione corretamente. Ou seja, ele é sempre igual e é configurado uma vez. A partir disso, basta replicá-lo.
  3. Kubectl: uma ferramenta CLI para Kubernetes Nó Mestre: A máquina principal que controla os nós Ponto de entrada principal para todas as tarefas administrativas Ele lida com a orquestração dos nós do trabalhador Nodes: É uma máquina em Kubernetes Esta máquina que executa as tarefas solicitadas. Cada nó é controlado pelo nó master Executa contêineres dentro de PODs É aqui que o mecanismo do Docker é executado e cuida do download de imagens e do início de contêineres
  4. O master não tem acesso direto a todas as máquinas que compõem os nós do nosso cluster. Isso seria um trabalho muito grande para um sistema que deve ser, em sua essência, simples e robusto. Portanto, terceirizamos este trabalho para os kubelets, que vão ser responsáveis por receber estes comandos e executá-los individualmente em suas próprias máquinas. Todo nó criado pelo master deverá obrigatoriamente conter um kubelet funcional - isto faz parte da arquitetura do sistema e não pode ser alterado.