/etc/containerd/config.toml(5) File Formats Manual /etc/containerd/config.toml(5)

containerd-config.toml - پرونده پیکربندی containerd

پرونده config.toml یک پرونده پیکربندی برای دیمن containerd است. این پرونده برای استفاده توسط دیمن باید در مسیر /etc/containerd/config.toml قرار گیرد یا با گزینه --config در دستور containerd مشخص شود. اگر این پرونده در مسیر مناسب وجود نداشته باشد یا از طریق گزینه --config ارائه نشود، containerd از تنظیمات پیش‌فرض خود استفاده می‌کند که می‌توان آن را با دستور containerd config(1) نمایش داد.

پرونده TOML مورد استفاده برای پیکربندی تنظیمات دیمن containerd شامل فهرست کوتاهی از تنظیمات سراسری و به دنبال آن مجموعه‌ای از بخش‌ها برای حوزه‌های خاص پیکربندی دیمن است. همچنین بخشی برای plugins وجود دارد که به هر افزونه containerd اجازه می‌دهد بخشی اختصاصی برای پیکربندی و تنظیمات خاص خود داشته باشد.

فیلد version در پرونده پیکربندی، نسخه پیکربندی را مشخص می‌کند. اگر هیچ شماره نسخه‌ای در پرونده پیکربندی مشخص نشود، نسخه ۱ فرض شده و مطابق آن تجزیه می‌شود. نسخه ۴ جدیدترین نسخه پیکربندی است. پیکربندی‌های قدیمی‌تر هنگام راه‌اندازی به طور خودکار مهاجرت داده می‌شوند.
دایرکتوری ریشه برای فراداده‌های (metadata) containerd. (پیش‌فرض: "/var/lib/containerd")
دایرکتوری وضعیت (state) برای containerd (پیش‌فرض: "/run/containerd")
دایرکتوری محل ذخیره‌سازی افزونه‌های پویا
[grpc] (در نسخه ۴ منسوخ شده است)
بخش تنظیمات شنونده سوکت gRPC. در نسخه ۴، به جای آن از افزونه‌های سرور io.containerd.server.v1.grpc و io.containerd.server.v1.grpc-tcp استفاده کنید. پیکربندی‌های موجود به طور خودکار مهاجرت داده می‌شوند. شامل ویژگی‌های زیر است:
  • address (پیش‌فرض: "/run/containerd/containerd.sock")
  • tcp_address
  • tcp_tls_cert
  • tcp_tls_key
  • uid (پیش‌فرض: 0)
  • gid (پیش‌فرض: 0)
  • max_recv_message_size
  • max_send_message_size
[ttrpc] (در نسخه ۴ منسوخ شده است)
بخش تنظیمات TTRPC. در نسخه ۴، به جای آن از افزونه سرور io.containerd.server.v1.ttrpc استفاده کنید. در نسخه‌های پیشین، هنگامی که نشانی TTRPC به طور صریح تنظیم نشده بود، از نشانی GRPC مشتق می‌شد (grpcAddress + ".ttrpc") و UID/GID مربوط به GRPC را به ارث می‌برد. در نسخه ۴، هر افزونه سرور به طور مستقل پیکربندی می‌شود؛ افزونه TTRPC هنگامی که بلوک پیکربندی آن حذف شده باشد از مقادیر پیش‌فرض خود استفاده می‌کند. شامل ویژگی‌های:
  • address (پیش‌فرض: "")
  • uid (پیش‌فرض: 0)
  • gid (پیش‌فرض: 0)
[debug] (در نسخه ۴ منسوخ شده است)
بخش فعال‌سازی و پیکربندی شنونده سوکت اشکال‌زدایی. در نسخه ۴، به جای آن از افزونه سرور io.containerd.server.v1.debug استفاده کنید. شامل ویژگی‌های:
  • address (پیش‌فرض: "/run/containerd/debug.sock")
  • uid (پیش‌فرض: 0)
  • gid (پیش‌فرض: 0)
  • level (پیش‌فرض: "info") تنظیم سطح گزارش اشکال‌زدایی. سطوح پشتیبانی‌شده عبارتند از: "trace"، "debug"، "info"، "warn"، "error"، "fatal"، "panic"
  • format (پیش‌فرض: "text") تنظیم قالب گزارش وقایع. قالب‌های پشتیبانی‌شده "text" و "json" هستند
