實用指南:如何在Anolis OS上輕鬆使用 Kata 安全容器?

本篇文章我們將詳細介紹怎麼輕鬆在 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 2.4.3 + QEMU Kata 3.0.0 + 內置Dragonball
100 容器串行啓動時間 56s 35s
100 容器並行啓動時間 3.7s 3.4s
100 容器並行啓動內存消耗 18402764KB 9040992KB

*性能數據均在本教程中的部署環境中測試得到,測試時兩個 Kata 使用相同 Guest Kernel 和 Rootfs 等配置。

1、部署環境

本教程中使用的是阿里雲上購買的神龍彈性裸金屬服務器,您也可以在本地物理機或其他雲環境中部署 Kata Containers。

*物理機環境需要使能硬件虛擬化,虛擬機環境需要使能嵌套虛擬化。
內核版本:Linux 4.19
CPU:104 [email protected]
內存: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/kata-share/blob/master/config.toml

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 代表我們創建好容器、容器運行完命令後會立即銷燬容器, http://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/cloud-native

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章