如何优雅地使用containerd?这里有一份必读的技巧攻略

前 言

Docker是我们常用的容器runtime,友好的CLI,丰富的社区资料,外加研发运维人员多年的经验积累,使用Docker几乎是没有任何门槛的事。而k3s为了降低资源消耗,将默认的runtime修改为containerd,虽然containerd很早就已经是Docker的一部分,但是纯粹使用containerd还是给大家带来了诸多困扰。本文收集了一些社区常见的containerd问题,寻求到解决方案后整理成文,供大家需要时查阅。

入门简介

我们都知道Kubernetes定义了自己运行时接口规范CRI,containerd虽然具备容器管理能力,但是不能被直接被Kubernetes使用。k3s作为Kubernetes的精简版本,也是如此,k3s自身的kubelet通过cri-containerd plugin(https://github.com/containerd/cri)来驱动containerd创建Pod。

单纯的Containerd没有Docker CLI,对于经常使用Docker的用户来说,一下就会感到不习惯。根据CRI规范,Kubernetes社区也定义了专门CLI工具crictl(https://github.com/kubernetes-sigs/cri-tools)。k3s中也内置了crictl,它被直接编译到k3s binary中,你在安装k3s时,会自动创建crictl的软连接。crictl具备了和Docker CLI类似的功能:

除了crictl,k3s还内置了ctr(https://github.com/containerd/containerd/tree/master/cmd/ctr),ctr是containerd本身的CLI,更对容器和镜像API的基本封装:

目前k3s的containerd使用的runc-v2版本,这个版本有个巨大的优化就是针对每个Pod创建containerd-shim进程。以Traefik Pod为例,pause容器和traefik容器都是containerd-shim的子进程,这种进程划分方式更加合理,对Kubernetes更加友好。

常用技巧

containerd相关的CLI确实没有Docker CLI方便,比如笔者在使用containerd时碰到一个场景,期望实现对镜像重新tag的操作,这在Docker下非常容易做到,但是在containerd下非常麻烦。crictl中并不支持这种操作,社区中也有相关issue解释:

https://github.com/kubernetes-sigs/cri-tools/issues/438

所以我们只能使用其他方式,通常我会这样做:

# 在一台机去上使用docker tag转换image
# 导出镜像,并拷贝到k3s机器上
docker tag busybox busyboxaaa
docker save -o busybox.tar busyboxaaa
scp busybox.tar [email protected]:~/

# 用ctr导入
ctr image import busybox.tar

k3s集成的containerd的配置文件被存放在 /var/lib/rancher/k3s/agent/etc/containerd/config.toml 中,但是如果要修改其配置不能单纯修改它,你需要通过模版修改它:

cd /var/lib/rancher/k3s/agent/etc/containerd
cp config.toml config.toml.tmpl

# update config.toml.tmpl
# reboot k3s to take affect
systemctl restart k3s

通常来说,我们都会在本地环境使用k3s,使用私有Registry也是不可避免的,Docker中配置私有registry是非常方便的,而在containerd中该如何配置?关于containerd的registry配置请参考:

https://github.com/containerd/cri/blob/master/docs/registry.md

值得一提的是一个特殊场景,通常你会在内网在用registry镜像启用一个镜像仓库服务,为了简单方便,你可以不启用tls证书而单纯使用http模式。这种情况下,k3s有一个方便的配置方式,即编辑/etc/rancher/k3s/registries.yaml,比如:

$ cat /etc/rancher/k3s/registries.yaml
mirrors:
  "172.31.7.129:5000":
    endpoint:
      - "http://172.31.7.129:5000”

$ systemctl restart k3s

重启后,containerd的配置会出现变化,直接使用crictl命令即可拉取镜像:

后 记

从业界的技术发展趋势上看,Docker越来越被Kubernetes社区所抛弃,以实现CRI接口的各种容器runtime会与Kubernetes兼容性越发友好。Docker本身的迭代速度已经无法满足容器的发展,k3s直接使用containerd可以很快跟踪各种容器技术本身的新特性,对技术人员来说,尽早适应Docker以外的runtime,才能跟上社区主流的前进方向。

原文地址:https://www.cnblogs.com/k3s2019/p/12118489.html

时间: 2024-08-07 20:22:17

如何优雅地使用containerd?这里有一份必读的技巧攻略的相关文章

NET经典书籍必读

C#与.NET框架,入门 + 进阶 + 精通,外加并发编程实例,10本C#图书,一本都不能少. 1.<Learning hard C#学习笔记> 作者:李志  书号:978-7-115-38292-4  定价:49.00元  开本:16  页数:304 博客园超人气博主.微软MVP.资深.NET软件开发工程师Learning hard告诉你怎么学习C#!一书在手,C#不愁! “本书是作者亲身学习经历的真实总结,很适合C#和.NET初学者.Web开发工程师以及计算机专业的学生阅读.作者从不爱学习

C#精粹,一本都不能少

C#与.NET框架,入门 + 进阶 + 精通,外加并发编程实例,8本C#图书,一本都不能少. 1.<Learning hard C#学习笔记> 作者:李志 书号:978-7-115-38292-4 定价:49.00元 开本:16 页数:304 博客园超人气博主.微软MVP.资深.NET软件开发工程师Learning hard告诉你怎么学习C#!一书在手,C#不愁! "本书是作者亲身学习经历的真实总结,很适合C#和.NET初学者.Web开发工程师以及计算机专业的学生阅读.作者从不爱学习

如何优雅的用Python玩转语音聊天机器人

一名极客运维人员,走在脑洞大开的路上.... Python聊天机器人:可以感应人是否存在,识别语音,通过图灵API语音回答 -------------------------上图镇楼---------------------------- [详细攻略] 所需硬件: 树莓派B+ 人体红外线感应模块 内置麦克风摄像头(实测树莓派免驱淘宝链接) 申请API: 百度语音api 图灵api 语音聊天机器人实现原理:当有人来到跟前时-->触发聊天功能,开始以每2s检测录制语音-->通过百度语音api合成文

微信小程序源码下载(200多个)

微信小程序源码下载汇总,点击标题进入对应的微信小程序下载页面. 最新 demo源码(点击标题进入帖子下载) 描述 1 微信小程序 会议室预定小程序 微信小程序 会议室预定小程序**** 本内容被作者隐藏 **** 2 微信小程序-双人五子棋小游戏 微信小程序-双人五子棋小游戏**** 本内容被作者隐藏 **** 3 打卡签到小程序 用微信小程序实现的一个简单的打卡签到的小程序拒绝 4 微信小程序---左滑删除 微信小程序---左滑删除**** 本内容被作者隐藏 **** 5 一个借钱的记事本的微

【黄山-宏村攻略】

眼看着就要大四各自出去实习了,之后一宿舍聚在一起的机会就少之又少了,然后就趁着五一,拼一下假期,五天游玩 黄山 ,自己做的攻略发出来跟网友分享下. 因为还是在校学生,所以奔着  安全第一,节省第二,欢乐第三的原则.                                                                                                   103宿舍五一出行黄山攻略 福州北站2016.4.27下午16.14出发历史2.5小时抵

java异常面试常见题目

在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的常客.关于Java中Error和Exception的面试题目多是关于Exception和Error的概念,如何处理Exception,以及 处理Exception时需要遵守的最佳实践等等.尽管关于多线程.垃圾回收.JVM概念和面向对象设计等方面的问题依然主宰着这类面试,你仍然需要为回答

27 岁的程序员应该怎么从发型、着装上提升自己?

金城武披上一件吊儿郎当的白汗衫碾压众生,马云往西装外套里塞进一坨人神共愤的红毛衣丑成新闻,在我看来,他们的选择都非常高明.他们通过许多诸如此类简单的小动作强调着自己有这样做的资格,向外散播着他们真正想要传达的信息——「英俊到无须后天雕琢,成功到裸奔也能像个领袖.」 人与人的区别有时候比蚱蜢和扇贝之间的区别还大,到底应该怎么打扮自己,我们要跳出问题去看问题. 手机流量不太够的朋友可以放心,我不会贴很多图来分析各种搭配的细节,因为我觉得所有关于如何通过发型着装提升自己的讨论不能局限在审美中,不能停留

Stay教你程序员泡妞攻略

七天大长假,得瑟的人们又要粗来秀恩爱晒旅途了,苦逼的程序员们要么加班(说好的三倍呢),要么宅家自lu.想想都觉得悲哀.一来我们抱怨生活只有代码,二来只让代码充斥自己的生活.在Stay看来,学会生活要比学会技术重要的多. 如果你认为努力学好技术就能超越Stay,那就too young too simple了.言归正传,今天要跟我们特殊的程序员群体说下怎么泡妞.以下技巧不仅仅对程序员适用. 首先你得有妞,然后扭一扭,泡一泡,舔一舔,然后就是你从岛国片上学到的内容了. 先花点时间想想你周围每天是些什么

一代女皇,你值得拥有哦,大学的第一桶

有兴趣加我入团志愿书找不到了怎么办?大学不还要用呢.无语=_=大神,求助啊-- 可以补办吗? 可以不邮寄吗?暑假清闲,作为学姐开个贴,给大一新生的学弟学妹们一些大学里的忠告吧 分想学园林或园艺环境设计,能进哪个学校好希望可以遇见这样一个你,在我最美好的时光里遇见你,我们一起努力,我的初恋我在等你只要你缺钱我们就有故事有没有北京理工大学珠海学院的师兄或师姐或者被录取的新生.请问本科第二批预科录取了吗???很急,希望同学们帮帮忙,告诉我一下,谢谢了...有谁是级中国社会科学院大学本科生? 联系一下吧