Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© 2019 Cloud Native Computing Foundation 2 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.

Slide 3

Slide 3 text

© 2019 Cloud Native Computing Foundation 3 Fonte: https://blog.docker.com/2017/08/what-is-containerd-runtime/ • Originalmente construído como um ponto de integração para runtimes OCI* (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 Initiative https://www.opencontainers.org/

Slide 4

Slide 4 text

© 2019 Cloud Native Computing Foundation 4 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) Abr2016 Containerd “0.2”, Docker 1.11 https://blog.docker.com/2016/04/docker-engine-1-11-runc/ Dez2015 Containerd - Daemon Controle para runC https://blog.docker.com/2015/12/containerd-daemon-to-control-runc/ Dez2016 Expansão do Projeto #OSS Containerd 1.0 https://blog.docker.com/2016/12/introducing-containerd/ Mar2017 Containerd doado para a CNCF https://blog.docker.com/2017/03/docker-donates-containerd-to-cncf/

Slide 5

Slide 5 text

© 2019 Cloud Native Computing Foundation 5 Cloud Native Computing Foundation Anuncia a Graduação do Projeto containerd https://www.cncf.io/announcement/2019/02/28/cncf-announces-containerd-graduation/

Slide 6

Slide 6 text

© 2019 Cloud Native Computing Foundation 6 Cloud Native Computing Foundation • Parte da Fundação Linux, Sem fins lucrativos; foundada em Dez 2015 • Membros Platinum : Encubados Service Mesh Armazenamento Descoberta de Serviços Rastreabilidade Distribuída Software Update Spec Segurança Graduados Gerenciamento de Pacotes API de Rede Remote Procedure Call API Rastreabilidade Distribuída Container Runtime Mensageria Orquestração Serviço de Proxy Monitoramento Registro Armazenamento Armazenamento Chave/Valor Política Container Runtime Container Runtime Logging

Slide 7

Slide 7 text

© 2019 Cloud Native Computing Foundation 7 Arquitetura

Slide 8

Slide 8 text

© 2019 Cloud Native Computing Foundation 8 Direcionadores da Arquitetura Requisitos • 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

Slide 9

Slide 9 text

© 2019 Cloud Native Computing Foundation 9 Arquitetura

Slide 10

Slide 10 text

© 2019 Cloud Native Computing Foundation 10 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”

Slide 11

Slide 11 text

© 2019 Cloud Native Computing Foundation 11 Modulos • Além dos subsistemas, existem vários componentes que podem cruzar os limites do subsistema Executor 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

Slide 12

Slide 12 text

© 2019 Cloud Native Computing Foundation 12 Criação de um Bundle Nome da Imagem Apontamentos p/ Root Manifest Contaúdo da Imagem Camadas da Imagem Snapshot do rootfs (ready) Bundle preparado

Slide 13

Slide 13 text

© 2019 Cloud Native Computing Foundation 13 Executando

Slide 14

Slide 14 text

© 2019 Cloud Native Computing Foundation 14 Conectando com Containerd main.go Criação de um novo Cliente Containerd Contexto com namespace

Slide 15

Slide 15 text

© 2019 Cloud Native Computing Foundation 15 Obtendo uma Imagem main.go Pull da Imagem no DockerHub

Slide 16

Slide 16 text

© 2019 Cloud Native Computing Foundation 16 Criando um Spec e um Container OCI main.go

Slide 17

Slide 17 text

© 2019 Cloud Native Computing Foundation 17 Executando o Container main.go Task em Estado “Criado” Task Executando

Slide 18

Slide 18 text

© 2019 Cloud Native Computing Foundation 18 Adotando

Slide 19

Slide 19 text

© 2019 Cloud Native Computing Foundation 19 Integração do Containerd com Kubernetes

Slide 20

Slide 20 text

© 2019 Cloud Native Computing Foundation 20 Testes de Performance Fonte: https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

Slide 21

Slide 21 text

© 2019 Cloud Native Computing Foundation 21 Provedores

Slide 22

Slide 22 text

© 2019 Cloud Native Computing Foundation 22 Paulo Alberto Simoes Principal Cloud Solution Engineer at Oracle @pasimoes Obrigado