【云原生】容器方案 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 兼容性目前有问题,依赖库版本太低。
相关推荐
xhaxy1 分钟前
docker
docker·容器·eureka
一技安身3 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
鸿观工坊7 小时前
Docker 多阶段构建实践指南
docker
阿里云云原生8 小时前
遇到多 Agent 协作效率低?试试引入“讨论共识”与“横向通信”机制
云原生
大牧师9 小时前
MySQL 学习教程
数据库·sql·mysql·docker·node·全栈·后端数据
MC丶科10 小时前
软考架构师90天冲刺|DAY44·Redis高级应用
数据库·数据仓库·redis·缓存·oracle·容器·规格说明书
天外天-亮10 小时前
docker + window 安装
运维·docker·容器
进击的小菜鸡dd11 小时前
docker 容器的挂载映射关系查看
运维·docker·容器
SLD_Allen11 小时前
从 HPA 到 KEDA:Kubernetes 弹性伸缩的进阶实践
云原生·容器·kubernetes
程序员老赵11 小时前
Docker 部署 TeX Live:轻松搭建 LaTeX 论文排版编译平台
前端·docker·latex