如何在 Ubuntu 22.04 上安裝 CRI-O 容器運行時
![](https://linuxstory.org/wp-content/uploads/2024/06/105419akd0pr3ns2n50nz0-800x400.jpg)
CRI-O 是 Kubernetes 的開源輕量級容器運行時。它是使用 開放容器組織 (OCI)兼容運行時的 Kubernetes 容器運行時介面 (CRI)的實現。在運行 Kubernetes 時,它是 Docker 的完美替代品。
在本指南中,我們將逐步演示如何在 Ubuntu 22.04 LTS 上安裝 CRI-O。
先決條件
在開始之前,這是你需要的:
- 具有 SSH 訪問許可權的 Ubuntu 22.04 實例
- 在實例上配置的 sudo 用戶
- 快速穩定的互聯網連接
有了這個,讓我們開始吧。
步驟 1:更新系統並安裝依賴
立即登錄你的伺服器實例,並按如下方式更新包列表:
$ sudo apt update
更新本地包索引後,按如下方式安裝依賴項:
$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
步驟 2:添加 CRI-O 存儲庫
要安裝 CRI-O,我們需要在 Ubuntu 上添加或啟用它的倉庫。但首先,你需要根據操作系統和要安裝的 CRI-O 版本定義變數。
因此,定義如下變數:
$ export OS=xUbuntu_22.04
$ export CRIO_VERSION=1.24
完成後,運行以下命令集以添加 CRI-O Kubic 倉庫:
$ 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
此後,為 CRI-O 倉庫導入 GPG 密鑰:
$ 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 -
這會產生如下輸出:
再次更新包索引,使系統與新添加的 CRI-O Kubic 倉庫同步:
$ sudo apt update
步驟 3:在 Ubuntu 22.04 上安裝 CRI-O
添加倉庫後,使用 APT 包管理器安裝 CRI-O 和運行時客戶端:
$ sudo apt install cri-o cri-o-runc -y
安裝後,啟動並啟用 CRI-O 守護程序:
$ sudo systemctl start crio
$ sudo systemctl enable crio
接下來,驗證 CRI-O 服務是否正在運行:
$ sudo systemctl status crio
你應該看到以下輸出,表明 CRI-O 服務正在按預期運行:
步驟 4:為 CRI-O 安裝 CNI 插件
接下來,你需要安裝 CNI( 容器網路介面 )以及 CNI 插件。請記住,環回和橋接配置已啟用並且足以使用 CRI-O 運行 容器莢 :
因此,要安裝 CNI 插件,請運行以下命令:
$ sudo apt install containernetworking-plugins -y
安裝後,編輯 CRI-O 配置文件:
$ sudo nano /etc/crio/crio.conf
取消注釋 network_dir
和 plugin_dirs
部分,並在 plugin_dirs
下添加 /usr/lib/cni/
。
保存更改並退出配置文件。
接下來,重啟 CRIO 服務:
$ sudo systemctl restart crio
步驟 5:安裝 CRI-O 工具
此外,你還需要安裝 cri-tools
包,它提供了 crictl
命令行程序,用於交互和管理容器和 pod。
為此,請運行以下命令:
$ sudo apt install -y cri-tools
安裝後,確認 crictl
的版本和 RunTimeVersion
如下:
$ sudo crictl --runtime-endpoint unix:///var/run/crio/crio.sock version
一定要檢查 CRI-O 是否準備好使用以下命令部署容器莢:
$ sudo crictl info
crictl
命令提供自動補全功能,讓你可以通過按 TAB
鍵自動補全命令。要啟用命令補全,請運行以下命令:
$ sudo su -
# crictl completion > /etc/bash_completion.d/crictl
然後重新載入當前的 Bash 會話:
# source ~/.bashrc
要使用自動補全功能,你需要註銷或啟動新的終端會話。然後只需鍵入 crictl
命令並按 TAB
鍵即可查看所有選項。
$ crictl
步驟 6:使用 crictl 程序創建容器莢
至此,CRI-O 已完全安裝和配置並準備好啟動容器莢。在本節中,我們將在容器莢中創建一個 Apache Web 伺服器並確認它是否正在處理請求。
首先,我們將使用容器莢配置文件設置一個沙箱或隔離環境,如下所示:
$ sudo nano apache_sandbox.json
然後我們將以下配置添加到文件中:
{
"metadata": {
"name": "apache-sandbox",
"namespace": "default",
"attempt": 1,
"uid": "hdishd83djaidwnduwk28bcsb"
},
"linux": {
},
"log_directory": "/tmp"
}
保存並退出。接下來使用以下命令創建容器莢。這會列印出很長的字母數字,它是容器莢 ID。
$ sudo crictl runp apache_sandbox.json
要確認容器莢已創建,請運行命令:
$ sudo crictl pods
要檢索有關創建的容器莢的更多信息,請運行以下命令:
$ sudo crictl inspectp --output table 05ba2f0704f22
這將列印出 ID、名稱、UID、命名空間、創建日期、內部 IP 等詳細信息。
步驟 7:在容器莢中創建容器
這部分中,我們將在容器莢中創建一個 Apache Web 伺服器容器。因此,使用 crictl
程序從 Docker Hub 拉取 Apache Web 伺服器鏡像:
$ sudo crictl pull httpd
你可以如圖所示驗證拉取的鏡像:
$ sudo crictl images
接下來,我們將為 Apache Web 伺服器定義一個容器配置文件:
$ sudo nano container_apache.json
複製並粘貼以下代碼:
{
"metadata": {
"name": "apache"
},
"image":{
"image": "httpd"
},
"log_path":"apache.0.log",
"linux": {
}
}
保存並退出配置文件。
最後,要將容器連接到之前創建的沙盒容器莢,請運行以下命令:
$ sudo crictl create 05ba2f0704f22 container_apache.json apache_sandbox.json
這會向終端輸出一長串字母數字 ID。請記下此 ID。
最後,使用 ID 啟動 Apache Web 伺服器容器,如下所示:
$ sudo crictl start 37f4d26510965452aa918f04d629f5332a1cd398d4912298c796942e22f964a7
要檢查容器狀態,請運行以下命令:
$ sudo crictl ps
要驗證 Apache Web 伺服器是否正在運行,請使用 curl
命令和容器莢的內部 ID 向 Web 伺服器發送 HTTP 請求:
$ curl -I 10.85.0.2
以下輸出確認 Web 伺服器正在運行:
結論
這就是全部的指南。我們已經在 Ubuntu 22.04 上成功安裝了 CRI-O,並繼續創建容器莢和容器。歡迎你提出意見和反饋。
via: https://www.linuxtechi.com/install-crio-container-runtime-on-ubuntu/
作者:James Kiarie 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive