关于容器:实用指南如何在Anolis-OS上轻松使用-Kata-安全容器

93次阅读

共计 4347 个字符,预计需要花费 11 分钟才能阅读完成。

文 / 云原生 SIG

本篇文章咱们将具体介绍怎么轻松在 Anolis OS 上应用 Kata Containers 平安容器,咱们将介绍 Kata Container 社区于 2022 年 10 月 10 日最新发行的 Kata3.0.0 的装置部署形式,3.0.0 版本蕴含了基于袋鼠 RunD 开源的最新 Rust Kata runtime + 内置 Dragonball 和 Go runtime + VMM(本文默认装置了 QEMU)两套架构。

目前社区打算在将来 1-2 年的工夫内逐渐由 Go Runtime 迁徙至 Rust Runtime,Rust Kata runtime 是 Kata 社区将来的倒退方向,在整体资源耗费、启动速度等方面都有显著劣势,同时提供内置沙箱 Dragonball 进一步提高应用体验,目前还处于疾速倒退阶段。

本教程默认装置 Rust Kata Runtime + Dragonball,并会提供繁难教程帮忙您切换到 Go Kata Runtime + QEMU,另外,咱们提供的 Guest Kernel 基于龙蜥 OS, rootfs 基于专门为容器场景优化的 LifseaOS。

01 Kata Container 3.0.0 (Rust Runtime + Dragonball)

RunD 是龙蜥社区开源的下一代平安容器解决方案,相比于社区的 Kata 2.0 而言,RunD 最大的特点是提供了基于容器场景深度优化的内置 Dragonball 沙箱,缩小了虚拟化内部依赖,带给用户开箱即用的优质体验。同时极大晋升了整体容器的启动速度;其次通过引入全新的异步 Rust Runtime 机制,进一步升高 Kata 平安容器整体的资源开销。RunD 目前已开源成为 Kata Containers 社区上游 3.0 版本规范。之前文章里介绍了 Kata 3.0 背地的设计与思考,其中一体架构、轻量平安容器虚拟机 Dragonball、异步 Rust Runtime 等翻新给 3.0 版本带来了低资源开销、极速启动速度、易于运维等劣势。

目前,Kata 3.0.0 曾经在社区公布第一个 Release 版本,用户能够在 Anolis 装置 Kata 3.0.0 来感触新版本的极速体验,咱们也测得了 Kata3.0.0 + 内置 Dragonball 相比 Kata 2.4.3 + QEMU 的性能数据,给到各位更具体的晋升成果。

* 性能数据均在本教程中的部署环境中测试失去,测试时两个 Kata 应用雷同 Guest Kernel 和 Rootfs 等配置。

1、部署环境

本教程中应用的是阿里云上购买的神龙弹性裸金属服务器,您也能够在本地物理机或其余云环境中部署 Kata Containers。

* 物理机环境须要使能硬件虚拟化,虚拟机环境须要使能嵌套虚拟化。

内核版本:Linux 4.19

CPU:104 vCPU@3.8GHz

内存:192GB

2、装置 Kata3.0.0

龙蜥社区曾经集成了 Kata Containers 最新 3.0.0 版本,举荐您应用龙蜥集成的软件包装置 Kata Container 3.0.0。龙蜥软件包会为您做好默认 Guest Kernel 配置、默认 Rootfs 配置、默认 Kata 配置,帮忙您做到真正的开箱即用体验。

2.1 装置龙蜥 experimental 源

因为目前 Kata Container 3.0.0 在龙蜥源的 experimental repo 中,因而先须要装置龙蜥的 experimental repo。

yum install anolis-experimental-release

2.2 装置 Kata Containers 3.0.0

接着,能够在 Experimental repo 中装置 Kata Containers 3.0.0。

yum --enablerepo Experimental install kata-containers

以上两步即可装置好 Kata Containers 3.0.0,并且咱们会为您做好如下默认配置,您能够应用它们即刻开始应用 Kata Container,也能够依据本人的需要进行调整:

  • Kata 默认配置

Kata Containers 3.0.0 装置后,默认配置会在 /usr/share/kata-containers/defaults/configuration.toml 且默认虚拟机管理器 VMM 为 Dragonball。

  • Guest Kernel 默认配置

默认 Guest kernel 门路:/usr/share/kata-containers/vmlinux.container

* 默认装置的 guest kernel 是基于龙蜥 5.10 Cloud Linux 配合 Kata 社区举荐 5.10 内核参数制作而成。

  • rootfs 默认配置

默认 rootfs 门路:/usr/share/kata-containers/kata-containers.img

* 默认装置的 rootfs 是基于专门为容器场景优化的 LifseaOS。

3、装置 Containerd

如果您的环境中没有 Containerd 或没有配置 Containerd 的 Kata 运行时反对,请您参考 3、4 节的内容。