[metrics] (در نسخه ۴ منسوخ شده است)
بخش فعال‌سازی و پیکربندی شنونده سنجه‌ها (metrics). در نسخه ۴، به جای آن از افزونه سرور io.containerd.server.v1.metrics استفاده کنید. شامل ویژگی‌های:
  • address (پیش‌فرض: "") نقطه پایانی سنجه‌ها به طور پیش‌فرض گوش نمی‌دهد
  • grpc_histogram (پیش‌فرض: false) فعال یا غیرفعال کردن سنجه‌های هیستوگرام gRPC
افزونه‌های غیرفعال شناسه‌های افزونه‌هایی هستند که باید غیرفعال شوند. افزونه‌های غیرفعال‌شده مقداردهی اولیه و راه‌اندازی نخواهند شد.
افزونه‌های الزامی شناسه‌های افزونه‌های مورد نیاز هستند. اگر هر یک از افزونه‌های الزامی وجود نداشته باشد یا در مقداردهی اولیه یا راه‌اندازی با شکست مواجه شود، containerd متوقف می‌شود.
[plugins]
بخش افزونه‌ها شامل گزینه‌های پیکربندی ارائه‌شده از سوی افزونه‌های نصب‌شده است. افزونه‌های زیر به طور پیش‌فرض فعال هستند و تنظیمات آن‌ها در ادامه نشان داده شده است. افزونه‌هایی که به طور پیش‌فرض فعال نیستند، مستندات مقادیر پیکربندی خود را ارائه خواهند کرد.
•
[plugins."io.containerd.server.v1.grpc"] شنونده اصلی سرور gRPC را پیکربندی می‌کند (نسخه ۴):
  • address (پیش‌فرض: "/run/containerd/containerd.sock")
  • uid (پیش‌فرض: UID موثر)
  • gid (پیش‌فرض: GID موثر)
  • max_recv_message_size (پیش‌فرض: 16777216)
  • max_send_message_size (پیش‌فرض: 16777216)
•
[plugins."io.containerd.server.v1.grpc-tcp"] شنونده سرور gRPC مبتنی بر TCP را پیکربندی می‌کند (نسخه ۴). اگر address خالی باشد نادیده گرفته می‌شود:
  • address (پیش‌فرض: "")
  • tls_cert, tls_key, tls_ca, tls_common_name
  • max_recv_message_size (پیش‌فرض: 16777216)
  • max_send_message_size (پیش‌فرض: 16777216)
•
[plugins."io.containerd.server.v1.ttrpc"] شنونده سرور TTRPC را پیکربندی می‌کند (نسخه ۴). در نسخه ۴، این افزونه مستقل از افزونه gRPC پیکربندی می‌شود. اگر بلوک افزونه حذف شود، سرور TTRPC به جای اشتقاق از نشانی gRPC به نشانی پیش‌فرض خود متصل می‌شود:
  • address (پیش‌فرض: "/run/containerd/containerd.sock.ttrpc")
  • uid (پیش‌فرض: UID موثر)
  • gid (پیش‌فرض: GID موثر)
•
[plugins."io.containerd.server.v1.debug"] شنونده سرور اشکال‌زدایی را پیکربندی می‌کند (نسخه ۴). اگر address خالی باشد نادیده گرفته می‌شود:
  • address (پیش‌فرض: "")
  • uid (پیش‌فرض: 0)
  • gid (پیش‌فرض: 0)
•
[plugins."io.containerd.server.v1.metrics"] شنونده HTTP سنجه‌ها را پیکربندی می‌کند (نسخه ۴). اگر address خالی باشد نادیده گرفته می‌شود:
•
address (پیش‌فرض: "")
  • [plugins."io.containerd.monitor.v1.cgroups"] دارای یک گزینه no_prometheus است (پیش‌فرض: false)
  • [plugins."io.containerd.service.v1.diff-service"] دارای یک گزینه default است که یک فهرست با مقدار پیش‌فرض ["walking"] است
  • [plugins."io.containerd.gc.v1.scheduler"] دارای چندین گزینه است که تنظیم دقیق پیشرفته را برای زمان‌بند انجام می‌دهند:
  • pause_threshold حداکثر زمانی است که GC باید زمان‌بندی شود (پیش‌فرض: 0.02)،
  • deletion_threshold تضمین می‌کند که GC پس از n بار حذف زمان‌بندی شود (پیش‌فرض: 0 [راه‌اندازی نمی‌شود])،
  • mutation_threshold تضمین می‌کند که GC پس از n بار جهش پایگاه‌داده زمان‌بندی شود (پیش‌فرض: 100)،
  • schedule_delay تاخیر پس از رویداد محرک را قبل از زمان‌بندی GC تعریف می‌کند (پیش‌فرض "0ms" [فوری])،
  • startup_delay تاخیر پس از راه‌اندازی را قبل از زمان‌بندی یک GC تعریف می‌کند (پیش‌فرض "100ms")
