【云原生】容器方案 isula、containerd 基本功能测试

isula、containerd 基本功能测试

测试环境

  • 树莓派 4B
  • CPU: Cortex-A72 4C
  • RAM: 8G
  • SD卡: 128G C10 A1 U3
  • OS: openEuler-22.03
  • Docker: 20.10.17
  • iSula: 2.0.7
  • Containerd: 1.6.6

除 Docker 外没有集成网络组件,isula 与 containerd 均使用 host 网络测试。

测试情况

containerd openEuler 源均为 1.2 版本太低.

  1. 从 docker 官方源安装 containerd.io 1.6.6-3.1.el7 涉及依赖:container-selinux policycoreutils selinux-policy selinux-policy-targeted
  2. 安装 container networking-plugins , oe源版本 0.8.6-5 版本太低, network 组件不可用, 使用来自 nerdctl 仓库源 https://github.com/containerd/nerdctl/releases/download/v0.21.0/nerdctl-full-0.21.0-linux-arm64.tar.gz
  3. 安装 iptables

问题与可能解决方法:

  • 日志:由于 containerd 不支持 docker plugins loki 日志收集服务不可用, 可替换为使用 promtail 直接从本地收集日志.
  • 启动方式:nerdctl compose 代替 docker-compose .

nerdctl compose up -d 启动之后, 基本服务可用(只测试了上传下载)

使用 containerd 替换 docker 需要进行以下操作:

  • containerd 高版本 rpm 打包并推入仓库
  • container networking-plugins 高版本 rpm 打包并推入仓库
  • nerdctl 打包为 rpm 并推入仓库
  • nerdctl iptables container-selinux policycoreutils selinux-policy selinux-policy-targeted containerd containernetworking-plugins 加入 os 构建
  • system-agent 中调整 docker network create 为 nerdctl network create
  • system-agent 中调整 docker-compose 相关操作为 nerdctl compose
  • system-agent 中检测 docker 服务是否启动的相关操作更换为检测 containerd 是否启动
  • system-agent 中监听的 docker0 Ip 需要修改为 nerdctl ip

资源占用:

  • containerd 本身资源占用比 docker 小,但为了兼容 docker-compose 的模式,引入 nerdctl 做 containerd 兼容 docker-compose.yml 文件的解析方式,每个容器都会启动一个 nerdctl 的子进程来存储配置、存储日志、调用 cni 创建网络等,导致实际占用的总体内存稍高于 dockerd + docker-driver + docker-proxy 所占用的内存。
  • containerd 共计 490-510MB,isulad 共计 450-480MB,docker 共计 380M-420M。(如使用 ctr/isula 直接创建 host 模式 containerd/isula 的容器,containerd 守护进程共约 70-80MB,isulad 共计 30-40MB,期中 containerd 和 isula 均无网络等相关配置,仅能使用 host 网络,或使用 cni 接入 bridge 网络。)

启动速度:

  • nerdctl 不支持 healthcheck 和 loki 日志插件,启动速度对比中将 docker-compoase.yml 中引用的 loki 插件和 healthcheck 相关配置去除
  • containerd 使用 nerdctl 启动 docker-compose.yml 速度较快,10s 内
  • docker-compose 启动 docker-compose.yml 速度较快,20s 内,大致差距在与解析 docker-compose.yml 的速度
  • nerdctl 调用链 nerdctl -> containerd + cni -> shim-runc -> runc
  • docker-compose 调用链接 docker-compose -> dockerd -> containerd -> shim-runc -> runc

使用 host 问题与可能解决方法:

  • 使用 ctr 直接创建容器,host 本机网络模式启动,需修改 gateway 转发地址,与各模块容器端口,启动方式无法使用 compose 文件,需要执行命令启动。
  • 端口暴露的问题需要用防火墙处理。
  • 需要考虑端口冲突。

其他遗留问题:

  • isula、containerd、cri-o 不支持 docker-compose
  • redhat-podman openEuler 兼容性目前有问题,依赖库版本太低。
相关推荐
yohoo菜鸟1 小时前
kubernetes简单入门实战
云原生·容器·kubernetes
落非1 小时前
Ubuntu配置阿里云docker apt源
ubuntu·阿里云·docker
x2lab3 小时前
国产化 ARM 环境mysql-mariadb 部署
arm开发·mysql·docker·mariadb
mit6.8244 小时前
[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
linux·运维·docker·容器·架构
qq_167401514 小时前
Docker 组添加用户,设置允许普通用户操作 docker
docker·容器
Z1eaf_complete4 小时前
Docker的基础使用
运维·docker·容器·云计算
Lyqfor5 小时前
云原生学习
java·分布式·学习·阿里云·云原生
李少兄6 小时前
Docker 命令总结:从入门到入土
docker·容器·eureka
想学习java初学者7 小时前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
Smile丶凉轩7 小时前
微服务即时通讯系统的实现(客户端)----(1)
微服务·云原生·架构