3.1 装置 Containerd

yum --enablerepo Plus install containerd

4、配置 Containerd

当 Containerd 装置实现后,您须要批改 Containerd 配置来让 Containerd 能够找到 Kata 容器运行时。

4.1 生成默认 Containerd 配置

首先请您进入 /etc/containerd 门路,这里默认会寄存 Containerd 的配置文件 config.toml。如果这个门路下没有配置文件或者配置文件是被全副正文的缺省状态,能够应用如下命令生成默认配置;如曾经有残缺配置,也能够间接跳到 5.2。

进入 containerd 配置目录并查看配置状况,若无配置或为全副正文,能够持续生成默认配置

cd /etc/containerd/

生成 containerd 默认配置

containerd config default > /etc/containerd/config.toml

4.2 配置减少 Kata 容器运行时

接下来,您须要在 Containerd 配置中退出 Kata 容器运行时,从而让 Containerd 运作的时候能够找到 Kata。关上 5.1 中 的 Containerd 配置并找到 [plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes],在其下退出新的 runtime_type。

# 关上 containerd 配置并在
# [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
# 下退出 kata runtime 的抉择
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata]
  runtime_type = "io.containerd.kata.v2"

为了让您更好了解如何批改配置,咱们这边也给到一份批改完的配置截图,不便您参考。

同时,咱们为您筹备了一份 Containerd 配置文件示例供您进一步参考,您可点击此处下载:https://gitee.com/chao1997/ka…

4.3 重启 Containerd

最初,重启 containerd 让配置失效。

# 配置实现,重启 containerd 即可
systemctl restart containerd

祝贺您,到这一步跑起 Kata 容器的次要步骤曾经实现,您后续能够自在地开始尝试 Kata,如果您想当初立刻就有一个用例让 Kata 跑起来,请您持续往下看。

5、启动 Kata3.0.0 平安容器

5.1 获取 busybox 镜像

为了启动平安容器,咱们首先须要获取到一个镜像。在这个教程里,让咱们选用最根底的镜像 busybox 吧。

同时,您也能够选用各种你喜爱的 CLI 工具,例如 ctr、nerctl、crictl 等,在本教程中,咱们应用了 Containerd 自带的 ctr。

ctr images pull docker.io/library/busybox:latest

5.2 启动 Kata 平安容器

接着,让咱们应用 Kata 启动一个平安容器,并打出平安容器中的操作系统信息吧。

ctr run --runtime=io.containerd.kata.v2 --rm docker.io/library/busybox:latest kata-test uname -r

–runtime 用于指定容器运行时,–rm 代表咱们创立好容器、容器运行完命令后会立刻销毁容器,docker.io/library/busybox:latest 代表容器的镜像名,kata-test 代表容器的名称,最初 uname -r 是咱们要在容器中运行的命令。

通过以上命令即可打出平安容器中的操作系统版本信息,您能够感触到平安容器内运行的 Guest OS 和 Host OS 的差别。

02 切换至 Go Runtime + QEMU

目前社区打算在将来 1-2 年的工夫内逐渐由 Go Runtime 迁徙至 Rust Runtime,您如果在应用 Rust Kata Runtime 上遇到功能性问题能够先应用 Go Runtime,上面咱们将介绍切换办法。

切换至 Go Runtime 的二进制文件

首先,进入 Kata Runtime 默认二进制装置门路。

cd /usr/local/bin

接着,用 Go Runtime 二进制文件替换 Rust Runtime 二进制文件。

# 遇到 overwrite 询问,都请答复 y
cp /usr/runtime-go/bin/* .

切换 Kata 配置到 QEMU 配置

进入 Kata 配置门路,并切换配置到 QEMU 配置。

# 进入配置门路
cd /usr/share/defaults/kata-containers

# 切换配置到 QEMU 配置
ln -sf configuration-qemu.toml configuration.toml

通过以上两步,您已切换到 go runtime,您能够试着按教程中的 5.1 和 5.2 步骤来启动平安容器。

至此,您的第一个 Kata 3.0.0 平安容器就创立胜利啦,您能够持续对 Kata3.0.0 开展更多摸索,如果有遇到任何问题,欢送到龙蜥云原生社区来和咱们交换。

小贴士:请留神,安装包中的 kata-agent 是用于在虚拟机内启动服务和宿主机沟通的,在任何状况下请不要在宿主机上间接启动 kata-agent,可能会对您的机器产生毁坏。

龙蜥云原生 SIG(Special Interest Group)助力龙蜥企业用户实现云原生转型和降级;面向用户与企业提供云原生能力和组件反对,并与宽广开发者一起构建具备竞争力的云原生技术,帮助用户更快、更好地利用云原生技术构建利用集群。

龙蜥云原生 SIG 主页:

https://openanolis.cn/sig/clo…

—— 完 ——

正文完
 0