前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >弃用docker之后你的k8s用哪种容器runtime?

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

作者头像
有点技术
发布2020-12-22 11:15:42
3K0
发布2020-12-22 11:15:42
举报
文章被收录于专栏:有点技术有点技术有点技术

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

现有的各种运行中,containerd必然成为大家后续的选择,docker也将会将一些功能复制到containerd,这里为大家介绍下containerd以及k8s如何使用containerd作为容器运行时。docker本身也是调用containerd进行容器管理。

containerd也是行业标准的容器运行时,由docker捐献,具有简单性,健壮性和可移植性等特点。可作为Linux和Windows的守护程序使用,可以管理其主机系统的完整容器生命周期:镜像传输和存储,容器执行和监控,低级存储和网络附件等。

containerd是CNCF毕业项目

containerd旨在嵌入到更大的系统中,而不是由开发人员或最终用户直接使用。

containerd部署

•部署

这里选用centos8 yum安装

yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repoyum install -y containerd.iomkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.toml

•启用systemd作为cgroup driver

修改/etc/containerd/config.toml

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]  ...  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]    SystemdCgroup = true

kubeadm使用containerd

对于k8s来说只需要指定kubelet参数

--container-runtime-endpoint=unix:///run/containerd/containerd.sock

对于kubeadm来说指定参数cri-socket

kubeadm init --image-repository=registry.aliyuncs.com/google_containers --cri-socket=/run/containerd/containerd.sock --node-name=192.168.9.235

或指定配置

nodeRegistration:  criSocket: /run/containerd/containerd.sock

对于国内同学来说需要注意,我们通常通过--pod-infra-container-image为kubelet指定pause镜像地址,这里需要注意该参数的说明

--pod-infra-container-image string                         The image whose network/ipc namespaces containers in each pod will use. This docker-specific flag only works when container-runtime is set to docker. (default "k8s.gcr.io/pause:3.2")

只针对docker生效,所以我们无法修改pause镜像的地址,必须要使用名为k8s.gcr.io/pause:3.2的镜像,当我们使用containerd时,需要先拉好镜像。

ctr --namespace k8s.io image pull registry.aliyuncs.com/google_containers/pause:3.2ctr --namespace k8s.io image tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

containerd的管理

crictl

crictl 是 CRI 兼容的容器运行时命令行接口。你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。crictl 和它的源代码在 cri-tools 代码库。可以从 cri-tools的发布页面[1] 获取

crictl可以通过以下方式指定配置

•通过设置全局选项标志--runtime-endpoint(-r)和--image-endpoint(-i)•通过设置环境变量CONTAINER_RUNTIME_ENDPOINT和IMAGE_SERVICE_ENDPOINT•通过在配置文件中设置端点 --config=/etc/crictl.yaml

配置示例:

/etc/crictl.yamlruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: true

其他功能大家看help都能get到要点

ctr

ctr是用于与containerd守护程序进行交互,用于不受支持的调试和管理功能的客户端。因为不受支持,所以不能保证命令,选项和操作的向后兼容性。它可以实现一些cri不支持的功能,例如上面提到的tag功能。ctr还有namespace概念,对于crictl默认namespace是k8s.io

--namespace 与命令一起使用的名称空间

查看命名空间

ctr ns lsNAME    LABELSdefaultk8s.io

命名空间之间镜像/容器时不可见的,所以不指定命名空间ctr命令就不能看到k8s的容器和镜像。

微信

引用链接

[1] cri-tools的发布页面: https://github.com/kubernetes-sigs/cri-tools/releases

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有点技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • containerd部署
  • kubeadm使用containerd
  • containerd的管理
    • crictl
      • ctr
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档