GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Docker 出局?你还有 iSula、Containerd 和 CRI-O

2020 年 12 月 17 日

Docker出局?你还有iSula、Containerd和CRI-O

Docker 真的要被 Kubernetes 社区剔除了吗?


最近,Kubernetes 在 1.20 版本中 的 ChangeLog 提到将在未来的版本中废弃 Docker 作为容器运行时,这个事情在全球都闹得沸沸扬扬。


那么,Kubernetes 要在 v1.20 开始弃用 docker 了?其实是 Kubernetes 弃用 kubelet 中集成的 dockershim 模块,也就是说不再将 docker 作为默认的 Container Runtime,不过 Kubernetes 应该还是可以通过外接方式使用 Docker 的,感兴趣的同学可以通过以下链接了解个中缘由:


  • 「Dockershim Deprecation FAQ」: https://kubernetes.io/blog/2020/12/02/dockershim-faq

  • 「Don't Panic: Kubernetes and Docker」: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker

对于使用 Docker 的 KubeSphere 用户有没有影响


该消息一出,社区里就有很多用户小伙伴问我们对 KubeSphere 的使用有没有影响,土耳其的合作伙伴也联系我们希望提供一个官方声明。



dockershim 一直都是 Kubernetes 社区为了能让 Docker 成为其支持的容器运行时,所维护的一个兼容程序。本次所谓的废弃,也仅仅是 Kubernetes 要放弃对现在 Kubernetes 代码仓库中的 dockershim 的维护支持。以便其可以像开始时计划的那样,仅负责维护其 CRI ,任何兼容 CRI 的运行时,皆可作为 Kubernetes 的 runtime,例如 Isula、CRI-O、Containerd 等。


目前,KubeSphere 容器平台默认使用 Docker 作为 Kubernetes 的容器运行时,同时也支持任何兼容 CRI 接口的具体实现。对于已经使用 Docker 的 KubeSphere 用户来说,这一事件对用户已有系统的运行不会有任何影响,也不会对将来的集群部署和业务产生影响,KubeSphere 用户可以根据需求选择继续使用已被大规模验证过的 Docker,或是选择目前比较流行的 Isula、Containerd、CRI-O 等新的容器运行时。在后续版本,KubeSphere 的 DevOps 等功能组件也将逐步支持这些容器运行时,并在未来将支持生产环境中使用这些 CRI。


下一代容器运行时 iSula、Containerd 和 CRI-O



iSula


iSula https://openeuler.org/zh/docs/20.09/docs/Container/iSula)是由 openEuler 社区开源的容器引擎,iSula 相比 Docker 是一种新的容器解决方案,提供统一的架构设计来满足 CT 和 IT 领域的不同需求。相比 Golang 编写的 Docker,轻量级容器使用 C/C++ 实现,具有轻、灵、巧、快的特点,不受硬件规格和架构的限制,底噪开销更小,可应用领域更为广泛。


Containerd


Containerdhttps://containerd.io)是一个 CNCF 毕业项目,目前也是工业级标准的容器运行时,它极为简单、健壮并且具备可移植性。Containerd 可以在宿主机中管理完整的容器生命周期。


CRI-O


CRI-Ohttps://cri-o.io)是由红帽发起并开源的一款容器运行时,是面向 Kubernetes 的 OCI(Open Container Initiative)的容器运行时,CRI-O 能够让 Kubernetes 使用任意兼容 OCI 的运行时作为运行 Pod 的容器运行时,CRI-O 本身也是 CRI-runtime。

部署 iSula、Containerd 和 CRI-O


在文章开头提到 KubeSphere 是支持任何兼容 CRI 接口的具体实现,接下来我们动手实践验证一下 3 个不同容器运行时:Containerd、CRI-O、iSula 的安装,以及对接 KubeSphere 进行查看与验证。


首先部署容器运行时,可根据需要在 Containerd、CRI-O、iSula 中任选其一。若部署多节点集群,注意集群中所有节点的容器运行时应保持一致。


Containerd


  1. 安装 runc。


$ curl -OL https://github.com/opencontainers/runc/releases/download/v1.0.0-rc92/runc.amd64$ mv runc.amd64 /usr/local/bin/runc && chmod +x /usr/local/bin/runc
复制代码


    1. 下载 Containerd 安装包。

    $ curl -OL https://github.com/containerd/containerd/releases/download/v1.4.3/containerd-1.4.3-linux-amd64.tar.gz$ tar -zxvf containerd-1.4.3-linux-amd64.tar.gz -C /usr/local$ curl -o /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/cri/master/contrib/systemd-units/containerd.service
    复制代码


    1. 配置 Containerd。


    $ mkdir -p /etc/containerd
    $ cat > /etc/containerd/config.toml << EOF[plugins] [plugins."io.containerd.grpc.v1.cri"] sandbox_image = "kubesphere/pause:3.2" [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry-1.docker.io"] ## 这里可替换成dockerhub的镜像加速器EOF
    $ systemctl enable containerd && systemctl restart containerd
    复制代码


    1. 安装 crictl。


    $ VERSION="v1.19.0"
    $ curl -OL https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
    $ sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
    $ rm -f crictl-$VERSION-linux-amd64.tar.gz
    复制代码


    1. 配置 crictl。


    $ cat > /etc/crictl.yaml << EOFruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 2debug: falsepull-image-on-create: falseEOF
    复制代码


    CRI-O


    1. 下载安装 CRI-O。


    $ yum install git make
    $ curl -OL https://github.com/cri-o/cri-o/releases/download/v1.18.4/crio-v1.18.4.tar.gztar -zxf crio-v1.18.4.tar.gz
    $ cd crio-v1.18.4
    $ mkdir -p /etc/crio /opt/cni/bin /usr/local/share/oci-umount/oci-umount.d /usr/local/lib/systemd/system
    $ make install
    $ echo "fs.may_detach_mounts=1" >> /etc/sysctl.conf
    $ sysctl -p
    复制代码


    1. 配置 CRI-O。



    $ vi /etc/crio/crio.conf
    复制代码


    找到如下参数进行修改


    pause_image = "kubesphere/pause:3.2"registries = [  "docker.io"       ## 这里可替换成dockerhub的镜像加速器]
    复制代码


    1. 启动 CRI-O。


    systemctl enable crio && systemctl restart crio
    复制代码


    安装 iSula(操作系统使用 openEuler 20.09)


    1. 在 openEuler 20.09 系统安装 iSula。


    $ yum install iSulad -y
    复制代码


    2. 配置 iSula。


    $ vim /etc/isulad/daemon.json
    复制代码


    3. 对如下参数进行修改。


    "registry-mirrors": [    "docker.io"           ## 这里可替换成dockerhub的镜像加速器 ]"pod-sandbox-image": "kubesphere/pause:3.2""network-plugin": "cni""cni-bin-dir": "/opt/cni/bin""cni-conf-dir": "/etc/cni/net.d"
    复制代码


    1. 启动 iSula。


    $ systemctl enable isulad && systemctl restart isulad
    复制代码


    KubeKey 部署 K8s + KubeSphere


    我们使用 KubeSphere 开源的集群安装工具 KubeKey 来快速部署 KubeSphere + Kubernetes 集群。


    1. 下载 KubeKey。


    这里暂时使用 kubekey v1.1.0-alpha.1 部署 Kubernetes 集群,该版本为预览版,支持多 container-runtime 也会包含在后续的正式版本中。


    $ curl -OL https://github.com/kubesphere/kubekey/releases/download/v1.1.0-alpha.1/kubekey-v1.1.0-alpha.1-linux-amd64.tar.gz
    $ tar -zxvf kubekey-v1.1.0-alpha.1-linux-amd64.tar.gz
    复制代码


    1. 创建配置文件。


    ./kk create config # 默认在同级目录下生成 config-sample.yaml
    复制代码


    3. 根据具体的机器环境信息修改配置文件,本文仅对配置 Docker 以外的 CRI 进行说明,其它配置项请参考 KubeSphere 官方文档(https://kubesphere.io/docs)。



    1. 一键部署集群。


    ./kk create cluster -f config-sample.yaml  --with-kubesphere v3.0.0
    复制代码


    访问 KubeSphere 验证不同的 CRI


    当以上 3 个集群部署完成后,可分别登录该集群的 KubeSphere 控制台,进入「集群节点页面」,查看集群节点所使用的容器运行时。



    iSula on openEuler 20.09



    Containerd



    CRI-O



    参考


    • KubeSphere GitHub: https://github.com/kubesphere/kubesphere

    • KubeSphere 中文论坛:https://kubesphere.com.cn/forum/d/3054-dockerkubernetes

    • Kubernetes 官方博客: https://kubernetes.io/blog/2020/12/02/dockershim-faq

    • K8S 弃用 Docker 了?Docker 不能用了?别逗了:https://mp.weixin.qq.com/s/z6s4QliBHs08pVj0GQ03dw



    头图:Unsplash

    作者:KubeSphere

    原文基于 KubeSphere 部署 TiDB 云原生分布式数据库

    来源:KubeSphere - 微信公众号 [ID:gh_4660e44db839]

    转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    2020 年 12 月 17 日 22:492070

    评论

    发布
    暂无评论
    发现更多内容

    Too many open files 的四种解决办法

    陈迪

    多方安全计算:隐私保护集合求交技术

    华为云开发者社区

    数据集 PSI 隐私保护集合交集 可信 伪随机函数

    5G进京 “赶考”记:“占得上、保持稳、体验优、信号好”四道考题,分别打几分?

    脑极体

    uniapp 使用原生子窗体进行视频聊天

    anyRTC开发者

    uni-app 音视频 WebRTC RTC

    太香!终于有阿里大牛用677页笔记,把Java程序性能优化讲明白了

    周老师

    Java 编程 程序员 架构 面试

    墨奇科技宣布完成 2.5 亿元 B 轮融资

    商业资讯

    “为爱而生 温暖陪伴”——2021年中国洗地机行业发展峰会圆满落幕

    DT极客

    并行文件存储和分布式 NFS 文件存储有何不同

    焱融科技

    云原生 高性能 文件存储 容器存储 技术博客

    This BigData,Hadoop组成及生态

    Simon郎

    大数据 hdfs YARN hadoop3 大数据MapReduce

    GitHub开源史上最大规模中文知识图谱

    不脱发的程序猿

    人工智能 自然语言处理 GitHub 开源项目 中文知识图谱

    不给电脑,我用手机敲命令十分钟完成了zabbix监控,面试官当场下offer

    互联网老辛

    监控 zabbix

    融云2021 X-Meetup技术沙龙 探讨音视频技术新方向

    融云 RongCloud

    持续霸榜GitHub的面试神器:字节跳动Java面试参考手册,限时开源

    周老师

    Java 编程 程序员 架构 面试

    亿级系统的Redis缓存如何设计?

    Java架构师迁哥

    中公、马士兵、千锋、拉勾入局,腾讯课堂“薪选”IT人才培养按下加速键

    DT极客

    快成物流科技 x mPaaS | 小程序容器加持下的技术架构“提质增效”

    蚂蚁集团移动开发平台 mPaaS

    小程序 mPaaS 移动开发平台

    生产者消费者服务管理实践!API网关实现服务聚合详解

    攻城狮Chova

    api 网关 生产者与消费者 5月日更

    国内日志监控分析王者之sls

    代码先生

    分布式日志 海量数据分析 日志监控分析

    RDBMS与HBase的对比

    五分钟学大数据

    大数据 HBase 5月日更

    Arction图表控件LightningChart.NET中如何创建显示财务数据的2D StockSeries图表

    Geek_bacee5

    数据可视化 LightningChart.NET Arction 图表控件 LightningChart

    Pulumi 如何在 Windows 环境中设置

    HoneyMoose

    分布式文件系统怎么做?终于有个人把分布式文件上传讲清楚了

    攻城狮Chova

    fastdfs 文件服务 5月日更

    同源策略引发的跨域问题它都能轻松解决!先来认识认识有这么强大功能框架的神奇之处

    攻城狮Chova

    nginx 5月日更

    Arction高性能图表控件LightningChart.NET如何正确清理内存资源

    Geek_bacee5

    数据可视化 LightningChart.NET Arction 图表控件 LightningChart

    🚄【Redis 干货领域】帮你完全搞定Sentinel运作原理

    李浩宇/Alex

    redis哨兵模式 redis哨兵 redis哨兵集群 redis sentinel 5月日更

    关于OpenHarmony 2.0共建进展

    罗燕珊

    鸿蒙 开源项目 OpenHarmony

    一张图看懂嵌入式系统组成

    不脱发的程序猿

    硬件开发 嵌入式系统 嵌入式学习路线

    Arction高性能图表控件LightningChart关于极坐标图配置问题解答

    Geek_bacee5

    数据可视化 Arction 图表控件 LightningChart 极坐标图配置问题解答

    「Adobe国际认证」Adobe Photoshop调整照片的颜色强度

    Adobe国际认证

    云小课|DSC帮您管数据,保障您的云上数据安全

    华为云开发者社区

    数据安全 华为云 数据安全中心 云上数据 DSC

    拍乐云将亮相 QCon 大会,揭秘音视频“两高一低”体验背后的技术

    拍乐云Pano

    Docker出局?你还有iSula、Containerd和CRI-O-InfoQ