Skip to main content

توضیح Eventهای پاد

مقدمه

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

وضعیت‌هایی که یک اپ دارکوب می‌تواند داشته باشد عبارت اند از:

  • Running
  • Disabled
  • Not Ready
  • Initializing
  • Error
  • Pending
  • Evicted

در این مستند می‌خواهیم وضعیت‌های اپ و علل احتمالی آن‌ها را توضیح دهیم.

وضعیت Running

زمانی که اپ ساخته می‌شود و پاد یا پادهای آن به درستی اجرا می‌شوند، وضعیت اپ Running می‌شود.

وضعیت Disabled

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

وضعیت Not Ready

وقتی کانتینر داخل پاد شروع به اجرا می‌کند، می‌توان آن را امتحان کرد که کار می‌کند یا نه. مثلا یک درخواست HTTP به /status روی پورت 80 بفرستیم.در کنسول دارکوب چنین امکانی فراهم است. در اپ‌های آماده هم چنین کاری انجام می‌شود تا از سلامت پادها اطمینان حاصل شود. اگر تعداد مشخصی از این امتحان‌ها با موفقیت پاس نشود (مثلا درخواست HTTP کد 200 برنگرداند) وضعیت آن پاد و در نتیجه آن اپ Not Ready می‌شود. این به معنای آن است که اپ مشکلی دارد و باید بررسی شود. در این حالت کانتینر در حال اجراست ولی در عملکرد خود مشکل دارد. گاهی هم در ابتدای ساخت اپ یا restart کردن آن که پاد هنوز به طور کامل آماده نشده این وضعیت را به شکل موقتی برای اپ می‌بینید.

وضعیت Initializing

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

وضعیت Error

در این وضعیت کانتینر درون پاد دیگر اجرا نمی‌شود. در قسمت eventهای اپ می‌توانید توضیحات بیشتری در این مورد ببینید که یکی از حالات زیر است:

  • حالت Completed: کانتینر داخل پاد کار خود را انجام داده و با return code صفر خارج شده است. احتمالا با دادن ENTRYPOINT یا CMD درست در داکرفایل مشکل رفع شود. یا می‌توانید در کنسول دارکوب برای اپ دستور اجرایی بنویسید.

  • حالت CrashLoopBackoff: کانتینر داخل پاد در اجرا دچار خطا شده است. ممکن است این خطا به خاطر عدم دسترسی به یک دیتابیس یا سرویس جانبی دیگر باشد. این مورد موقعی که در خود برنامه هم اشکالی وجود داشته باشد دیده می‌شود. خواندن لاگ‌های پاد می‌تواند به خطایابی و رفع آن کمک کند.

  • حالت ImagePullBackoff: در پول کردن ایمیج مشکلی وجود دارد. ممکن است به خاطر اختلالات اینترنتی باشد یا آدرس ایمیج درست نباشد.

وضعیت Pending

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

وضعیت Evicted

پاد به دلیل کمبود منابع terminate شده است. معمولا به خاطر پر شدن فضای ephemeral در پاد این حالت رخ می‌دهد. فضای ephemeral فضایی در پاد است که بر خلاف دیسک باقی نمی‌ماند و با restart کردن پاد پاک می‌شود.