【云原生】容器方案 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 兼容性目前有问题,依赖库版本太低。
相关推荐
谷莠子90538 分钟前
hadoop实验之创业有感
hadoop·docker·团队开发
G丶AEOM40 分钟前
Docker快速入门
docker
大熊程序猿1 小时前
airflow docker 安装
运维·docker·容器
会飞的土拨鼠呀2 小时前
chart文件结构
运维·云原生·kubernetes
带电的小王3 小时前
Docker在Ubuntu上安装
ubuntu·docker
fanruitian3 小时前
docker 为单个容器设置代理
运维·docker·容器
梁萌3 小时前
Docker快速安装Tomcat
docker·容器·tomcat·镜像
Doker 多克5 小时前
IntelliJ IDEA Docker集成
spring cloud·docker·intellij-idea
Hello Dam5 小时前
面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制
spring cloud·微服务·云原生·架构·gateway·登录验证·单点登录
power-辰南6 小时前
Zookeeper 底层原理解析
分布式·zookeeper·云原生