Skip to main content

Command Palette

Search for a command to run...

Containerd 1.1.0 尝鲜记

Updated
2 min read

Containerd 1.1.0 的 Kubernetes 支持已经进入可用阶段,Kubernetes 1.10 和未来的的 Docker 版本都会以此为基础,作为一个熟练软件安装工,自然是要先睹为快了。

这里使用 Kubeadm 进行测试。

环境准备

首先进行 Kubeadm 的环境准备:

  1. 安装 libseccomp, conntrack
  2. 关闭防火墙服务
  3. 开启 sysctl:ip_forwardnet.bridge.bridge-nf-call-iptables
  4. 参考官方指南,安装 kubeadm、kubelet 以及 kubectl,此处暂时不启动 kubelet 服务。

安装 contaierd

下载 cri-containerd 1.1.0,并解压,其中包含 /usr/etc 以及 opt 三个目录,这里我们只是用前两个目录的内容,目录结构如下,直接复制即可:

├── etc │ ├── crictl.yaml │ └── systemd │ └── system │ └── containerd.service └── usr └── local ├── bin │ ├── containerd │ ├── containerd-release │ ├── containerd-shim │ ├── containerd-stress │ ├── crictl │ ├── critest │ └── ctr └── sbin └── runc

  • crictl.yaml:crictl 的配置文件,缺省包含一行 runtime-endpoint: unix:///run/containerd/containerd.sock,指定运行时的连接方式。
  • containerd.service:服务文件,设置自动启动即可。
  • ctr:containerd 客户端
  • crictl:cri 客户端
  • runc:运行时,contaienrd 依赖项

这里可以发现,并没有包含 containerd 自己的配置文件,可以使用 containerd config default > /etc/containerd/config.toml 命令,来生成缺省配置文件,然后自行变更。例如可以修改仓库镜像地址

另外对国内用户比较重要的一点是,仍然是可以使用环境变量方式的配置来设置 HTTP_PROXY 以及 NO_PROXY 的内容。

配置完成后,使用 systemctl 启动服务。

载入镜像

  • docker.io/coredns/coredns:1.0.6
  • k8s.gcr.io/kube-proxy-amd64:v1.10.3
  • k8s.gcr.io/etcd-amd64
  • k8s.gcr.io/kube-apiserver-amd64:v1.10.3
  • k8s.gcr.io/kube-controller-manager-amd64:v1.10.3
  • k8s.gcr.io/kube-proxy-amd64:v1.10.3
  • k8s.gcr.io/kube-scheduler-amd64:v1.10.3
  • k8s.gcr.io/pause:3.1

ctr 的镜像载入命令ctr cri load image.tar,似乎不支持 gz。

配置 Kubelet 使用 containerd

简单的在 Kubelet 的环境变量上加入如下内容,再启动 Kubelet 服务:

[Service] Environment="KUBELET_EXTRA_ARGS=--runtime-cgroups=/system.slice/containerd.service --container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"

Kubeadm 集群安装

这里提供一个简单的初始化命令:

kubeadm init \
--pod-network-cidr=192.168.0.0/16 \
--feature-gates CoreDNS=true \
--ignore-preflight-errors=Service-Docker \
--ignore-preflight-errors=SystemVerification \
--kubernetes-version=v1.10.3 # 防止 kubeadm 向服务器查询镜像列表。

Kubeadm 缺省情况下依旧是需要检查 Docker 的运行情况的,因此这里我们使用 --ignore-preflight-errors 开关关闭这项检查。

Master 初始化结束之后,就可以跟随 kubeadm 指示,进入其他节点,运行 kubeadm join 命令来加入集群了,加入命令同样需要设置 --ignore-preflight-errors=all 来规避 Docker 检查。

接下来可以按照自己喜好安装网络插件了。

可以使用 kubectl describe nodes [node name] 来检查节点信息:

... Container Runtime Version: containerd://1.1.0 Kubelet Version: v1.10.3 Kube-Proxy Version: v1.10.3 PodCIDR: 192.168.0.0/24 ...

这里可以看到,运行时已经更新为 containerd://1.1.0

后记

正如在前面文章提到的,containerd 并非 Docker 的替代品,只是一个子集,独立使用是很困难的,因此还是比较适合用于 Kubelet 控制之下的容器运行支持。

下载链接以及参考链接

  • cri-containerd 1.1.0https://storage.googleapis.com/cri-containerd-release/cri-containerd-1.1.0.linux-amd64.tar.gz
  • kubeadm 安装指南https://kubernetes.io/docs/tasks/tools/install-kubeadm/
  • containerd 安装指南https://github.com/containerd/containerd/releases
  • Containerd 1.1.0 的 Kubernetes 支持已经进入可用阶段https://blog.fleeto.us/post/kubernetes-containerd-integration-goes-ga/

More from this blog

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

僭越了,有人在用 Rust 写 Kubernetes

一个新语言问世,最爱做的事情之一,就是重写存量软件了。 云原生喝酒 SIG 重点扶持项目——rk8s(https://github.com/rk8s-dev/rk8s) 也可以归在这个范畴里,只不过这个项目重写的东西比较大,是 Kubernetes。 从 2025 年 1 月第一个 Commit 开始,到现在有了 200 多次 Commit,十几万行代码。当然距离 Kubernetes 的几百万行代码还差得远——老马就是喜欢整这种大无畏项目。 另外该项目也是国内第一个脱离 Cargo 转向使用 ...

Sep 27, 20253 min read

【伪】架构师

342 posts