专栏首页伪架构师Containerd 1.1.0 尝鲜记

Containerd 1.1.0 尝鲜记

这里使用 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/

本文分享自微信公众号 - 伪架构师(fake-architect),作者:崔秀龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用 Python 脚本拉取 Docker 镜像

    好久没有介绍小工具了,今天碰到一个,简单粗糙但是有用的一个,这个工具有多简单粗糙呢?证据有二:

    崔秀龙
  • (译)kubectl 的奇技淫巧

    Kubectl 是 Kubernetes 最重要的命令行工具。在 Flant,我们会在 Wiki 和 Slack 上相互分享 Kubectl 的妙用(其实我们还...

    崔秀龙
  • 可能是最适合自定义的 Pipeline:Tekton

    持续集成是云原生应用的支柱技术之一,因此在交付基于云原生的一些支撑产品的时候,CICD 是一个无法拒绝的需求。为了满足这种需要,自然而然会想到对 Jenkins...

    崔秀龙
  • Containerd 的前世今生和保姆级入门教程

    很久以前,Docker 强势崛起,以“镜像”这个大招席卷全球,对其他容器技术进行致命的降维打击,使其毫无招架之力,就连 Google 也不例外。Google 为...

    米开朗基杨
  • 扩展 Kubernetes 之 CRI

    使用 cri-containerd 的调用流程更为简洁, 省去了上面的调用流程的 1,2 两步

    王磊-AI基础
  • containerd与kubernetes集成

    由于docker嵌入了太多自身内容,为了减轻容器负担。此次选用containerd作为kubernetes的容器实现方案。本文将带大家讲述如何搭建一个集成了co...

    sealyun
  • 弃用docker之后你的k8s用哪种容器runtime?

    在k8s取消内置dockershim代码,取消了对docker的支持后,用户无非重新选择一个运行时,不必过度惊慌!

    有点技术
  • warning insecure world writable dir ruby mode 040777,gem insstal sass error failed to build gem nati

    不知道homebrew的不要问我,因为我也不知道是什么鬼。应该和忍者影分身一种鬼东西。

    landv
  • 探索通用可编程数据平面

    相比传统网络数据平面,通用可编程数据平面让网络用户可以自定义数据包的完整处理流程,实现理想的协议无关网络数据处理。而当下的OpenFlow模型还无法成为一种完全...

    博文视点Broadview
  • 【Pod Terminating原因追踪系列之三】让docker事件处理罢工的cancel状态码

    岳家瑞,腾讯云后台开发工程师,日常负责K8s生态和运行时相关工作,包括K8s插件开发和运行时问题排查。

    腾讯云原生

扫码关注云+社区

领取腾讯云代金券