•
[plugins."io.containerd.runtime.v2.task"] گزینه‌هایی را برای پیکربندی شیم (shim) زمان اجرا مشخص می‌کند:
  • platforms فهرست پلتفرم‌های پشتیبانی‌شده را مشخص می‌کند
  • sched_core زمان‌بندی هسته (Core scheduling) قابلیتی است که اجازه می‌دهد فقط وظایف مورد اعتماد به طور همزمان روی پردازنده‌هایی که منابع پردازشی مشترک دارند (مانند هایپرتریدها روی یک هسته) اجرا شوند. (پیش‌فرض: false)
•
[plugins."io.containerd.service.v1.tasks-service"] دارای گزینه‌های کارایی است:
  • blockio_config_file (فقط لینوکس) مسیر تعاریف کلاس blockio را مشخص می‌کند (پیش‌فرض: ""). اولویت زمان‌بند I/O و محدودسازی پهنای باند را کنترل می‌کند. برای جزئیات قالب پرونده، به پیکربندی blockio در نشانی زیر مراجعه کنید: ⟨https://github.com/intel/goresctrl/blob/main/doc/blockio.md#configuration⟩
  • rdt_config_file (فقط لینوکس) مسیر پیکربندی مورد استفاده برای تنظیم RDT را مشخص می‌کند (پیش‌فرض: ""). پشتیبانی از Intel RDT را فعال می‌کند که فناوری مدیریت پهنای باند حافظه و حافظه نهان (کش) است. برای جزئیات قالب پرونده، به پیکربندی RDT در نشانی زیر مراجعه کنید: ⟨https://github.com/intel/goresctrl/blob/main/doc/rdt.md#configuration⟩
•
[plugins."io.containerd.grpc.v1.cri".containerd] شامل گزینه‌هایی برای افزونه CRI، و گره‌های فرزند برای گزینه‌های CRI است:
•
default_runtime_name (پیش‌فرض: "runc") نام زمان اجرای پیش‌فرض را مشخص می‌کند
  • [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] یک یا چند محیط زمان اجرای کانتینر، هر یک با یک نام یکتا
  • [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.] یک زمان اجرا با نام <runtime>
  • [plugins."io.containerd.grpc.v1.cri".containerd.runtimes..options] گزینه‌های مربوط به <runtime> نام‌گذاری‌شده، مهم‌ترین مورد:
•
BinaryName مسیر زمان اجرای واقعی که توسط شیم فراخوانی می‌شود را مشخص می‌کند، مثلاً "/usr/bin/runc"
امتیاز کمبود حافظه (OOM score) اعمال‌شده به فرآیند دیمن containerd (پیش‌فرض: 0)
[cgroup]
بخش مربوط به تنظیمات خاص cgroup در لینوکس
•
path (پیش‌فرض: "") تعیین یک مسیر سفارشی cgroup برای کانتینرهای ایجادشده
[proxy_plugins]
افزونه‌های پراکسی، افزونه‌هایی را پیکربندی می‌کنند که ارتباط با آن‌ها از طریق gRPC صورت می‌گیرد
  • type (پیش‌فرض: "")
  • address (پیش‌فرض: "")
مهلت‌های زمانی مشخص‌شده به عنوان یک مدت زمان
فهرستی از پرونده‌های پیکربندی اضافی برای گنجاندن. این امکان را فراهم می‌کند که پرونده پیکربندی اصلی تقسیم شده و برخی بخش‌ها به طور جداگانه نگهداری شوند (به عنوان مثال ارائه‌دهندگان می‌توانند پیکربندی زمان اجرای سفارشی را در یک پرونده جداگانه بدون دستکاری config.toml اصلی نگه دارند). پرونده‌های واردشده (imported) فیلدهای ساده مانند int یا string را (در صورت خالی نبودن) بازنویسی می‌کنند و فیلدهای array و map را ضمیمه می‌نمایند. پرونده‌های واردشده نیز دارای نسخه هستند و نسخه آن‌ها نمی‌تواند بالاتر از پیکربندی اصلی باشد.

stream_processors

  • accepts (پیش‌فرض: "[]") انواع رسانه (media-types) خاص را می‌پذیرد
  • returns (پیش‌فرض: "") نوع رسانه را بازمی‌گرداند
  • path (پیش‌فرض: "") مسیر یا نام باینری
  • args (پیش‌فرض: "[]") آرگومان‌های ارسالی به باینری

در ادامه یک نمونه از config.toml با استفاده از نسخه ۴ آمده است که در آن تنظیمات سرور به عنوان افزونه پیکربندی شده‌اند:

version = 4
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = 0
imports = ["/etc/containerd/runtime_*.toml", "./debug.toml"]
[plugins."io.containerd.server.v1.grpc"]
  address = "/run/containerd/containerd.sock"
[plugins."io.containerd.server.v1.ttrpc"]
  address = "/run/containerd/containerd.sock.ttrpc"
[plugins."io.containerd.server.v1.debug"]
  address = "/run/containerd/debug.sock"
  level = "info"
[cgroup]
  path = ""
[plugins]
  [plugins."io.containerd.monitor.v1.cgroups"]
    no_prometheus = false
  [plugins."io.containerd.service.v1.diff-service"]
    default = ["walking"]
  [plugins."io.containerd.gc.v1.scheduler"]
    pause_threshold = 0.02
    deletion_threshold = 0
    mutation_threshold = 100
    schedule_delay = 0
    startup_delay = "100ms"
  [plugins."io.containerd.runtime.v2.task"]
    platforms = ["linux/amd64"]
    sched_core = true
  [plugins."io.containerd.service.v1.tasks-service"]
    blockio_config_file = ""
    rdt_config_file = ""

در ادامه نمونه‌ای از یک پیکربندی جزئی با دو محیط زمان اجرا آمده است:

[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    [plugins."io.containerd.grpc.v1.cri".containerd]
      default_runtime_name = "runc"
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
          privileged_without_host_devices = false
          runtime_type = "io.containerd.runc.v2"
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            BinaryName = "/usr/bin/runc"
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.other]
          privileged_without_host_devices = false
          runtime_type = "io.containerd.runc.v2"
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.other.options]
            BinaryName = "/usr/bin/path-to-runtime"

موارد فوق دو پیکربندی زمان اجرای نام‌گذاری‌شده ایجاد می‌کند - با نام‌های runc و other - و زمان اجرای پیش‌فرض را روی runc قرار می‌دهد. موارد فوق صرفاً برای زمان‌های اجرایی که از طریق CRI فراخوانی می‌شوند به کار می‌روند. برای استفاده از زمان اجرای غیر پیش‌فرض "other" در این مثال، یک مشخصه (spec) شامل گرداننده زمان اجرای با نام "other" خواهد بود تا تمایل به استفاده از پیکربندی زمان اجرای نام‌گذاری‌شده را مشخص کند.

مشخصات CRI شامل پیوند ⟨https://github.com/kubernetes/cri-api/blob/de5f1318aede866435308f39cb432618a15f104e/pkg/apis/runtime/v1/api.proto#L476⟩ است که به زمان اجرای نام‌گذاری‌شده ارجاع می‌دهد.

توجه به قرارداد نام‌گذاری اهمیت دارد. زمان‌های اجرا زیرمجموعه [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] هستند که به هر زمان اجرا یک نام یکتا داده می‌شود، مثلاً [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]. علاوه بر این، هر زمان اجرا می‌تواند گزینه‌های خاص شیم را در زیر [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.<runtime>.options] داشته باشد، برای مثال [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options].

زمان اجرای io.containerd.runc.v2 برای اجرای زمان‌های اجرای سازگار با OCI در لینوکس مانند runc استفاده می‌شود. در مثال بالا، فیلد runtime_type شیم مورد استفاده (io.containerd.runc.v2) را مشخص می‌کند در حالی که فیلد BinaryName یک گزینه خاص شیم است که مسیر زمان اجرای OCI را مشخص می‌نماید.

برای نمونه پیکربندی با نام "runc"، شیم /usr/bin/runc را به عنوان زمان اجرای OCI راه‌اندازی می‌کند. برای نمونه پیکربندی با نام "other"، شیم به جای آن /usr/bin/path-to-runtime را اجرا خواهد کرد.

لطفاً هرگونه مشکل خاصی را که با آن مواجه می‌شوید در نشانی زیر ثبت کنید: https://github.com/containerd/containerd

Phil Estes estesp@gmail.com ⟨mailto:estesp@gmail.com⟩

ctr(8), containerd-config(8), containerd(8)

04/05/2022