k8s系列-06-containerd的基本操作

网友投稿 275 2022-09-11

k8s系列-06-containerd的基本操作

​​

​​主旨​​

上一篇我们介绍了containerd的安装,本篇我们来简单介绍下如何进行使用。

​​环境​​

linux服务器

​​前置安装​​

躺过的坑,需要安装下面内容,否则执行ctr run的时候会报错如下:

ctr: failed to create shim task: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/default/redis/log.json: no such file or directory): runc did not terminate successfully: exit status 127: runc: symbol lookup error: runc: undefined symbol: seccomp_notify_respond: unknown

卸载旧版本:

[yunweijia@localhost ~]$ sudo rpm -qa | grep libseccomplibseccomp-devel-2.3.1-4.el7.x86_64libseccomp-2.3.1-4.el7.x86_64[yunweijia@localhost ~]$ sudo rpm -e libseccomp-devel-2.3.1-4.el7.x86_64 --nodeps[yunweijia@localhost ~]$ sudo rpm -e libseccomp-2.3.1-4.el7.x86_64 --nodeps

安装新版本:

[yunweijia@localhost ~]$ sudo rpm -ivh libseccomp-2.5.1-1.el8.x86_64.rpm

查看现有版本:

[yunweijia@localhost ~]$ sudo rpm -qa | grep libseccomplibseccomp-2.5.1-1.el8.x86_64[yunweijia@localhost ~]$

​​查看帮助​​

# 查看总帮助[yunweijia@localhost ~]$ ctr -h# 查看子命令的帮助,举例子如下[yunweijia@localhost ~]$ ctr i -h

​​下载镜像​​

# 和docker的差异点需要注意下,他需要你输入完整的地址[yunweijia@localhost ~]$ sudo ctr i pull docker.io/library/redis:alpine# 查看现有镜像[yunweijia@localhost ~]$ sudo ctr i ls

​​命名空间​​

[yunweijia@localhost ~]$ ctr ns -hNAME: ctr namespaces - manage namespacesUSAGE: ctr namespaces command [command options] [arguments...]COMMANDS: create, c create a new namespace list, ls list namespaces remove, rm remove one or more namespaces label set and clear labels for a namespaceOPTIONS: --help, -h show help [yunweijia@localhost ~]$ sudo ctr ns lsNAME LABELS default moby [yunweijia@localhost ~]$

从上面可以看到我们在没有创建命名空间的时候,直接就有两个命名空间,这是为什么呢?正常情况下哈,containerd下只有一个default空间,我这里出现了两个命名空间是因为我这台服务器之前安装过docker,所以可以看出来docker默认的命名空间是moby。

那么我们看下docker下载的镜像,是不是会在命名空间中显示呢,以及我们上面通过ctr命令下载的镜像会不会在docker images中显示,如下:

[yunweijia@localhost ~]$ sudo ctr i lsREF TYPE DIGEST SIZE PLATFORMS LABELS docker.io/library/redis:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:4bed291aa5efb9f0d77b76ff7d4ab71eee410962965d052552db1fb80576431d 10.4 MiB linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x - [yunweijia@localhost ~]$[yunweijia@localhost ~]$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEyunweijia jenkins 976d65da21b9 3 weeks ago 874MB192.168.112.130/yunwei/yunweijia python3 31255eafafc3 3 weeks ago 662MByunweijia python3 31255eafafc3 3 weeks ago 662MBredis latest f1b6973564e9 5 weeks ago 113MBnginx latest c316d5a335a5 5 weeks ago 142MB[yunweijia@localhost ~]$ [yunweijia@localhost ~]$ sudo ctr -n moby i lsREF TYPE DIGEST SIZE PLATFORMS LABELS [yunweijia@localhost ~]$ sudo ctr -n default i lsREF TYPE DIGEST SIZE PLATFORMS LABELS docker.io/library/redis:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:4bed291aa5efb9f0d77b76ff7d4ab71eee410962965d052552db1fb80576431d 10.4 MiB linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x - [yunweijia@localhost ~]$

从上面的执行结果,可以得出结论,ctr下载的镜像不会在docker中显示;同样的,docker下载的镜像,也不会通过moby命名空间来显示出来。

​​docker镜像->ctr镜像​​

可以通过docker tag命令打个标签,然后再push到自己的harbor仓库中,再之后通过ctr i pull 命令进行下载,经过验证是可行的,此处就不再做演示了,有兴趣的小伙伴可以自行验证,harbor仓库的搭建,在我之前的文章中有写,可以翻看历史文章。

​​容器操作​​

c:代表container

t:代表task,和“-t”不要混淆哈,他俩完全不一样

# 启动容器[yunweijia@localhost ~]$ sudo ctr run -t -d docker.io/library/redis:alpine redis# 查看进程[yunweijia@localhost ~]$ sudo ctr c lsCONTAINER IMAGE RUNTIME redis docker.io/library/redis:alpine io.containerd.runc.v2[yunweijia@localhost ~]$ # 查看状态[yunweijia@localhost ~]$ sudo ctr t lsTASK PID STATUS redis 86082 RUNNING[yunweijia@localhost ~]$]$ # 停止运行中的任务[yunweijia@localhost ~]$ sudo ctr t kill redis[yunweijia@localhost ~]$ sudo ctr t lsTASK PID STATUS redis 86082 STOPPED[yunweijia@localhost ~]$ # 删除停止状态的任务[yunweijia@localhost ~]$ sudo ctr t delete redis[yunweijia@localhost ~]$ sudo ctr t lsTASK PID STATUS [yunweijia@localhost ~]$# 删除容器,我们上面删除的只是容器运行的任务[yunweijia@localhost ~]$ sudo ctr c lsCONTAINER IMAGE RUNTIME redis docker.io/library/redis:alpine io.containerd.runc.v2 [yunweijia@localhost ~]$ sudo ctr c delete redis[yunweijia@localhost ~]$ sudo ctr c lsCONTAINER IMAGE RUNTIME [yunweijia@localhost ~]$

​​CRICTL​​

这个很重要,后面我们会经常使用这个命令,这个是k8s提供给我们的一个容器操作命令,类似于docker,且常用命令和docker也是非常相似的,我们下面看看。

[yunweijia@localhost ~]$ sudo crictl imagesIMAGE TAG IMAGE ID SIZE[yunweijia@localhost ~]$ sudo crictl psCONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID[yunweijia@localhost ~]$ sudo crictl podsPOD ID CREATED STATE NAME NAMESPACE ATTEMPT RUNTIME[yunweijia@localhost ~]$ sudo crictl ps -aCONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID[yunweijia@localhost ~]$

以上命令除了pods之外,别的是不是全部是docker所拥有的命令,我们再使用帮忙命令看下,会更加细致,在这里就不进行演示结果了,太多,命令如下:

[yunweijia@localhost ~]$ sudo crictl -h

至此,本文结束,还是要多多锻炼、实践。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:k8s系列-08-kubespray的安装配置
下一篇:银行卡四要素是什么,银行卡四要素认证失败是什么意思
相关文章

 发表评论

暂时没有评论,来抢沙发吧~