Ricerca nel sito web

Come installare il runtime del contenitore CRI-O su Ubuntu 22.04


CRI-O è un'alternativa di runtime di container leggera a Docker per Kubernetes. È un'implementazione di Kubernetes CRI (Container Runtime Interface) e conformità con il runtime OCI (iniziativa Open Container). CRI-O consente a Kubernetes di eseguire i container direttamente senza strumenti aggiuntivi o modifiche al codice.

CRI-O supporta più formati di immagine, incluso il formato immagine Docker. Fornisce inoltre funzionalità per la gestione delle immagini dei contenitori come la gestione del livello dell'immagine, i file system di sovrapposizione, la gestione del ciclo di vita dei processi dei contenitori, il monitoraggio e la registrazione dei contenitori e fornisce anche l'isolamento delle risorse.

Questo tutorial ti guiderà attraverso l'installazione di CRI-O Container Runtime sul server Ubuntu 22.04. Ciò include anche come configurare il plug-in CNI con CRI-O e l'utilizzo di base di \cri-tools\ per la gestione di pod e container.

Prerequisito

Prima di iniziare, devi avere i seguenti requisiti:

  • Un server Ubuntu 22.04 - Questa guida utilizza il server Ubuntu con il nome host \server-ubuntu\ e l'indirizzo IP del server \192.168.5.10\.
  • Un utente non root con privilegi di root/amministratore.

Installazione di CRI-O Container Runtime

CRI-O può essere installato in diversi modi, installando tramite comando APT o compilando e installando CRI-O dalla sorgente. in questo esempio, installerai CRI-O Container Runtime tramite il repository di terze parti.

Prima di avviare l'installazione, eseguire il seguente comando per impostare la variabile di ambiente \$OS\ e \$CRIO_VERSION\. Per questo esempio, installeremo CRI-O v1.24.0 per Ubuntu 22.04.

export OS=xUbuntu_22.04
export CRIO_VERSION=1.24

Ora esegui il seguente comando per aggiungere il repository CRI-O per il server Ubuntu 22.04.

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

Aggiungere la chiave GPG per il repository CRI-O utilizzando il comando seguente.

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 -

Ora aggiorna il tuo repository Ubuntu e aggiorna l'indice del pacchetto. Dovresti vedere il repository CRI-O aggiunto all'elenco degli indici dei pacchetti.

sudo apt update

Successivamente, controlla la versione del pacchetto CRI-O utilizzando il comando seguente. Come puoi vedere, installerai l'ultima versione del pacchetto CRI-O v1.24.

sudo apt info cri-o

Ora installa il runtime del contenitore CRI-O utilizzando il comando apt di seguito. Immettere Y per confermare l'installazione e premere INVIO per continuare e l'installazione avrà inizio.

sudo apt install cri-o cri-o-runc

Al termine dell'installazione, avvia il servizio CRI-O e abilitalo utilizzando il comando \systemctl\ di seguito.

sudo systemctl start crio
sudo systemctl enable crio

Infine, controlla e verifica il servizio CRI-O utilizzando il comando seguente. Dovresti vedere che il servizio CRI-O è abilitato e verrà eseguito automaticamente all'avvio del sistema. E lo stato attuale del servizio CRI-O è in esecuzione.

sudo systemctl status crio

Installazione del plug-in CNI (Container Network Interface).

Il CNI (Container Network Interface) è necessario per il runtime del contenitore CRI-O. Il plug-in CNI ti consente di configurare il networking sul container e sui pod. Installerai il plug-in CNI dal repository Ubuntu ufficiale e lo configurerai con il runtime del contenitore CRI-O.

Il pacchetto \containernetworking-plugins\ è principalmente disponibile su distribuzione Linux. Per installarlo, eseguire il comando apt di seguito e l'installazione inizierà.

sudo apt install containernetworking-plugins

Al termine dell'installazione, modificare il file di configurazione CRI-O \/etc/crio/crio.conf\ utilizzando il seguente comando.

sudo nano /etc/crio/crio.conf

Nella sezione \[crio.network]\, decommenta l'opzione \network_dir\ e \plugin_dirs\. Inoltre, assicurati di aggiungere la directory del plugin CNI \/usr/lib/cni/\ all'opzione \plugin_dirs\.

# The crio.network table containers settings pertaining to the management of
# CNI plugins.
[crio.network]

# The default CNI network name to be selected. If not set or "", then
# CRI-O will pick-up the first one found in network_dir.
# cni_default_network = ""

# Path to the directory where CNI configuration files are located.
network_dir = "/etc/cni/net.d/"

# Paths to directories where CNI plugin binaries are located.
plugin_dirs = [
        "/opt/cni/bin/",
        "/usr/lib/cni/",
]

Quando hai finito, salva e chiudi il file.

Successivamente, rimuovi la configurazione predefinita del bridge CNI \/etc/cni/net.d/100-crio-bridge.conf\. Quindi, scarica la nuova configurazione del bridge CNI in \/etc/cni/net.d/11-crio-ipv4-bridge.conf\.

La nuova configurazione bridge CNI abiliterà solo IPv4 per pod e container.

rm -f /etc/cni/net.d/100-crio-bridge.conf
sudo curl -fsSLo /etc/cni/net.d/11-crio-ipv4-bridge.conf https://raw.githubusercontent.com/cri-o/cri-o/main/contrib/cni/11-crio-ipv4-bridge.conf

Ora riavvia il servizio CRI-O per applicare le nuove modifiche alle impostazioni del plugin CNI.

sudo systemctl restart crio

Infine, controlla e verifica nuovamente il servizio CRI-O utilizzando il comando seguente. Dovresti vedere che il servizio CRI-O è in esecuzione con la nuova configurazione bridge CNI.

sudo systemctl status crio

Installazione del pacchetto CRI-Tools

Hai terminato l'installazione del runtime del contenitore CRI-O e ora è in esecuzione con il plug-in CNI corretto. Ora installerai il pacchetto \cri-tools\ che include l'utilità della riga di comando \crictl\ che può essere utilizzata per interagire con il runtime del contenitore CRI-O.

Gli \cri-tools\ possono essere utilizzati con più runtime di container come containerd, dockershim, CRI-O e cri-dockerd.

Esegui il comando apt qui sotto per installare il pacchetto \cri-tools\. L'installazione inizierà automaticamente.

sudo apt install cri-tools

Al termine dell'installazione, eseguire il comando \crictl\ riportato di seguito per verificare la versione corrente del runtime. vedrai che l'attuale runtime del contenitore che stai utilizzando è un CRI-O v1.24.

crictl version

Successivamente, esegui il comando \crictl\ seguente per verificare lo stato dell'attuale Container Runtime e del plug-in di rete CNI. Dovresti vedere che il CRI-O Container Runtime è \RuntimeReady\ e il plug-in CNI è \NetworkReady\.

crictl info

Il comando crictl fornisce un completamento automatico per la tua shell, che può essere generata manualmente. Esegui il seguente comando crictl di seguito per generare il completamento del comando per la shell Bash in \/etc/bash_completion.d/crictl\. Quindi, ricarica la tua attuale sessione Bash recuperando il file di configurazione ~/.bashrc.

crictl completion > /etc/bash_completion.d/crictl
source ~/.bashrc

Ora esegui il comando \crictl\ e premi TAB per vedere il completamento di tutti i comandi disponibili.

crictl TAB

Creazione di pod e container utilizzando crictl

Ora che cri-tools è installato sul tuo sistema, è il momento di creare una sandbox e un contenitore del pod utilizzando il comando \crictl\. In questo esempio, creeremo un pod per il container Nginx.

Crea una nuova directory \~/demo\ utilizzando il comando seguente.

mkdir ~/demo/

Ora esegui il comando seguente per creare un nuovo file di configurazione JSON e definire la sandbox del pod per il contenitore.

cat <<EOF | tee ~/demo/sandbox_nginx.json
{
    "metadata": {
        "name": "nginx-sandbox",
        "namespace": "default",
        "attempt": 1,
        "uid": "hdishd83djaidwnduwk28bcsb"
    },
    "linux": {
    },
    "log_directory": "/tmp"
}
EOF

Esegui la sandbox del pod utilizzando il comando \crictl\ seguente. E dovresti vedere la stringa casuale del tuo Pod.

sudo crictl runp ~/demo/sandbox_nginx.json

Controlla e verifica i pod in esecuzione utilizzando il comando seguente. Dovresti vedere la sandbox del pod \nginx-sandbox\ con l'id del pod \7b0618800e251\ nello stato \Pronto\ .

sudo crictl pods

Per controllare i dettagli del pod, esegui il comando \crictl\ di seguito e assicurati di modificare l'id del pod. In questo esempio, il pod \nginx_sandbox\ ha un indirizzo IP \10.85.0.3\.

sudo crictl inspectp --output table 7b0618800e251

Ora che la sandbox del pod è pronta, è il momento di creare il container Nginx. Ma prima scaricherai l'immagine Nginx.

Eseguire il seguente comando crictl di seguito per scaricare l'immagine Nginx. Quindi, controlla e verifica l'elenco delle immagini disponibili.

sudo crictl pull nginx
sudo crictl images

Ora esegui il seguente comando per creare un nuovo file JSON per definire il contenitore Nginx.

cat <<EOF | tee ~/demo/container_nginx.json
{
  "metadata": {
      "name": "nginx"
    },
  "image":{
      "image": "nginx"
    },
  "log_path":"nginx.0.log",
  "linux": {
  }
}
EOF

Crea un nuovo contenitore nella sandbox del pod \7b0618800e251\ utilizzando il comando crictl di seguito. Dovresti vedere la stringa casuale del tuo nuovo ID contenitore Nginx.

sudo crictl create 7b0618800e251 ~/demo/container_nginx.json ~/demo/sandbox_nginx.json

Avvia il contenitore Nginx utilizzando il comando seguente e assicurati di modificare l'ID del contenitore.

sudo crictl start 1100498979ee5d3a9cbdb7b8b8f18529a01298f2bb57f7fcd01f54dd5a0f8746

Successivamente, controlla e verifica il contenitore in esecuzione utilizzando il comando seguente. Dovresti vedere che il container Nginx è \In esecuzione\ all'interno del pod \7b0618800e251\.

sudo crictl ps

Infine, puoi accedere al container Nginx tramite l'indirizzo IP della sandbox del pod \nginx_sandbox\. Esegui il comando curl sull'indirizzo IP \nginx_sandbox\ \10.85.0.3\ e vedrai la pagina index.html predefinita del tuo container Nginx.

curl 10.85.0.3

Conclusione

Ora hai terminato l'installazione e la configurazione di CRI-O Container Runtime con CNI Plugin su un server Ubuntu 22.04. Ora puoi usarlo come runtime del contenitore per il cluster Kubernetes. Hai anche appreso l'utilizzo di base del comando \crictl\ per la creazione di pod e container utilizzando CRI-O Container Runtime.