简介:手把手教你在 Anolis OS 上部署 Nydus!
在上一篇文章中具体介绍 Anolis OS 是首个原生反对镜像减速 Linux 内核,Nydus 镜像减速服务从新优化了现有的 OCIv1 容器镜像格局,从新定义镜像的文件系统,数据与元数据拆散,实现按需加载,本文作为应用 Nydus 的教程将具体介绍在 Anolis OS 上部署 Nydus 的过程,以帮忙用户相熟 Nydus 的根本应用办法。一、部署环境本教程中应用的是阿里云上购买的 EC2 虚拟机,您也能够在本地或其余云环境中部署 Nydus。操作系统:Anolis OS 8.4(ANCK 64 位)内核版本:Linux 4.19 CPU:2 vCPU@3.5GHz 内存:8GB 软件依赖:Nydus 以后仅反对 Containerd,因而在须要应用 containerd 作为容器引擎龙蜥装置应用 containerd 的办法。dnf –enablerepo Plus install -y containerd 二、装置 Nydus 龙蜥社区曾经集成 Nydus 最新 Stable 稳固版本,举荐应用龙蜥集成的软件包装置 Nydus。如果须要装置指定版本的 Nydus,能够下载上游开源版本的代码包装置(以下两种装置形式任选一种即可)。2.1 应用龙蜥集成的软件包 dnf –enablerepo Plus install -y nydus-rs nydus-snapshotter2.2 应用上游开源版本下载 Nydus 的可执行文件。从发布页面(见文末链接 1)获取最新的压缩包,并解压。wget https://github.com/dragonflyo…
tar -xzvf nydus-static-v2.1.0-alpha.4-linux-amd64.tgz 下载 Nydus Snapshotter 的可执行文件。从发布页面(见文末链接 2)获取最新的压缩包,并解压。wget https://github.com/containerd…
tar -xzvf nydus-snapshotter-v0.2.4-x86_64.tgz
mv nydus-snapshotter/containerd-nydus-grpc nydus-static/containerd-nydus-grpc 抉择 Nydus 运行模式。Nydus 减速框架反对了三种运行模式,以反对不同场景下的镜像按需加载:通过 FUSE 提供给 RunC 这类容器运行时的按需加载能力,也是 Nydus 目前最罕用的模式;通过 VirtioFS 承载 FUSE 协定,反对基于 VM 的容器运行时,例如 Kata 等,为 VM Guest 里的容器提供 RootFS 按需加载能力;通过内核态的 EROFS 只读文件系统提供 RootFS,目前 Nydus 的 EROFS 格局反对曾经进入了 Linux 5.16 主线,其内核态缓存计划 erofs over fscache 也曾经合入 Linux 5.19-rc1 主线,内核态计划能够缩小上下文切换及内存拷贝开销,在性能有极致要求的状况下能够用这种模式。因为第一种模式的环境依赖起码,比拟适宜演示。因而在这里咱们抉择 fuse 模式,将 nydusd 二进制文件中的 nydusd-fusedev 重命名为 nydusd。cd nydus-static
mv nydusd-fusedev nydusd 装置可执行文件。sudo cp nydusd nydus-image /usr/bin
sudo cp nydusify containerd-nydus-grpc /usr/bin
sudo cp ctr-remote nydus-overlayfs /usr/
cd .. 三、启动 Nydus Snapshotter3.1 写入配置文件 Nydus 提供了一个容器化的近程快照管理器 containerd-nydus-grpc 来筹备容器 rootfs 与 nydus 格局的镜像。要启动它,首先将 nydusd 配置保留到 /etc/nydusd-config.json:sudo tee /etc/nydusd-config.json > /dev/null << EOF
{
“device”: {
"backend": {
"type": "registry",
"config": {
"scheme": "https",
"skip_verify": false,
"timeout": 5,
"connect_timeout": 5,
"retry_limit": 2
}
},
"cache": {
"type": "blobcache",
"config": {"work_dir": "cache"}
}
},
“mode”: “direct”,
“digest_validate”: false,
“iostats_files”: false,
“enable_xattr”: true,
“fs_prefetch”: {
"enable": true,
"threads_count": 4
}
}
EOF3.2 启动近程快照管理器新开一个终端运行 containerd-nydus-grpc。sudo /usr/bin/containerd-nydus-grpc \
--config-path /etc/nydusd-config.json \
--shared-daemon \
--log-level info \
--root /var/lib/containerd/io.containerd.snapshotter.v1.nydus \
--cache-dir /var/lib/nydus/cache \
--address /run/containerd/containerd-nydus-grpc.sock \
--nydusd-path /usr/bin/nydusd \
--nydusimg-path /usr/bin/nydus-image \
--log-to-stdoutcache-dir 参数示意本地 blob 缓存根目录,如果未设置,会默认为 root+ "/cache"。它会笼罩 nydusd-config.json 中的 device.cache.config.work_dir。四、配置 Containerd4.1 将以下内容增加到 containerd 配置中(默认为 /etc/containerd/config.toml):[proxy_plugins]
[proxy_plugins.nydus]
type = "snapshot"
address = "/run/containerd/containerd-nydus-grpc.sock"
[plugins.”io.containerd.grpc.v1.cri”.containerd]
snapshotter = “nydus”
disable_snapshot_annotations = false4.2 重新启动 Contained。配置更新后须要重启 Contained 服务。systemctl restart containerd 五、启动 Nydus 镜像格局的容器这里展现如何应用 crictl 启动一个 Nydus 镜像格局的容器。5.1 编写 sandbox yaml 文件 nydus-sandbox.yaml,往 POD 中传递 Nydus annotation。metadata:
attempt: 1
name: nydus-sandbox
namespace: default
log_directory: /tmp
linux:
security_context:
namespace_options:
network: 2
annotations:
“io.containerd.osfeature”: “nydus.remoteimage.v1″5.2 编写容器 yaml 文件 nydus-container.yaml,指定应用的容器镜像。metadata:
name: nydus-container
image:
image: cloud-native-sig-registry.cn-hangzhou.cr.aliyuncs.com/openanolis/anolisos:8.6-x86_64-nydus
command:
- /bin/sleep
args:
- 600
log_path: container.1.log 这里咱们应用了龙蜥云原生镜像仓库中曾经集成的 Anolis 8.6 的镜像作为测试镜像。5.3 拉取镜像并启动容器。date
crictl pull cloud-native-sig-registry.cn-hangzhou.cr.aliyuncs.com/openanolis/anolisos:8.6-x86_64-nydus
pod=crictl runp nydus-sandbox.yaml
container=crictl create $pod nydus-container.yaml nydus-sandbox.yaml
crictl start $container
crictl ps
date
这里能够看到,采纳 Nydus 镜像仅应用 2 秒便实现了容器镜像的拉取和容器启动的过程。在等同的条件下,咱们创立一个 OCIv1 的镜像比照一下,应用的仍然是 anolis 8.6 的镜像,镜像的内容与上述应用的 nydus 完全一致。yaml 文件编写如下:metadata:
attempt: 1
name: normal-sandbox
namespace: default
log_directory: /tmp
linux:
security_context:
namespace_options:
network: 2metadata:
name: normal-container
image:
image: cloud-native-sig-registry.cn-hangzhou.cr.aliyuncs.com/openanolis/anolisos:8.6
command:
- /bin/sleep
args:
- 600
log_path: container.1.log 采纳如下的命令:date
crictl pull cloud-native-sig-registry.cn-hangzhou.cr.aliyuncs.com/openanolis/anolisos:8.6
pod=crictl runp normal-sandbox.yaml
container=crictl create $pod normal-container.yaml normal-sandbox.yaml
crictl start $container
crictl ps
date
能够看到,等同环境下,应用 OCIv1 镜像格局启动 Anolis 8.6 的版本须要 10 秒,是 Nydus 的 5 倍。六、转换并启动 Nydus 镜像这里展现转换 Nydus 镜像并推送到您的镜像仓库中去,为了可能登录镜像仓库,咱们采纳 nerdctl 工具进行配置 6.1 装置 Nerdctl 和 CNI plugin。Nerdctl 是一种与 docker 兼容的命令行,然而因为它可能反对启动 Nydus 镜像,因而咱们在这里抉择应用 Nerdctl。因为容器在运行中可能须要依赖一些插件,所以咱们同时装置 CNI plugin。dnf update -y anolis-repos && yum install -y anolis-experimental-release && yum install -y nerdctl
dnf install -y containernetworking-plugins 应用 nerdctl login 进行登录,用于仓库认证,当然,您能够采纳 docker login 形式登录。nerdctl login –username ${your username} –password xxx6.2 将镜像转换为 Nydus 格局,并推送至近程镜像仓库。nydusify convert –nydus-image /usr/bin/nydus-image –source ${your image} –target ${your registry address}/${image name}:${tag}依照操作实现以上步骤,祝贺,您曾经胜利在 Anolis OS 上实现了 Nydus 镜像减速计划的部署!如果后续还有疑难,请扫描下方二维码或搜寻钉钉群号(44701621)入群交换。参考链接:1. Nydus 软件包发布页面:https://github.com/dragonflyo… 下 nydus snapshotter 发布页面:https://github.com/containerd… Nydus 的更多技术细节:https://developer.aliyun.com/… 更具体的部署阐明:https://github.com/dragonflyo… —— 完 ——退出社群退出微信群:增加社区助理 - 龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;退出钉钉群:扫描下方钉钉群二维码。欢送开发者 / 用户退出龙蜥社区(OpenAnolis)交换,独特推动龙蜥社区的倒退,一起打造一个沉闷的、衰弱的开源操作系统生态!
对于龙蜥社区 龙蜥社区(OpenAnolis)由企事业单位、高等院校、科研单位、非营利性组织、集体等在被迫、平等、开源、合作的根底上组成的非盈利性开源社区。龙蜥社区成立于 2020 年 9 月,旨在构建一个开源、中立、凋谢的 Linux 上游发行版社区及翻新平台。龙蜥社区成立的短期指标是开发龙蜥操作系统 (Anolis OS) 作为 CentOS 停服后的应答计划,构建一个兼容国内 Linux 支流厂商的社区发行版。中长期指标是摸索打造一个面向未来的操作系统,建设对立的开源操作系统生态,孵化翻新开源我的项目,凋敝开源生态。目前,Anolis OS 8.6 已公布,更多龙蜥自研个性,反对 X86_64、RISC-V、Arm64、LoongArch 架构,欠缺适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密反对。欢送下载:https://openanolis.cn/download 退出咱们,一起打造面向未来的开源操作系统!https://openanolis.cn 原文链接:https://click.aliyun.com/m/10… 本文为阿里云原创内容,未经容许不得转载。