[转帖]k8s系列-06-containerd的基本操作

k8s,系列,containerd,基本操作 · 浏览次数 : 0

小编点评

## 使用容器操作的步骤: 1. 下载并安装 libseccomp 版本 2.5.1: ```bash sudo rpm -ivh libseccomp-2.5.1-1.el8.x86_64.rpm ``` 2. 查看现有版本: ```bash sudo rpm -qa | grep libseccomplibseccomp-2.5.1-1.el8.x86_64 ``` 3. 下载镜像: ```bash sudo ctr i pull docker.io/library/redis:alpine ``` 4. 查看镜像信息: ```bash sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE ``` 5. 创建命名空间: ```bash sudo ctr ns -hNAME: ``` 6. 添加标签: ```bash sudo ctr -n moby i lsREF TYPE DIGEST SIZE PLATFORMS LABELS ``` 7. 下载特定镜像: ```bash sudo ctr -n default i lsREF TYPE DIGEST SIZE PLATFORMS ``` 8. 使用 label 来拉取镜像: ```bash sudo ctr -n moby i lsREF TYPE DIGEST SIZE PLATFORMS ```

正文

https://www.jianshu.com/p/52a2884594f5

 

上一篇我们介绍了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

 

这个是说缺少依赖包 libseccomp ,需要注意的是centos 7中yum下载的版本是2.3的,版本不满足我们最新containerd的需求,需要下载2.4以上的,故而我这里提供一个2.5.1的版本,公众号“运维家”后台回复“libseccomp”即可获得下载地址。

卸载旧版本:

 

[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# 查看现有镜像[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仓库的搭建,在我之前的文章中有写,可以翻看历史文章。

容器操作

剩余内容请转至VX公众号 “运维家” ,回复 “114” 查看。

与[转帖]k8s系列-06-containerd的基本操作相似的内容:

[转帖]k8s系列-06-containerd的基本操作

https://www.jianshu.com/p/52a2884594f5 上一篇我们介绍了containerd的安装,本篇我们来简单介绍下如何进行使用。 环境 linux服务器 前置安装 躺过的坑,需要安装下面内容,否则执行ctr run的时候会报错如下: ctr: failed to crea

[转帖]k8s 服务注册与发现(一)DNS

文章目录 什么是DNS域名层级域名服务器 工作原理反向代理水平扩展集群中的 DNS......DNS劫持 什么是DNS 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UD

[转帖]kubelet 原理解析四:probeManager

https://segmentfault.com/a/1190000022163835 概述 在Kubernetes 中,系统和应用程序的健康检查任务是由 kubelet 来完成的,本文主要讨论kubelet中 probemanager 相关的实现原理。 如果你对k8s的各种probe如何使用还不了

[转帖]k8s发布Spring cloud+eureka架构服务优雅启动停止方案

本文转载自昆仑枫的简书https://www.jianshu.com/p/6d393cbb694a Spring cloud+eureka是目前微服务主流解决方案之一,kubernetes则是广泛应用的发布工具,两者结合使用很常见。而两者结合时如何优雅启停从而实现无感发布很关键。下面将从不做特殊处理

[转帖]K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

https://www.cnblogs.com/cheyunhua/p/15619317.html 一、Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序

[转帖]k8s部署有状态应用redis-cluster集群踩坑总结

https://segmentfault.com/a/1190000039196137 redis-cluster集群的部署网上一堆,用k8s部署也不在少数,但都是抄来抄去,问题不少,实际操作分享出来的还是太少。 1、redis启动配置文件,使用CofigMap来管理比较方便,redis-confi

[转帖]k8s-mtu设置不当引发的线上故障

https://www.cnblogs.com/zisefeizhu/p/16611626.html 背景 在部署新的paas平台线上环境时,突发consul和es中间件无法创建。 排查过程 以consul 通过查询k8s集群中pod状态发现原来3pod的consul集群,其中2个pod一直重启。

[转帖]K8S集群内部 无持久化Redis单节点配置文件

K8S集群内部 无持久化Redis单节点配置文件 apiVersion: apps/v1 kind: Deployment metadata: name: redis-deploy spec: selector: matchLabels: prod: redis replicas: 1 templa

[转帖]k8s证书永不过期

https://www.cnblogs.com/fengzi7314/p/15909220.html 第一步,在github上下载对应的版本,我的是1.22版本,所以选的是1.22版本 第二步,下载到本地解压 第三步,进入目录编辑文件,修改为100年 cd kubernetes-1.22.0/ vi

[转帖]k8s之udp丢包问题

https://www.jianshu.com/p/6a5faee4cc65 image.png 测试仪发送某种类型的报文进行性能测试,报文目的mac为VF的mac。对于发出去的每个报文,必须在3s内收到响应,否则认为丢包,会重新发送一次,此时会有retransmit的统计。 pod A有两个网卡,