Container Runtime com ênfase em simplicidade e portabilidade · Jun2015 Docker doou runCpara a...

Preview:

Citation preview

Um Container Runtime com ênfase em simplicidade, robustez e portabilidade

© 2019 Cloud Native Computing Foundation2

Um container runtime disponibilizado como um projeto de Software de Código Aberto (#OSS) que gerencia o Ciclo de Vida Completo do contêiner, desde a

transferência e armazenamento de imagens para a execução de contêineres até a supervisão do armazenamento de baixo nível, e das configurações de network.

© 2019 Cloud Native Computing Foundation3

Fonte: https://blog.docker.com/2017/08/what-is-containerd-runtime/

• Originalmente construído como um ponto de integração para runtimesOCI* (runC) mas absorveu funcionalidades necessárias para plataformas como Docker e K8s.

• Fornece uma “camada cliente” para as aplicações se abstraírem do nível de Kernel (API-driven)

OCI – Open Container Initiativehttps://www.opencontainers.org/

© 2019 Cloud Native Computing Foundation4

Uma Breve História

Sir Robert Dudley’s Dell’ Arcano Del Mar, 1646. Image courtesy of the Harvard Map Collection.

Jun2015 Docker doou runC para a Open Container Initiative (OCI)

Abr2016Containerd “0.2”, Docker 1.11https://blog.docker.com/2016/04/docker-engine-1-11-runc/

Dez2015Containerd - Daemon Controle para runChttps://blog.docker.com/2015/12/containerd-daemon-to-control-runc/

Dez2016 Expansão do Projeto #OSS Containerd 1.0https://blog.docker.com/2016/12/introducing-containerd/

Mar2017Containerd doado para a CNCFhttps://blog.docker.com/2017/03/docker-donates-containerd-to-cncf/

© 2019 Cloud Native Computing Foundation5

Cloud Native Computing Foundation Anuncia a Graduação do Projeto containerd

https://www.cncf.io/announcement/2019/02/28/cncf-announces-containerd-graduation/

© 2019 Cloud Native Computing Foundation6

Cloud Native Computing Foundation

• Parte da Fundação Linux, Sem fins lucrativos; foundada em Dez 2015

• Membros Platinum :

Encubados

Service Mesh ArmazenamentoDescoberta de Serviços

Rastreabilidade Distribuída

Software UpdateSpec

Segurança

Graduados

Gerenciamento de Pacotes

API de RedeRemote Procedure Call

APIRastreabilidade

Distribuída

Container Runtime

Mensageria

Orquestração Serviço de Proxy

Monitoramento

Registro

Armazenamento

Armazenamento Chave/Valor

Política Container Runtime

Container Runtime Logging

© 2019 Cloud Native Computing Foundation7

Arquitetura

© 2019 Cloud Native Computing Foundation8

Direcionadores da ArquiteturaRequisitos• Just Enough : Use apenas o

necessário• Just in Time : Agilidade runtime• Desacoplamento• Compatibilidade OCI e relação

configuração direta com OCI• Métricas com Prometheus• Tecnologias conhecidas

Objetivos Técnicos• Estabilidade e desempenho

nas funções principais para os containers

• Desacoplamento e modularidade nos sistemas principais (imagens, filesystem, runtime) permitindo reuso e conectividade

• Suporte total a OCI• API baseada em gRPC

© 2019 Cloud Native Computing Foundation9

Arquitetura

© 2019 Cloud Native Computing Foundation10

Subsistemas

Conjunto de Componentes da Arquitetura

Distruibuição Pacotes Bundles

Runtime

Funções para pulling e pushing de imagens

Controlador

Funções manipulação de “pacotes (bundles)” que são representações em disco de

um container executando

Controlador

Suportam as execução de “pacotes (bundles)”, incluindo

a criação da execução do container

Controlador

Lado Cliente Lado “Runtime”

© 2019 Cloud Native Computing Foundation11

Modulos• Além dos subsistemas, existem vários componentes que podem cruzar

os limites do subsistemaExecutor Realmente implementa o mecanismo de execução

Supervisor Monitora e reporta o estado dos containers

Metadata Armazena os metadados (images e bundles)

Conteúdo Fornece o acesso ao armazenamento de conteúdos (como imagem)

Snapshotter Gerencia os sistemas de “snapshot” para as imagens de containers

Eventos Suporta a coleção e consumo de eventos (orientado a eventos, pub/sub pattern)

Tarefas Permitem ao cliente gerenciar o estado de um container executando

© 2019 Cloud Native Computing Foundation12

Criação de um Bundle

Nome da ImagemApontamentos p/ Root Manifest

Contaúdo da Imagem Camadas da ImagemSnapshot do rootfs(ready)

Bundle preparado

© 2019 Cloud Native Computing Foundation13

Executando

© 2019 Cloud Native Computing Foundation14

Conectando com Containerdmain.go

Criação de um novo Cliente Containerd

Contexto com namespace

© 2019 Cloud Native Computing Foundation15

Obtendo uma Imagemmain.go

Pull da Imagem no DockerHub

© 2019 Cloud Native Computing Foundation16

Criando um Spec e um Container OCImain.go

© 2019 Cloud Native Computing Foundation17

Executando o Containermain.go

Task em Estado “Criado”

Task Executando

© 2019 Cloud Native Computing Foundation18

Adotando

© 2019 Cloud Native Computing Foundation19

Integração do Containerd com Kubernetes

© 2019 Cloud Native Computing Foundation20

Testes de Performance

Fonte: https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

© 2019 Cloud Native Computing Foundation21

Provedores

© 2019 Cloud Native Computing Foundation22

Paulo Alberto SimoesPrincipal Cloud Solution Engineer at Oracle

@pasimoes

Obrigado

Recommended