پرش به مطلب اصلی

به‌روزرسانی کانتینرها

دستور update برای تغییر پیکربندی یک کانتینر در حال اجرا استفاده می‌شود، بدون اینکه نیاز به حذف و بازسازی آن باشد. این دستور برای مدیریت منابع پردازنده، حافظه، و سایر محدودیت‌های سیستمی بسیار کاربردی است.


🧩 دستور کلی

k3 container update [options] <containerId>
  • containerId: شناسه کانتینری که می‌خواهید پیکربندی آن را تغییر دهید.

⚙️ گزینه‌ها (Options)

گزینه کوتاهگزینه بلندتوضیح
--blkio-weight <value>وزن IO برای cgroup (عدد بین 10 تا 1000)
--cpu-period <value>دوره CPU CFS برای محدودیت سخت (بر حسب میکروثانیه)
--cpu-quota <value>سقف سخت مصرف CPU (بر حسب میکروثانیه)
--cpu-rt-period <value>دوره زمان‌بندی RealTime برای CPU
--cpu-rt-runtime <value>سقف RealTime مصرف CPU
--cpu-share <value>سهم CPU تخصیص‌یافته (مقدار نسبی)
--cpuset-cpus <value>اختصاص CPUهای خاص (مثلاً 0,1 یا 0-3)
--cpuset-mems <value>اختصاص گره‌های حافظه خاص
--kernel-memory <value>محدودیت حافظه کرنل
--kernel-memory-tcp <v>محدودیت حافظه کرنل برای بافرهای TCP
--l3-cache-schema <v>طرح تخصیص کش L3 (Intel RDT/CAT)
--mem-bw-schema <v>طرح تخصیص پهنای‌باند حافظه (Intel RDT/MBA)
--memory <value>محدودیت کل حافظه
--memory-reservation <v>رزرو حافظه (soft_limit)
--memory-swap <value>مجموع مصرف حافظه و swap
--pids-limit <value>حداکثر تعداد پردازش‌های مجاز در کانتینر
-r--resources <file>مسیر فایل پیکربندی منابع (برای اعمال تنظیمات آماده)
-h--helpنمایش راهنمای کامل دستور

📥 مثال‌های کاربردی

✅ تغییر محدودیت حافظه کانتینر:

k3 container update --memory 512MB 08a79d22

✅ تغییر محدودیت پردازش‌های مجاز:

k3 container update --pids-limit 100 08a79d22

✅ اختصاص CPU خاص به کانتینر:

k3 container update --cpuset-cpus 0-1 08a79d22

✅ بارگذاری تنظیمات منابع از فایل آماده:

k3 container update --resources /path/to/resources.json 08a79d22

✅ تغییر همزمان چند منبع:

k3 container update --memory 1GB --cpu-quota 50000 --cpuset-cpus 0-2 08a79d22

نکات مهم

این دستور فقط برای کانتینرهای موجود کاربرد دارد و باعث حذف یا راه‌اندازی مجدد کانتینر نمی‌شود.

برای اعمال تغییرات گسترده و چند گزینه‌ای، می‌توانید فایل resources آماده کنید و با گزینه --resources اعمال کنید.

مقدار حافظه می‌تواند با واحد MB (مگابایت) یا GB (گیگابایت) مشخص شود.


تست جامع

#!/bin/bash

echo "Starting k3 container update tests..."

echo "[1] Setting memory to 1GB, CPU quota to 50000 microseconds, and PID limit to 200 for container contID"
sudo k3 container update --memory 1GB --cpu-quota 50000 --pids-limit 200 contID
echo

echo "[2] Assigning CPUs 1 and 3 and memory node 0 to container contID"
sudo k3 container update --cpuset-cpus 1,3 --cpuset-mems 0 contID
echo

echo "[3] Setting RealTime CPU period to 1,000,000 and runtime to 950,000 microseconds"
sudo k3 container update --cpu-rt-period 1000000 --cpu-rt-runtime 950000 contID
echo

echo "[4] Setting IO weight to 500 for container contID"
sudo k3 container update --blkio-weight 500 contID
echo

echo "[5] Setting kernel memory TCP limit to 64MB for container contID"
sudo k3 container update --kernel-memory-tcp 64MB contID
echo

echo "[6] Loading resource settings from a JSON config file"
sudo k3 container update --resources /configs/resourceLimits.json contID
echo

echo "[7] Setting memory reservation (soft limit) to 256MB"
sudo k3 container update --memory-reservation 256MB contID
echo

echo "[8] Updating multiple resources at once: memory 2GB, CPU quota 80000, CPUs 0-2"
sudo k3 container update --memory 2GB --cpu-quota 80000 --cpuset-cpus 0-2 contID
echo

echo "All update tests completed."

🆘 دریافت راهنما

برای مشاهده‌ی راهنمای کامل این دستور در خط فرمان:

k3 container update -h