Kubit logoکوبیت

بازکردن ترمینال کانتینر در کوبچی

صفحه ترمینال یک نشست تعاملی در یکی از کانتینرهای پک باز می‌کند. در این نشست می‌توانید فایل‌ها، فرایندها و وضعیت شبکه را بررسی و فرمان‌های عیب‌یابی را اجرا کنید.

ترمینال فقط برای مشاهده نیست. هر فرمان با کاربر و مجوزهای همان کانتینر اجرا می‌شود و ممکن است فایل یا داده‌ای را تغییر دهد. پیش از اجرای چنین فرمانی، اثر آن و روش بازگرداندن تغییر را مشخص کنید.

پیش‌نیازها و دسترسی

پک باید یک پاد در حال اجرا داشته باشد و کانتینر انتخاب‌شده نیز باید bash یا sh داشته باشد. نقش شما باید مجوز اجرای ترمینال در پک را داشته باشد. بازشدن صفحه به معنی مجازبودن اتصال نیست؛ پنل هنگام برقراری نشست، دسترسی را دوباره بررسی می‌کند.

ترمینال می‌تواند به فایل‌ها، متغیرهای محیطی و داده‌های نصب‌شده داخل کانتینر دسترسی داشته باشد. رمز، توکن، کلید خصوصی یا محتوای حساس را چاپ و در خروجی عمومی کپی نکنید.

بازکردن صفحه ترمینال

در سایدبار صفحه پک، ترمینال را انتخاب کنید. مسیر دیگر، زدن آیکون نمایش ترمینال در ردیف ورک‌لود یا پاد در صفحه ورک‌لودها است. در این حالت، صفحه ترمینال با همان ورک‌لود یا پاد باز می‌شود.

وقتی صفحه را مستقیم باز می‌کنید، پنل اولین ورک‌لود، پاد و کانتینر معتبر را انتخاب می‌کند و اتصال را خودکار آغاز می‌کند. اگر از میان‌بر یک پاد وارد شده باشید، انتخاب اولیه به همان پاد محدود است.

انتخاب کانتینر

هر نشست فقط به یک کانتینر متصل می‌شود. برای تغییر منبع، ابتدا قطع اتصال را بزنید؛ فیلترها هنگام اتصال غیرفعال‌اند. سپس این موارد را به‌ترتیب انتخاب کنید:

  1. از فهرست ورک‌لود، ورک‌لود مورد نظر را انتخاب کنید.
  2. از فهرست پاد، یکی از پادهای همان ورک‌لود را انتخاب کنید.
  3. از فهرست کانتینر، کانتینری را انتخاب کنید که می‌خواهید داخل آن فرمان اجرا شود.

با تغییر ورک‌لود یا پاد، پنل نخستین پاد و کانتینر معتبر زیرمجموعه انتخاب تازه را جایگزین می‌کند. نام هر سه منبع را پیش از اتصال دوباره بررسی کنید.

ترمینال فقط به همان پاد و کانتینر انتخاب‌شده وصل می‌شود. اگر ورک‌لود چند نمونه دارد، فایل‌ها، فرایندها و وضعیت این نشست لزوماً با پادهای دیگر یکسان نیست. برای بررسی نمونه‌ای دیگر، اتصال را قطع و پاد مورد نظر را جداگانه انتخاب کنید.

برقراری نشست

روی اتصال بزنید. پنل ابتدا bash را اجرا می‌کند و اگر در ایمیج موجود نباشد، به sh برمی‌گردد. پس از برقراری نشست، وضعیت پایین ترمینال به حالت متصل تغییر می‌کند و می‌توانید مانند یک ترمینال معمولی تایپ کنید.

ترمینال متصل به کانتینر یک پک

اندازه نشست با تغییر اندازه پنجره مرورگر هماهنگ می‌شود. Ctrl+C فرمان جلوی نشست را متوقف می‌کند و فرمان exit پوسته و اتصال جاری را می‌بندد. برای پایان‌دادن نشست از دکمه قطع اتصال نیز می‌توانید استفاده کنید.

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

استفاده امن از ترمینال

تغییر مستقیم فایل‌های داخل کانتینر معمولاً ماندگار نیست و با راه‌اندازی دوباره یا جایگزینی پاد از بین می‌رود. برای تغییر پایدار تنظیمات اپلیکیشن از پیکربندی پک استفاده کنید و داده ماندگار را در فضای ذخیره‌سازی تعریف‌شده توسط چارت نگه دارید.

پیش از اجرای فرمان، این نکات را در نظر بگیرید:

  • فرمان‌های حذف، نصب بسته، تغییر مجوز فایل و توقف فرایند می‌توانند اپلیکیشن را مختل کنند.
  • خروجی فرمان‌هایی مانند نمایش متغیرهای محیطی یا خواندن فایل تنظیمات ممکن است داده حساس داشته باشد.
  • دسترسی کانتینر به شبکه، فایل‌های نصب‌شده و سرویس‌های دیگر به تنظیمات همان اپلیکیشن بستگی دارد؛ دسترسی خود را بیشتر از نیاز عیب‌یابی فرض نکنید.
  • بررسی را با فرمان‌های فقط‌خواندنی شروع کنید. فرمان تغییردهنده را فقط زمانی اجرا کنید که اثر آن و روش بازگرداندن تغییر را می‌دانید.

استفاده از فرمان kubectl

پایین صفحه، پنل یک فرمان kubectl exec برای فضای نام، پاد و کانتینر انتخاب‌شده می‌سازد:

kubectl -n <namespace> exec -it pods/<pod> -c <container> -- sh

فرمان را در محیطی اجرا کنید که kubectl برای همان کلاستر پیکربندی شده باشد. این فرمان برخلاف ترمینال پنل مستقیماً sh را اجرا می‌کند؛ اگر ایمیج sh ندارد، نام پوسته یا برنامه موجود در کانتینر را جایگزین کنید. پیش از اجرا، نام فضای نام، پاد و کانتینر را دوباره بررسی کنید.

برای کپی فرمان از آیکون کپی داخل کادر استفاده کنید. کپی‌کردن فرمان آن را اجرا نمی‌کند و نشست تازه‌ای نیز در پنل نمی‌سازد.

مشکلات رایج

فیلترها قابل تغییر نیستند

فیلترهای ورک‌لود، پاد و کانتینر هنگام اتصال یا برقراری اتصال غیرفعال‌اند. قطع اتصال را بزنید و پس از انتخاب منبع تازه دوباره متصل شوید.

اتصال برقرار نمی‌شود

در صفحه ورک‌لودها بررسی کنید که پاد و کانتینر هنوز وجود دارند و در حال اجرا هستند. مجوز اجرای ترمینال، فعال‌بودن کلاستر و دسترسی شبکه مرورگر به اتصال WebSocket را نیز بررسی کنید.

نشست بلافاصله بسته می‌شود

بعضی ایمیج‌های کم‌حجم یا distroless هیچ پوسته‌ای ندارند. اگر کانتینر نه bash دارد و نه sh، ترمینال پنل برای آن باز نمی‌شود. در این حالت از لاگ‌ها، رویدادها یا ابزار عیب‌یابی دیگری که تیم اپلیکیشن در نظر گرفته است استفاده کنید.

تغییرهای داخل کانتینر از بین می‌روند

فایل‌سیستم قابل‌نوشتن کانتینر معمولاً موقت است. با جایگزینی پاد، وضعیت از ایمیج و پیکربندی پک دوباره ساخته می‌شود. تغییر پایدار را از طریق پیکربندی پک اعمال کنید. اگر گزینه مورد نظر در پیکربندی وجود ندارد، چارت باید آن را به‌عنوان ورودی تعریف کند. برای داده نیز از فضای ذخیره‌سازی ماندگار استفاده کنید.

اتصال ناگهانی قطع می‌شود

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

ترمینال | مستندات | کوبیت