crun(1) General Commands Manual crun(1)

krun - زمان اجرای OCI مبتنی بر crun با استفاده از libkrun برای اجرای برنامه‌های کانتینری در محیط‌های ایزوله KVM

krun [global options] command [command options] [arguments...]

ابزار krun یک زیربسته از برنامه خط فرمان crun برای اجرای کانتینرهای لینوکس است که از قالب ابتکار کانتینر باز (OCI) پیروی می‌کنند. دستور krun یک پیوند نمادین (Symlink) به فایل اجرایی crun است که به crun دستور می‌دهد در حالت krun اجرا شود.

ابزار krun از کتابخانه پویای libkrun برای اجرای فرایندها در یک محیط ایزوله با استفاده از مجازی‌سازی KVM بهره می‌برد.

کتابخانه libkrun یک VMM (مانیتور ماشین مجازی، بخش فضای کاربر یک هایپروایزر) را با حداقل دستگاه‌های شبیه‌سازی‌شده مورد نیاز برای هدف خود ادغام می‌کند و بیشتر پیچیدگی‌های مدیریت ماشین مجازی را انتزاع می‌بخشد.

به دلیل این ایزوله‌سازی مضاعف، به اشتراک‌گذاری محتوا با فرایندها و کانتینرهای دیگر در خارج از ماشین مجازی krun دشوارتر است.

ماشین مجازی مایکرو (microVM) می‌تواند از طریق حاشیه‌نویسی‌های OCI یا یک فایل .krun_vm.json واقع در ریشه ایمیج کانتینر پیکربندی شود. زمانی که هر دو وجود داشته باشند، حاشیه‌نویسی‌های OCI اولویت دارند.

حاشیه‌نویسی‌های OCI می‌توانند در زمان ایجاد کانتینر ارسال شوند. به عنوان مثال در podman:

podman run --runtime=krun --annotation krun.nested_virt=1 ...

حاشیه‌نویسی‌های زیر پشتیبانی می‌شوند:

تعداد vCPUها برای microVM (حداکثر ۱۶). در صورت عدم تنظیم، به طور پیش‌فرض برابر با تعداد پردازنده‌های در دسترس از طریق وابستگی پردازنده (CPU affinity) فرایند خواهد بود.
میزان حافظه RAM بر حسب مبی‌بایت (MiB) برای microVM. مقادیر کمتر از ۱۲۸ مبی‌بایت نادیده گرفته می‌شوند. در صورت عدم تنظیم، به طور پیش‌فرض محدودیت حافظه OCI (در صورت وجود) یا ۱۰۲۴ مبی‌بایت اعمال می‌شود.
فعال‌سازی virtio-gpu با فلگ‌های مشخص‌شده virgl. نیازمند در دسترس بودن /dev/dri است. هنگامی که FLAGS شامل VIRGLRENDERER_RENDER_SERVER باشد، باید /usr/libexec/virgl_render_server نیز در دسترس باشد.
هنگامی که روی مقداری بزرگتر از 0 تنظیم شود، شبکه‌بندی مبتنی بر passt را در microVM فعال می‌کند.
هنگامی که روی مقداری بزرگتر از 0 تنظیم شود، مجازی‌سازی تودرتو (Nested Virtualization) را در microVM فعال کرده و پشتیبانی از مجازی‌سازی سخت‌افزاری (VMX در Intel و SVM در AMD) را در اختیار سیستم مهمان قرار می‌دهد. این قابلیت نیازمند فعال بودن مجازی‌سازی تودرتو روی میزبان است (مثلاً /sys/module/kvm_intel/parameters/nested یا /sys/module/kvm_amd/parameters/nested باید مقدار Y یا 1 را گزارش دهند). در صورتی که به نظر برسد میزبان از مجازی‌سازی تودرتو پشتیبانی نمی‌کند، یک هشدار صادر می‌شود.
انتخاب یک گونه (Variant) جایگزین از libkrun. مقادیر پشتیبانی‌شده عبارتند از sev (بار کاری محرمانه AMD SEV) و aws-nitro (محیط‌های امنیتی AWS Nitro Enclaves).

یک فایل .krun_vm.json می‌تواند در ریشه ایمیج کانتینر قرار گیرد تا تنظیمات پیش‌فرض VM را فراهم کند. این فایل یک شیء JSON با فیلدهای اختیاری زیر است:

  • cpus (عدد صحیح): مشابه حاشیه‌نویسی krun.cpus.
  • ram_mib (عدد صحیح): مشابه حاشیه‌نویسی krun.ram_mib.
  • gpu_flags (عدد صحیح): مشابه حاشیه‌نویسی krun.gpu_flags.
  • use_passt (عدد صحیح): مشابه حاشیه‌نویسی krun.use_passt.
  • nested_virt (عدد صحیح): مشابه حاشیه‌نویسی krun.nested_virt.
  • flavor (رشته): مشابه حاشیه‌نویسی krun.variant.
  • kernel_path (رشته): مسیر کرنل خارجی.
  • kernel_format (عدد صحیح): شناسه قالب کرنل.
  • initrd_path (رشته): مسیر ایمیج initrd.
  • kernel_cmdline (رشته): خط فرمان کرنل.
  • virtiofs_tag (رشته): برچسب VirtioFS (پیش‌فرض: /dev/root).
  • virtiofs_shm_size (عدد صحیح): اندازه حافظه مشترک VirtioFS DAX بر حسب بایت (پیش‌فرض: ۵۱۲ مبی‌بایت).

مثال:

{"nested_virt": 1, "cpus": 4, "ram_mib": 2048}

برای مشاهده دستورات در دسترس krun به صفحه راهنمای crun(1) مراجعه کنید.

crun(1)

User Commands