Containerd容器運行yum安裝與二進制安裝

一、前言

Containerd的安裝,如果使用yum安裝會簡單很多,但安裝的版本基本是固定的,在實際的業務場景不太適合。

二進制安裝的方式,相對比較靈活。

二、yum方式安裝

安裝containerd會自動安裝runc。

2.1 下載阿裡雲鏡像源

$ wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.2 搜索containerd軟件

$ yum list | grep containerd
containerd.io.x86_64         1.4.9-3.1.el7       installed
containerd.x86_64            1.2.14-1.el7        epel
containerd.io.x86_64         1.6.4-3.1.el7       docker-ce-stable

2.3 安裝

$ yum install  -y containerd
$ rpm -qa |  grep containerd
containerd.io-1.4.9-3.1.el7.x86_64

2.4 啟動containerd服務

$ systemctl start  containerd
$ systemctl enable  containerd
$ systemctl status  containerd

2.5 查看服務信息

$ ctr version
Client:
  Version:  1.4.9       #客戶端版本號
  Revision: e25210fe30a0a703442421b0f60afac609f950a3
  Go version: go1.15.14
 
Server:
  Version:  1.4.9    #服務端版本號
  Revision:  e25210fe30a0a703442421b0f60afac609f950a3
  UUID: 3a988dc2-25d5-4753-914c-3344e4cb3c6e

三、二進制方式安裝

3.1 下載二進制包

Containerd有兩種安裝包:

containerd-xxx:這種包用於單機測試沒問題,不包含runC,需要提前安裝。

cri-containerd-cni-xxxx:包含runc和k8s裡的所需要的相關文件。k8s集群裡需要用到此包。雖然包含runC,但是依賴系統中的seccomp(安全計算模式,是一種限制容器調用系統資源的模式。)

$ wget https://github.com/containerd/containerd/releases/download/v1.6.5/cri-containerd-1.6.5-linux-amd64.tar.gz
$ tar zxvf cri-containerd-1.6.5-linux-amd64.tar.gz
$ ls  -l
drwxr-xr-x  4 root root        51 4月  26 07:52 etc
drwxr-xr-x  4 root root        35 4月  26 07:51 opt
drwxr-xr-x  3 root root        19 4月  26 07:50 usr

etc目錄:主要為containerd服務管理配置文件及cni虛擬網卡配置文件;

opt目錄:主要為gce環境中使用containerd配置文件及cni插件;

usr目錄:主要為containerd運行時的二進制文件,包含runc;

containerd 的安裝包中一共有五個文件,通過上面的命令它們被安裝到瞭 /usr/local/bin 目錄中:

containerd:即容器的運行時,以 gRPC 協議的形式提供滿足 OCI 標準的 API;

containerd-release:containerd 項目的發行版發佈工具;

containerd-stress:containerd壓力測試工具;

containerd-shim:這是每一個容器的運行時載體,我們在 docker 宿主機上看到的 shim 也正是代表著一個個通過調用 containerd 啟動的 docker 容器;

ctr:它是一個簡單的 CLI 接口,用作 containerd 本身的一些調試用途,投入生產使用時還是應該配合docker 或者 cri-containerd 部署;

3.2 拷貝二進制可執行文件到`$PATH`中

在解壓安裝包後,在解壓後的usr/local/bin、目錄下有相關的二進制可執行文件,將其復制到$PATH環境中。

$ ls usr/local/bin/
containerd  containerd-shim  containerd-shim-runc-v1  containerd-shim-runc-v2  containerd-stress  crictl 
critest  ctd-decoder  ctr
$ cp usr/local/bin/* 
/usr/local/bin/

3.3 創建配置文件

Containerd 的默認配置文件為 /etc/containerd/config.toml

$ mkdir -p /etc/containerd/
$ containerd config default > /etc/containerd/config.toml

3.4 創建服務管理配置文件

拷貝服務管理配置文件到/usr/lib/systemd/system/目錄

$ grep -v ^# etc/systemd/system/containerd.service
$ cp etc/systemd/system/containerd.service
/usr/lib/systemd/system/containerd.service

3.5 啟動 containerd 服務

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now containerd.service
$ sudo systemctl status containerd.service

 查看版本

$ containerd  --version
containerd github.com/containerd/containerd v1.6.3
f830866066ed06e71bad64871bccfd34daf6309c

3.6 安裝runc(二進制)

由於二進制包中提供的runC默認需要系統中安裝seccomp支持,需要單獨安裝,且不同版本runC對seccomp版本要求不一致,所以建議單獨下載runC 二進制包進行安裝,裡面包含瞭seccomp模塊支持。

$ cp usr/local/sbin/runc  /usr/bin/
$ runc -version
runc: symbol lookup error: runc: undefined symbol: seccomp_notify_respond

【報錯原因】 缺少依賴包libseccomp(2.4以上版本)

【解決辦法】 安裝libseccomp 2.5.1

$ wget http://rpmfind.net/linux/centos/8-stream/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm
$ rpm -ivh libseccomp-2.5.1-1.el8.x86_64.rpm
$ rpm -qa |  grep libseccomp
libseccomp-2.5.1-1.el8.x86_64
$ runc  -version
runc version 1.1.2
commit: v1.1.2-0-ga916309f
spec: 1.0.2-dev
go: go1.17.11
libseccomp: 2.5.1

以上就是Containerd容器運行yum安裝與二進制安裝的詳細內容,更多關於Containerd容器yum與二進制安裝的資料請關註WalkonNet其它相關文章!

推薦閱讀: