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