1. CRI-O: Nem só de Docker vivem
os containers
Uma visão geral do ecossistema de containers
Jonh Wendell
Sr. Software Engineer
TDC Florianópolis 20/Abr/2018
3. #nobigfatdaemons
O que você precisa para executar um container
3
● Definição do que é um container - Standard
○ OCI Image Bundle Definition
● Mecanismo para baixar imagens de um registry para o host
○ github.com/containers/image
● Capacidade de expandir imagens no disco - COW filesystem
○ github.com/containers/storage
● Forma padrão de executar um container
○ OCI runtime spec
○ runc: implementação padrão da OCI runtime spec (usado pelo Docker)
5. #nobigfatdaemons
O que o K8S precisa para executar um container
5
Quando Kubernetes diz para o CRI executar uma imagem:
● CRI precisa baixar a imagem de um registro
● CRI precisa armazenar essa imagem num COW FS
● CRI precisa executar a imagem (OCI Runtime)
CRI - Container Runtime Interface
6. #nobigfatdaemons
Introduzindo o CRI-O
6
CRI-O: Implementação baseada na OCI do Kubernetes CRI
● Escopo restrito à Kubernetes CRI
● Único usuário suportado é o Kubernetes
● Construído somente com componentes padrão
Nada mais, nada menos.
8. #nobigfatdaemons
Componentes
8
● oci-runtime-tools é uma biblioteca que gera as configurações OCI
para os containers
● CNI é usada para configurar a rede (coreos)
○ Testada com Flannel, Weave e openshift-sdn
● conmon é um utilitário para:
○ Monitoramento
○ Logging
○ Manipulação de TTY
○ Anexar clientes
○ Detectar e reportar OOM
11. #nobigfatdaemons
Status
11
● Todos os testes - e2e, integration (> 500) rodam com sucesso
○ Nenhum PR é aceito sem passar em todos os testes
● 1.0.x : Suporta kubernetes 1.7.x
● 1.8.x : Suporta kubernetes 1.8.x
○ Já é usado no Openshift online
● 1.9.x : Suporta kubernetes 1.9.x
○ CRI-O já é suportado no Openshift 3.9 junto com o Docker
● Alvo para Openshift 3.10: CRI-O instalado/suportado por default
● Mantenedores/Colaboradores da Red Hat, Intel, Lyft, Suse e outros
12. #nobigfatdaemons
Status
12
CRI-O está nos nós no Openshift Online!
“CRI-O just works for them, so they
haven’t had much to say”
Queremos que containers em produção
sejam tediosos
18. #nobigfatdaemons18
Coreutils para criação de containers. Interface simples.
# ctr=$(buildah from fedora)
# mnt=$(buildah mount $ctr)
# cp -R src $mnt
# dnf install --installroot=$mnt httpd
# make install DESTDIR=$mnt
# buildah config --entrypoint=/usr/bin/test.sh $ctr
# buildah config --env foo=bar $ctr
# buildah commit $ctr myhttpd
# buildah push myhttpd docker://jwendell/myhttpd
19. #nobigfatdaemons19
Hey! E o Dockerfile???
Buildah também suporta Dockerfile
buildah build-using-dockerfile -f Dockerfile .
# ai que preguiça
buildah bud -F Dockerfile .
20. #nobigfatdaemons20
E sobre outra linguagem para criação de containers?
BASH
Queremos que outros construam ferramentas em cima do Buildah
Openshift pode usar Buildah para imagens S2I
Ansible-Containers também pode usar Buildah
21. #nobigfatdaemons
Que mais o Openshift precisa?
21
● Capacidade de diagnosticar problemas no host
● Se você não usa Docker para executar containers, como descobrir
o que tá acontecendo sem a CLI do docker?
22. #nobigfatdaemons
Introduzindo o podman
22
Gerenciamento de pods/containers baseada na cli Docker
# podman ps -a
# podman run -ti fedora sleep 2000
# podman exec -ti fedora sh
# podman images
https://github.com/projectatomic/libpod
25. #nobigfatdaemons
CRI-O é o melhor runtime para o K8S!
25
1. Open governance
2. Open source
3. Enxuto
4. Estável
5. Seguro
6. Chato!
http://www.projectatomic.io/blog/2017/06/6-reasons-why-cri-o-is-the-best-runtime-for-kubernetes/