Pesquisa de site

Instale o tempo de execução do contêiner CRI-O no Debian 11/Debian 10


No ano de 2017, o projeto Kubernetes apresentou ao público sua Container Runtime Interface (CRI). CRI é uma interface de plug-in projetada para dar ao kubelet (um agente usado para iniciar contêineres e criar pods no cluster Kubernetes) a capacidade de usar diferentes tempos de execução de contêiner compatíveis com OCI, sem modificações no código Kubernetes. O projeto CRI-O, criado a partir do trabalho do Kubernetes CRI, é um ambiente de execução leve para o Kubernetes.

Este breve guia tem apenas uma intenção: permitir que você instale e use o CRI-O Container Runtime no Debian 11/Debian 10. Com o CRI-O, você pode executar contêineres diretamente do Kubernetes sem a necessidade de qualquer ferramenta. Desde que o contêiner seja compatível com OCI, o CRI-O poderá executá-lo. A introdução do CRI reduziu significativamente a sobrecarga de manutenção para a comunidade upstream do Kubernetes e para todos os fornecedores que criam soluções com base na plataforma de orquestração do Kubernetes.

Aqui está uma visão geral de como o CRI-O funciona no ecossistema Kubernetes.

Instale o tempo de execução do contêiner CRI-O no Debian 11/Debian 10

Siga as etapas fornecidas neste guia para ter uma configuração funcional do

Passo 1: Atualizar o sistema Debian

Sempre iniciamos nossas instalações atualizando e atualizando o sistema.

sudo apt update && sudo apt -y upgrade

Se a atualização for concluída sem erros, reinicialize o sistema antes de adicionar o repositório CRI-O APT ao sistema.

sudo reboot

Etapa 2: Adicionar repositório CRI-O Kubic ao sistema Debian

Como o escopo do CRI-O é trabalhar com o Kubernetes no gerenciamento e na execução de contêineres OCI, é recomendável instalar a versão do CRI-O correspondente à sua versão do Kubernetes. O projeto fornece algumas ferramentas voltadas ao usuário para solucionar problemas de contêineres no Kubernetes.

A versão do Kubernetes que estará rodando em meus servidores Debian é a versão 1.23. Para esta versão, adicionaremos o repositório CRI-O versão 1.23..

Adicionando repositório no Debian 11 / Debian 10:

OS=Debian_10
CRIO_VERSION=1.23

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list

Importe a chave GPG usada na assinatura de pacotes após o repositório ter sido adicionado ao sistema.

curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS/Release.key | sudo apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -

Teste se o repositório está funcionando

$ sudo apt update
Hit:1 http://security.debian.org/debian-security bullseye-security InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Hit:3 http://deb.debian.org/debian bullseye-updates InRelease
Get:4 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.22/Debian_10  InRelease [1604 B]
Hit:5 http://deb.debian.org/debian bullseye-backports InRelease
Get:6 https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10  InRelease [1629 B]
Get:7 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.22/Debian_10  Packages [1659 B]
Get:8 https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10  Packages [30.6 kB]
Fetched 35.5 kB in 2s (17.2 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.

Etapa 3: Instale o CRI-O em Debian 11/Debian 10

Execute a atualização antes de instalar

sudo apt update
sudo apt upgrade

Instalar

sudo apt install cri-o cri-o-runc

Aceite o prompt de instalação com a tecla y .

eading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  conmon containers-common
Suggested packages:
  containernetworking-plugins
The following NEW packages will be installed:
  conmon containers-common cri-o cri-o-runc
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 23.2 MB of archives.
After this operation, 112 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Confirme a versão instalada:

$ apt show cri-o
Package: cri-o
Version: 1.23.0~0
Priority: optional
Section: devel
Maintainer: Peter Hunt <[email >
Installed-Size: 98.3 MB
Depends: libgpgme11, libseccomp2, conmon, containers-common (>= 0.1.27), tzdata
Suggests: cri-o-runc | runc (>= 1.0.0), containernetworking-plugins
Replaces: cri-o-1.19, cri-o-1.20, cri-o-1.21
Homepage: https://github.com/cri-o/cri-o

Agora que o CRI-O está instalado em nosso sistema Debian, vamos iniciar o serviço daemon.

sudo systemctl start crio.service

O serviço deve estar habilitado para início automático quando o sistema for reinicializado.

$ sudo systemctl enable crio.service
Created symlink /etc/systemd/system/cri-o.service → /lib/systemd/system/crio.service.
Created symlink /etc/systemd/system/multi-user.target.wants/crio.service → /lib/systemd/system/crio.service.

Verificação do status do serviço:

$ systemctl status crio
 crio.service - Container Runtime Interface for OCI (CRI-O)
     Loaded: loaded (/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-12-09 11:51:30 UTC; 49s ago
       Docs: https://github.com/cri-o/cri-o
   Main PID: 56978 (crio)
      Tasks: 9
     Memory: 13.8M
        CPU: 151ms
     CGroup: /system.slice/crio.service
             └─56978 /usr/bin/crio

Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.286809913Z" level=info msg="Installing default AppArmor profile: crio-default"
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.345230742Z" level=info msg="No blockio config file specified, blockio not configured"
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.345278849Z" level=info msg="RDT not available in the host system"
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.345831790Z" level=warning msg="Error validating CNI config file /etc/cni/net.d/100-crio-bridge.conf: [failed to find plugin>
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.345957038Z" level=warning msg="Error validating CNI config file /etc/cni/net.d/200-loopback.conf: [failed to find plugin \">
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.345993539Z" level=info msg="Updated default CNI network name to "
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.379659259Z" level=warning msg="The binary conntrack is not installed, this can cause failures in network connection cleanup"
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.383083211Z" level=warning msg="The binary conntrack is not installed, this can cause failures in network connection cleanup"
Dec 09 11:51:30 debian-bullseye-01 crio[56978]: time="2021-12-09 11:51:30.383383082Z" level=warning msg="Error encountered when checking whether cri-o should wipe images: version file /var/lib/crio>
Dec 09 11:51:30 debian-bullseye-01 systemd[1]: Started Container Runtime Interface for OCI (CRI-O).

Etapa 4: Usando CRI-O no Debian 11/Debian

Conforme afirmado anteriormente, o CRI-O deve ser usado com Kubernetes como tempo de execução de contêiner ao qual o kubelet atende para cumprir a criação, exclusão e gerenciamento geral do ciclo de vida de contêineres.

No entanto, uma ferramenta de linha de comando crioctl pode ser instalada a partir do pacote cri-tools como uma ferramenta voltada para o cliente para interagir com o daemon CRI-O.

sudo apt install cri-tools

Verifique a existência do comando crictl:

$ sudo crictl info
{
  "status": {
    "conditions": [
      {
        "type": "RuntimeReady",
        "status": true,
        "reason": "",
        "message": ""
      },
      {
        "type": "NetworkReady",
        "status": false,
        "reason": "NetworkPluginNotReady",
        "message": "Network plugin returns error: Missing CNI default network"
      }
    ]
  }
}

Podemos extrair uma imagem de teste usando o comando crictl:

$ sudo crictl pull hello-world
Image is up to date for docker.io/library/hello-world@sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685


$ sudo crictl pull busybox
Image is up to date for docker.io/library/busybox@sha256:50e44504ea4f19f141118a8a8868e6c5bb9856efa33f2183f5ccea7ac62aacc9

Listar imagens disponíveis:

$ sudo crictl images
IMAGE                           TAG                 IMAGE ID            SIZE
docker.io/library/busybox       latest              ffe9d497c3241       1.46MB
docker.io/library/hello-world   latest              feb5d9fea6a5e       19.9kB

Sua próxima tarefa é a implantação do Kubernetes no sistema Linux Debian 11/Debian 10 usando o tempo de execução CRI-O.

Temos mais guias sobre administração do Kubernetes, alguns são compartilhados nos links abaixo:

  • Implante o controlador Nginx Ingress no Kubernetes usando Helm Chart

Para instalação do CRI-O no CentOS Linux, consulte:

  • Instale o CRI-O Container Runtime no CentOS Linux
  • Instale o cluster Kubernetes no Rocky Linux 8 com Kubeadm e CRI-O
  • Comparação de distribuições Kubernetes k0s vs k3s vs microk8s
  • Como adicionar vários clusters Kubernetes ao Jenkins
  • Configure o Prometheus e o Grafana no Kubernetes usando o prometheus-operator

Artigos relacionados: