<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      K3s + Sysbox:讓容器擁有“虛擬機(jī)的靈魂”

      K3s 二進(jìn)制文件集成了運(yùn)行生產(chǎn)級、符合 CNCF 標(biāo)準(zhǔn)的 Kubernetes 集群所需的全部組件,包括 containerd、runc、kubelet 等。在本文中,我們將介紹 containerd 如何與 OCI runtime 通信,并探討如何在 K3s 中添加另一個(gè)容器運(yùn)行時(shí) —— Sysbox,以及它在運(yùn)行系統(tǒng)級 Pod 時(shí)的應(yīng)用場景。

      Containerd 與 Runc 的關(guān)系

      首先,讓我們簡要了解一下 containerd 是如何與 runc 協(xié)作的。containerd 是一個(gè)常駐的守護(hù)進(jìn)程,主要負(fù)責(zé)以下任務(wù):

      • 鏡像管理:從鏡像倉庫拉取并存儲鏡像。
      • 容器管理:管理容器生命周期(創(chuàng)建、啟動、停止、刪除)。
      • 快照管理:通過 snapshotter 管理容器文件系統(tǒng)層。
      • 運(yùn)行時(shí)管理:將容器創(chuàng)建的任務(wù)委托給兼容 OCI 的運(yùn)行時(shí)(如 runc)。

      當(dāng)你在 Kubernetes 中創(chuàng)建 Pod 時(shí),kubelet 會通過 containerd 實(shí)現(xiàn)的 CRI 插件 向 containerd 發(fā)送請求,要求創(chuàng)建 Pod sandbox(RunPodSandbox)并創(chuàng)建容器(CreateContainer)。containerd 隨后會啟動一個(gè) shim 進(jìn)程,該進(jìn)程在 containerd 與 OCI runtime(如 runc)之間充當(dāng)中間層。

      shim 的存在有一個(gè)關(guān)鍵作用:即便 containerd 守護(hù)進(jìn)程崩潰或重啟,容器依然可以繼續(xù)運(yùn)行。

      在啟動過程中,shim 會生成 OCI runtime 所需的 bundle(包括 config.json 和 rootfs 路徑),然后調(diào)用 runc 二進(jìn)制文件。runc 讀取 config.json,配置容器的 namespace 和 cgroup,最后啟動容器進(jìn)程。

      runc 是直接與 Linux 內(nèi)核交互的組件——它負(fù)責(zé)配置 cgroup、namespace、seccomp、權(quán)限和掛載。當(dāng)容器創(chuàng)建完成后,runc 就會退出,shim 則繼續(xù)負(fù)責(zé)容器生命周期與 I/O 的管理。

      Sysbox Runtime 簡介

      Sysbox 是由 Nestybox 創(chuàng)建的開源新一代容器運(yùn)行時(shí)。與傳統(tǒng)的 runc 不同,Sysbox 專為運(yùn)行 “系統(tǒng)容器(system containers)” 而設(shè)計(jì)。它利用 Linux 用戶命名空間(user namespaces) 以及其他內(nèi)核特性,為容器提供更接近輕量虛擬機(jī)的行為。

      這意味著,你可以在一個(gè) Pod 中運(yùn)行 Docker、Systemd、containerd,甚至 K3s 本身——而無需使用特權(quán)模式(privileged mode)。

      簡而言之,Sysbox 填補(bǔ)了應(yīng)用容器與虛擬機(jī)之間的空白。它的典型應(yīng)用場景包括:

      • 在 Kubernetes 中運(yùn)行 Kubernetes(K8s-in-K8s)。
      • 構(gòu)建需要完整操作系統(tǒng)環(huán)境的 CI/CD 流水線。
      • 提供具備虛擬機(jī)隔離級別但速度接近容器的開發(fā)環(huán)境。

      目前,Sysbox 官方僅支持 CRI-O
      CRI-O 原生支持 Linux 用戶命名空間,這是 Sysbox 運(yùn)行的基礎(chǔ)。
      雖然 containerd 自 v2.0 起也加入了 user namespace 支持,但此前 sysbox-runc 存在一個(gè) bug,導(dǎo)致與 containerd 不兼容。

      Sysbox-runc 與 Containerd 的集成

      經(jīng)過排查這個(gè)問題之后,我們發(fā)現(xiàn)問題的根源在于 containerd 無法執(zhí)行 sysbox-runc 的一個(gè)子命令 features,導(dǎo)致出現(xiàn)以下錯(cuò)誤:

      level=debug msg="failed to introspect features of runtime \"sysbox-runc\"" error="failed to unmarshal Features (*anypb.Any): type with url : not found"
      

      由于無法正確檢測到 Sysbox 的功能特性,containerd 認(rèn)為 sysbox-runc 不支持 user namespace,進(jìn)而導(dǎo)致容器創(chuàng)建失敗。該問題現(xiàn)已在 sysbox-runc 倉庫中修復(fù),使得 containerd 能夠正確地與 sysbox-runc 協(xié)作運(yùn)行。

      在 K3s 中運(yùn)行 Sysbox-runc

      若要在 K3s 中使用 sysbox-runc,你需要首先擁有一個(gè)已運(yùn)行的 K3s 集群。然后安裝最新版本的 Sysbox。但由于 containerd 支持修復(fù)尚未合并到 Sysbox 主倉庫(僅在 sysbox-runc 中),因此需要從源碼構(gòu)建最新版。

      1. 安裝 Docker

      在構(gòu)建 Sysbox 之前,請確保系統(tǒng)中已安裝 Docker。

      2. 克隆倉庫并準(zhǔn)備代碼

      git clone --recursive https://github.com/nestybox/sysbox.git
      
      cd sysbox/sysbox-runc
      git pull origin main
      cd ..
      
      make IMAGE_BASE_DISTRO=ubuntu IMAGE_BASE_RELEASE=jammy sysbox-static
      

      構(gòu)建完成后,你可以將生成的二進(jìn)制文件復(fù)制到 /usr/bin,或者直接在同一臺運(yùn)行 containerd 的機(jī)器上執(zhí)行:

      make install
      

      3. 啟動 Sysbox

      sysbox
      

      4. 創(chuàng)建 Sysbox RuntimeClass

      apiVersion: node.k8s.io/v1
      kind: RuntimeClass
      metadata:
        name: sysbox-runc
      handler: sysbox-runc
      

      5. 在 containerd 中添加 Sysbox 運(yùn)行時(shí)配置

      創(chuàng)建文件 /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl

      [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.sysbox-runc]
        runtime_type = "io.containerd.runc.v2"
      
      [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.sysbox-runc.options]
        SystemdCgroup = false
        BinaryName="/usr/bin/sysbox-runc"
      

      6. 使用 Sysbox 運(yùn)行 Pod

      apiVersion: v1
      kind: Pod
      metadata:
        name: ubuntu
      spec:
        runtimeClassName: sysbox-runc
        hostUsers: false
        containers:
          - name: ubuntu2204
            image: ubuntu:22.04
            command: ["sleep", "40000000000"]
        restartPolicy: Never
      

      總結(jié)

      Sysbox 為 Kubernetes 帶來了新的能力:它允許在容器中運(yùn)行系統(tǒng)級工作負(fù)載,具備強(qiáng)隔離性,同時(shí)不依賴特權(quán)模式。結(jié)合 K3s 使用后,它可以實(shí)現(xiàn)以下創(chuàng)新場景:

      • 在 Kubernetes 中運(yùn)行 Kubernetes(如 K3k 虛擬集群)。
      • 為開發(fā)者提供安全、輕量的類似于虛擬機(jī)的沙箱。
      • 在 Pod 中運(yùn)行系統(tǒng)守護(hù)進(jìn)程或嵌套的容器引擎。

      雖然目前 Sysbox 官方僅支持 CRI-O,但隨著 sysbox-runc 的修復(fù),它已經(jīng)可以與 containerd 正常配合使用,從而實(shí)現(xiàn)與 K3s 的集成。

      這也標(biāo)志著容器生態(tài)的發(fā)展方向正在從傳統(tǒng)的“應(yīng)用容器”,逐步邁向更加靈活、具備系統(tǒng)級能力的“系統(tǒng)容器”。

      如果你正在使用 K3s,并希望在 Pod 中探索系統(tǒng)級工作負(fù)載,Sysbox 無疑是一個(gè)值得嘗試的方案,它讓你在保持原生 Kubernetes 工作流的同時(shí),獲得接近虛擬機(jī)的隔離體驗(yàn)。

      posted @ 2025-10-28 15:11  k3s中文社區(qū)  閱讀(112)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 天天狠天天透天天伊人| 国产一国产看免费高清片| 久久综合久中文字幕青草| 越南女子杂交内射bbwxz| 熟女人妻aⅴ一区二区三区电影 | 长岛县| 精品国产精品午夜福利| 蜜桃一区二区三区免费看| 日本高清中文字幕一区二区三区| 张家川| 国产精品久久久久无码av色戒| 精品中文人妻在线不卡| 国产普通话对白刺激| 国产伦视频一区二区三区| 日韩中文字幕av有码| 沙雅县| 亚洲日韩乱码中文无码蜜桃| 人妻中文字幕亚洲一区| 精品国产免费第一区二区三区| 国产农村老熟女国产老熟女| 国内精品久久人妻无码不卡| 777米奇色狠狠888俺也去乱| 国产台湾黄色av一区二区| 影音先锋啪啪av资源网站| 制服丝袜中文字幕在线| 久久精品一区二区三区av| 一区二区和激情视频| 天堂中文8资源在线8| 久久中文字幕国产精品| 亚洲大尺度无码专区尤物| 影音先锋人妻啪啪av资源网站| 国产亚洲精品97在线视频一| 久久亚洲精品国产精品尤物| 精品熟女少妇免费久久| 欧美成人无码a区视频在线观看| 鲁丝片一区二区三区免费| 亚洲国产日韩欧美一区二区三区| 99久久久无码国产麻豆| 九九热在线免费精品视频| 三上悠亚精品一区二区久久| 国产360激情盗摄全集|