0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

iSulad+Kuasar+StratoVirt安全容器解決方案的使用介紹

openEuler ? 來(lái)源:openEuler ? 2023-11-20 17:00 ? 次閱讀

概述

Kuasar 是今年華為在 CNCF 峰會(huì)上發(fā)布的支持多種沙箱隔離技術(shù)的容器運(yùn)行時(shí) [1],可以在單個(gè)節(jié)點(diǎn)上運(yùn)行多種不同類(lèi)型的沙箱容器;同時(shí)采用了 1:N 的容器進(jìn)程管理模型,對(duì)比當(dāng)前 Shim 進(jìn)程 1:1 的設(shè)計(jì),在容器并發(fā)時(shí)能夠提升啟動(dòng)速度 2 倍以上、并節(jié)省容器管理進(jìn)程 99% 的內(nèi)存增量。Kuasar 基于 Sandbox API [2] 接口開(kāi)發(fā),區(qū)別于當(dāng)前的 Shim v2 接口,對(duì)沙箱的生命周期管理具有內(nèi)存消耗小、調(diào)用鏈簡(jiǎn)短等優(yōu)勢(shì)。

openEuler 社區(qū)通過(guò) iSulad 組件率先完成了對(duì) Sandbox API 的支持,并在近日發(fā)布的 openEuler 23.09上內(nèi)置了 Kuasar,用戶(hù)可以一鍵部署 iSulad+Kuasar+StratoVirt 這一套極速輕量的安全容器解決方案 [3]。關(guān)于 iSulad+Kuasar 統(tǒng)一容器運(yùn)行時(shí)解決方案的架構(gòu)和所帶來(lái)的優(yōu)勢(shì),可參考上一篇系列文章 [4]。

本文將詳細(xì)介紹該解決方案的安裝與使用方式,支持用戶(hù)快速上手。

d5825bb0-7324-11ee-939d-92fbcf53809c.png

圖 1iSulad+Kuasar+StratoVirt 安全容器解決方案架構(gòu)

安裝與配置

說(shuō)明:kuasar 的安裝和使用均需要 root 權(quán)限。

前提條件

1. 為了獲取更好的性能體驗(yàn),該方案需要運(yùn)行在裸金屬服務(wù)器上,暫不支持運(yùn)行在虛擬機(jī)內(nèi)。

2. 安裝 openEuler 23.09 操作系統(tǒng)

3. 安裝啟動(dòng)沙箱及容器需要使用的 cri 命令行工具 crictl 。

#arm環(huán)境
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.25.0/crictl-v1.25.0-linux-arm64.tar.gz
$ tar -zxvf crictl-v1.25.0-linux-arm64.tar.gz -C /usr/local/bin
#x86環(huán)境
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.25.0/crictl-v1.25.0-linux-amd64.tar.gz
$tar-zxvfcrictl-v1.25.0-linux-amd64.tar.gz-C/usr/local/bin

4. 安裝配置網(wǎng)絡(luò)需要使用的 cni 插件。

#創(chuàng)建cni目錄
$mkdir-p/opt/cni/bin&&mkdir-p/etc/cni/net.d 
# arm環(huán)境
$ wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-arm64-v1.3.0.tgz
$ tar -zxvf cni-plugins-linux-arm64-v1.3.0.tgz -C /opt/cni/bin/
#x86環(huán)境
$ wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz
$ tar -zxvf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin/

一鍵安裝

通過(guò)下述指令可以在 openEuler 23.09 上一鍵安裝 iSulad、kuasar 和 stratovirt 組件:

$ yum install iSulad kuasar stratovirt

組件配置

crictl 命令行工具的配置

修改 crictl 配置文件 /etc/crictl.yaml 以對(duì)接 isulad

$ cat /etc/crictl.yaml
runtime-endpoint: unix:///var/run/isulad.sock
image-endpoint: unix:///var/run/isulad.sock

iSulad容器引擎的配置

修改 iSulad 容器引擎的配置文件 /etc/isulad/daemon.json ,以支持 iSulad 調(diào)用 kuasar 啟動(dòng) vmm 類(lèi)型的 sandbox ,需在配置文件中新增如下字段:

$ cat /etc/isulad/daemon.json
...
    "cri-sandboxers": {
        "vmm": {
            "name": "vmm",
            "address": "/run/vmm-sandboxer.sock"
        }
    },
    "cri-runtimes": {
        "vmm": "io.containerd.vmm.v1"
    },
...

保存后重新啟動(dòng) iSulad 服務(wù)

$ systemctl restart isulad

之后可通過(guò)指令 `systemctl status iSulad` 確認(rèn) iSulad 服務(wù)已處于 running 狀態(tài)

kuasar的配置

修改對(duì)接 stratovirt 的 kuasar 配置文件(可直接使用 kuasar rpm 包安裝好后的默認(rèn)配置,路徑位于 /var/lib/kuasar/config_stratovirt.toml )

$cat/var/lib/kuasar/config_stratovirt.toml
[sandbox]
log_level = "info" #指定kuasar日志級(jí)別,默認(rèn)為info


[hypervisor]
path = "/usr/bin/stratovirt" #指定stratovirt二進(jìn)制路徑
machine_type = "virt,mem-share=on" #指定模擬芯片類(lèi)型,ARM架構(gòu)為virt,x86架構(gòu)為q35
kernel_path = "/var/lib/kuasar/vmlinux.bin" #指定guest kernel執(zhí)行路徑
image_path = "" #指定guest image執(zhí)行路徑
initrd_path = "/var/lib/kuasar/kuasar.initrd" #指定guest initrd執(zhí)行路徑,與image二選一
kernel_params = "task.log_level=debug task.sharefs_type=virtiofs" #指定guest內(nèi)核運(yùn)行參數(shù)
vcpus = 1 #指定每個(gè)沙箱的默認(rèn)vCPU數(shù)量,默認(rèn)為1
memory_in_mb = 1024 #指定每個(gè)沙箱的默認(rèn)內(nèi)存大小,默認(rèn)為1024 MiB
block_device_driver = "virtio-blk" #指定塊設(shè)備驅(qū)動(dòng)
debug = true #指定是否開(kāi)啟debug模式
enable_mem_prealloc=false#指定是否開(kāi)啟內(nèi)存預(yù)占


[hypervisor.virtiofsd_conf]
path = "/usr/bin/vhost_user_fs" #指定vhost_user_fs路徑

保存后重新啟動(dòng) kuasar-vmm 服務(wù)

$ systemctl restart kuasar-vmm

之后可通過(guò)指令 `systemctl status kuasar-vmm` 確認(rèn) kuasar-vmm 服務(wù)已處于 running 狀態(tài)

部署沙箱與容器

啟動(dòng)沙箱與容器

以上配置完畢后,可以使用 crictl 命令行部署 pod 沙箱和容器,操作步驟如下:

1. 準(zhǔn)備 pod 和 container 的 yaml 配置文件,范例如下:

 $ cat podsandbox.yaml
metadata:
     name: busybox-sandbox
     namespace: default
     uid: hdishd83djaidwnduwk28bcsc
log_directory:/tmp
linux:
     namespaces:
       options: {}


 $ cat pod-container.yaml
metadata:
     name: busybox
image:
image:docker.io/library/busybox:latest
command:
-top
log_path:busybox.log

2. 通過(guò) `crictl run`命令啟動(dòng)一個(gè) pod 以及對(duì)應(yīng)的業(yè)務(wù)容器,指定 runtime 為 vmm

$ crictl run -r vmm container-config.yaml podsandbox-config.yaml

3. 查看 pod 列表,pod 為 Ready 狀態(tài)

 $ crictl pods
PODIDCREATEDSTATENAMENAMESPACEATTEMPT
5cbcf744949d8AboutaminuteagoReadybusybox-sandboxdefault1

查看容器列表,容器為 Running 狀態(tài)

$ crictl ps
CONTAINERIMAGECREATEDSTATENAMEATTEMPTPODID
c11df540f913edocker.io/library/busybox:latest2minutesagoRunningbusybox05cbcf744949d8

至此,pod 和容器已啟動(dòng)完畢,均處于運(yùn)行狀態(tài)。

檢驗(yàn)沙箱與容器

進(jìn)入 pod 沙箱的 shell 環(huán)境進(jìn)行調(diào)試:

# 查看獲取pod對(duì)應(yīng)stratovirt進(jìn)程內(nèi)的vsock guest-cid
$ ps -ef | grep stratovirt | grep 5cbcf744949d8
/usr/bin/stratovirt -name sandbox-5cbcf744949d8500e7159d6bd1e3894211f475549c0be15d9c60d3c502c7ede3 ...
-device vhost-vsock-pci,id=vsock-395568061,guest-cid=395568061,bus=pcie.0,addr=0x3,vhostfd=3
...
# 使用ncat命令進(jìn)入沙箱shell
$ yum install -y nmap && ncat --vsock 395568061 1025
bash-6.4#

測(cè)試 pod 網(wǎng)絡(luò)連接:

# 在pod shell環(huán)境內(nèi)執(zhí)行
bash-6.4# ip addr show
1: lo:  mtu 65536 qdisc noqueue qlen 1000
    link/loopback 000000:00 brd 000000:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 429239:9f brd ffffff:ff
    inet 172.19.0.240/24 brd 172.19.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80:92ff399f/64 scope link
       valid_lft forever preferred_lft forever
# 測(cè)試pod與主機(jī)之間網(wǎng)絡(luò)連通性(172.19.0.1為主機(jī)上的網(wǎng)關(guān))
bash-6.4 #ping172.19.0.1
PING 172.19.0.1 (172.19.0.1): 56 data bytes
64 bytes from 172.19.0.1: seq=0 ttl=64 time=0.618 ms
64 bytes from 172.19.0.1: seq=1 ttl=64 time=0.116 ms
64 bytes from 172.19.0.1: seq=2 ttl=64 time=0.152 ms

能夠觀察到,pod 已經(jīng)正常工作起來(lái)并已經(jīng)完成與外部主機(jī)的連通。

以上創(chuàng)建 pod 沙箱的過(guò)程并沒(méi)有新增 shim 進(jìn)程,而是在 kuasar 提供的 vmm-sandboxer 進(jìn)程內(nèi)部新增了 sandbox 實(shí)例實(shí)現(xiàn)的。通過(guò)下述方式也可以查看 kuasar 與虛擬化引擎 stratovirt 的聯(lián)系。查看該容器 pod 所對(duì)應(yīng) stratovirt 進(jìn)程,其 kernel 與 initrd 等路徑均與 kuasar 配置文件中指定的一致。

$ ps -ef | grep stratovirt | grep 5cbcf744949d8
/usr/bin/stratovirt -name sandbox-5cbcf744949d8500e7159d6bd1e3894211f475549c0be15d9c60d3c502c7ede3...-kernel 
/var/lib/kuasar/vmlinux.bin -initrd /var/lib/kuasar/kuasar.initrd...

同時(shí)該 pod 沙箱與主機(jī)側(cè)通信的 sock 套接字、日志等文件均位于 kuasar 路徑下:

$ ls -al /run/kuasar-vmm/5cbcf744949d8500e7159d6bd1e3894211f475549c0be15d9c60d3c502c7ede3/
console.sock
sandbox-5cbcf744949d8500e7159d6bd1e3894211f475549c0be15d9c60d3c502c7ede3.log
sandbox-5cbcf744949d8500e7159d6bd1e3894211f475549c0be15d9c60d3c502c7ede3.pid
...

以上就是 iSulad+Kuasar+StratoVirt 安全容器解決方案的使用介紹,更多關(guān)于 Kuasar 的使用可以進(jìn)入 openEuler 官網(wǎng)查看 [5]。

后續(xù) CloudNative SIG 將繼續(xù)對(duì) iSulad 實(shí)現(xiàn) Sandbox API、Kuasar 支持 wasm 等特性進(jìn)行詳細(xì)介紹,敬請(qǐng)期待!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8598

    瀏覽量

    151163
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6825

    瀏覽量

    123333
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    22062
  • openEuler
    +關(guān)注

    關(guān)注

    2

    文章

    313

    瀏覽量

    5880

原文標(biāo)題:openEuler 23.09 一鍵部署基于 Kuasar 的極速輕量安全容器

文章出處:【微信號(hào):openEulercommunity,微信公眾號(hào):openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    立體智慧倉(cāng)儲(chǔ)解決方案.#云計(jì)算

    解決方案智能設(shè)備
    學(xué)習(xí)電子知識(shí)
    發(fā)布于 :2022年10月06日 19:45:47

    安全容器的發(fā)展與思考

    。所以,針對(duì)未修改的應(yīng)用的安全容器方案就落在了中間兩種方案——MicroVM 和進(jìn)程虛擬化上,前者是使用了輕量級(jí)虛機(jī)和裁剪過(guò)的 Linux 內(nèi)核,在保證兼容性的前提下盡量降低運(yùn)行時(shí)和維
    發(fā)表于 09-29 15:51

    求一款視頻監(jiān)控/安全系統(tǒng)的解決方案

    本文介紹了一種基于FPGA的視頻監(jiān)控/安全系統(tǒng)的解決方案。
    發(fā)表于 04-29 07:17

    關(guān)于NXP汽車(chē)安全解決方案介紹(一)

    這次交流會(huì)將展示汽車(chē)安全和NXP汽車(chē)安全解決方案。NXP提供各種支持汽車(chē)安全規(guī)范的MCU,包括支持安全硬件擴(kuò)展(SHE)標(biāo)準(zhǔn), GM glo
    的頭像 發(fā)表于 06-28 17:40 ?5161次閱讀

    介紹基于ISO26262安全計(jì)算平臺(tái)解決方案

    英飛凌基于ISO26262安全標(biāo)準(zhǔn)的安全計(jì)算平臺(tái)的解決方案介紹
    的頭像 發(fā)表于 07-11 01:24 ?4443次閱讀

    品高軟件:iSula+StratoVirt輕量虛機(jī)容器解決方案

    歐拉openEuler Summit 2021直播會(huì)上,品高軟件生態(tài)總監(jiān)王彥文給我們介紹了iSula+StratoVirt輕量虛機(jī)容器解決方案。
    的頭像 發(fā)表于 11-10 10:22 ?1374次閱讀
    品高軟件:iSula+<b class='flag-5'>StratoVirt</b>輕量虛機(jī)<b class='flag-5'>容器</b><b class='flag-5'>解決方案</b>

    openEuler Summit開(kāi)發(fā)者峰會(huì):iSula+StratoVirt輕量虛機(jī)容器解決方案展示

    openEuler Summit開(kāi)發(fā)者峰會(huì):iSula+StratoVirt輕量虛機(jī)容器解決方案展示
    的頭像 發(fā)表于 11-10 10:46 ?1482次閱讀
    openEuler Summit開(kāi)發(fā)者峰會(huì):iSula+<b class='flag-5'>StratoVirt</b>輕量虛機(jī)<b class='flag-5'>容器</b><b class='flag-5'>解決方案</b>展示

    歐拉(openEuler)Summit 2021:歐拉demo分享——iSula + StratoVirt

    歐拉(openEuler)Summit 2021上,關(guān)于iSula + StratoVirt輕量虛機(jī)容器解決方案分享。 以及iSula+ StratoVirt與品高
    的頭像 發(fā)表于 11-10 10:39 ?1326次閱讀
    歐拉(openEuler)Summit 2021:歐拉demo分享——iSula + <b class='flag-5'>StratoVirt</b>

    StratoVirt中vCPU管理模塊的組成及位置

    StratoVirt是開(kāi)源在openEuler社區(qū)的輕量級(jí)虛擬化平臺(tái),具備輕量低噪、強(qiáng)安全性的行業(yè)競(jìng)爭(zhēng)力。
    的頭像 發(fā)表于 12-20 15:41 ?1921次閱讀

    StratoVirt 中的 balloon 設(shè)備介紹

    StratoVirt 是計(jì)算產(chǎn)業(yè)中面向云數(shù)據(jù)中心的企業(yè)級(jí)虛擬化 VMM,實(shí)現(xiàn)了一套架構(gòu)統(tǒng)一支持虛擬機(jī)、容器、Serverless 三種場(chǎng)景。StratoVirt 在輕量低噪、軟硬協(xié)同、Rust 語(yǔ)言級(jí)
    的頭像 發(fā)表于 12-21 14:56 ?2180次閱讀

    iSulad云原生輕量級(jí)容器解決方案

    ./oschina_soft/gitee-iSulad.zip
    發(fā)表于 05-10 10:30 ?1次下載
    <b class='flag-5'>iSulad</b>云原生輕量級(jí)<b class='flag-5'>容器</b><b class='flag-5'>解決方案</b>

    Nexus Container:容器安全解決方案

    成功部署容器意味著平衡穩(wěn)健的安全實(shí)踐、敏捷的DevOps團(tuán)隊(duì)需求和法規(guī)遵從性需求。NexusContainer無(wú)所不能-幫助您的開(kāi)發(fā)、安全和操作團(tuán)隊(duì)在整個(gè)容器生命周期中發(fā)現(xiàn)、持續(xù)監(jiān)控和
    的頭像 發(fā)表于 08-18 16:11 ?1081次閱讀

    openEuler開(kāi)源項(xiàng)目iSulad加入 CNCF Landscape

    加萊實(shí)驗(yàn)室發(fā)起, 于2019年在 openEuler 社區(qū)開(kāi)源。相比之前的容器引擎方案,iSulad具備高性能、低開(kāi)銷(xiāo)、多場(chǎng)景支持等優(yōu)點(diǎn)。為了更好地豐富云原生生態(tài)、以及打通開(kāi)放原子基金會(huì)和 CNCF 基金會(huì)的聯(lián)系,開(kāi)放原子基金會(huì)
    的頭像 發(fā)表于 01-07 10:43 ?1547次閱讀

    iSulad+Kuasar:管理面資源消耗銳減99%的新一代統(tǒng)一容器運(yùn)行時(shí)解決方案

    容器引擎(Container Engine)主要負(fù)責(zé)容器運(yùn)行環(huán)境的創(chuàng)建、容器資源的配置和容器生命周期的管理,北向接收來(lái)自于 Kubernetes 或前端命令行的輸入,南向則調(diào)用底層
    的頭像 發(fā)表于 04-27 15:00 ?1121次閱讀
    <b class='flag-5'>iSulad+Kuasar</b>:管理面資源消耗銳減99%的新一代統(tǒng)一<b class='flag-5'>容器</b>運(yùn)行時(shí)<b class='flag-5'>解決方案</b>

    iSulad Sandbox API簡(jiǎn)化容器調(diào)用鏈

    沙箱隔離技術(shù)是一種將進(jìn)程隔離到獨(dú)立環(huán)境中運(yùn)行的技術(shù),可以有效地隔離進(jìn)程間的相互影響,提高系統(tǒng)的安全性。隨著容器技術(shù)的興起,沙箱隔離技術(shù)也在云原生領(lǐng)域中得到了廣泛的應(yīng)用。例如容器編排組件
    的頭像 發(fā)表于 11-20 17:08 ?630次閱讀
    <b class='flag-5'>iSulad</b> Sandbox API簡(jiǎn)化<b class='flag-5'>容器</b>調(diào)用鏈