توضیح 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 کردن پاد پاک میشود.