پادها کوچکترین واحدهای محاسباتی قابل دیپلوی هستند که میتوانید در Kubernetes ایجاد و مدیریت کنید. به طور کلی میتوان گفت Pod، گروهی از یک یا چند کانتینر اپلیکیشن (application containers) متصل به هم است که دارای منابع ذخیرهسازی مشترک، شبکه و دستور مشخصی برای نحوه اجرای کانتینرها است. همیشه محتویات هر Pod در مکانی مشترک و از پیش تعیین شده قرار میگیرد و اجرای آنها نیز در زمینهای مشترک انجام میشوند. در زمینههای غیرابری، برنامههایی که روی سرورهای فیزیکی یا مجازی اجرا میشوند، مشابه اپلیکیشنهای ابری اجرا شده روی یک logical host هستند.
علاوهبر کانتینرهای اپلیکیشن، یک Pod میتواند حاوی init containers باشد که در هنگام راهاندازی پاد اجرا میشوند. اگر کلاستر شما ephemeral containers را پیشنهاد میدهد، میتوانید برای دیباگ از آن استفاده کنید. در ادامه مقاله، با Pod در کوبرنتیز بیشتر آشنا خواهیم شد.
کانتینرهای اینیت، کانتینرهایی هستند که قبل از اپلیکیشن اصلی داخل یک پاد اجرا میشوند؛ کارهایی را انجام میدهند و پس از مدتی اجرای آنها تمام میشود. همانطور که میدانید، یک پاد میتواند شامل یک یا چند کانتینر باشد که در کنار هم اجرا میشوند. اما، تفاوت کانتینرهای اینیت این است که قبل از کانتینرهای دیگر اجرا میشوند و پس از مدتی که اجرایشان به پایان برسد، نوبت به اجرای کانتینرهای دیگر میرسد. اما اجرای این کانتینرها چه فایدهای دارد؟ معمولا این کانتینرها شامل ابزارها یا اسکریپتهایی هستند که در image اپلیکیشن وجود ندارند و در واقع، لزومی هم ندارد که وجود داشته باشند.
پس، میتوان گفت که کانتینرهای اینیت مثل دیگر کانتینرها هستند، اما دو تفاوت اصلی دارند:
pod در کوبرنتیز، مجموعهای از یک یا چند کانتینر است که کوچکترین واحد برنامه Kubernetes نیز محسوب میشود. هر پاد میتواند از یک یا چند کانتینر متصل به هم تشکیل شده باشد.
اگر یک پاد (یا نودی که روی آن اجرا میشود) از کار بیفتد، Kubernetes میتواند به طور خودکار یک کپی جدید از آن پاد برای ادامه عملیات ایجاد کند. همچنین، قابلیت Ephemeral Container این امکان را به شما خواهد داشت که به یک پاد در حال اجرا، کانتینری اضافه کنید.
رابطه پادها با کلاسترها به این دلیل است که کوبرنتیز (Kubernetes) به طور مستقیم کانتینرها را اجرا نمیکند و برای اجرای آنها باید از پادها استفاده کرد. از این طریق، کوبرنتیز مطمئن میشود که هر کانتینر درون آنها شبکه محلی یکسانی را به اشتراک میگذارد. گروهبندی کانتینرها به این روش به آنها اجازه میدهد تا با یکدیگر ارتباط برقرار کنند، انگار که سختافزار فیزیکی مشابهی دارند، در حالی که همچنان تا حدودی از هم جدا و یا به عبارتی ایزوله هستند.
این سازماندهی کانتینرها (container) به صورت پاد (Pod)، مبنای یکی از ویژگیهای شناخته شده کوبرنتیز است: تکرار. هنگامی که کانتینرها به صورت پاد سازماندهی میشوند، Kubernetes میتواند در صورت نیاز از کنترلکنندههای تکرار (replication controllers) برای مقیاسپذیری یک برنامه استفاده کند. در واقع، این بدان معنی است که اگر یک پاد بیش از حد لود شود (overload)، کوبرنتیز میتواند به طور خودکار آن را تکرار و در کلاستر خود مستقر کند. در واقع pod در کوبرنتیز، از عملکرد سالم در طول دورههایی که بار لود زیاد است (heavy load)، به طور مداوم تکرار میشود تا مقاومت در برابر از کار افتادن را برای سیستم ایجاد کند.
به حداکثر رساندن مزایای المانهای قابل استفاده مجدد مانند Pods، یکی از مزایای اصلی سیستم کوبرنتیز است. برای کشف بهترین کاربردهای Kubernetes در محیطهای عملیاتی نیاز به سالها آزمون و خطا است.
با این حال، به دلیل پایه استانداردهای باز که Kubernetes بر آن بنا شده است، الگوهای موفقیت (و شکست) از طریق آزمون و خطای پذیرندگان اولیه پدیدار شده است. این الگوها طرحهای تکرارپذیری (replicable designs) را ارائه میکنند که بسیاری از سازمانها میتوانند از آنها برای تسریع در تصمیمگیری خود در رابطه با پادها استفاده کنند.
پادها برای پشتیبانی از چندین فرآیند که در کنار هم و با همکاری هم انجام میشوند (که فرآیندهای کانتینرها است)، طراحی شدهاند. پادها یک واحد منسجم را تشکیل میدهند که میتوان گفت به طور کلی، کار این واحد خدماترسانی است. کانتینرهای درون یک Pod که در یک ماشین فیزیکی یا مجازی قرار دارند، به صورت خودکار در کلاستر قرار میگیرند و همزمان نیز برنامهریزی میشوند. کانتینرها میتوانند از منابع اشتراکی استفاده کنند، با یکدیگر ارتباط برقرار کنند و زمان و دلیل ترمینیت (نحوه مرگ) را هماهنگ کنند.
لازم است بدانید که نوعی کانتینر وجود دارد به نام کانتینر sidecar. این نوع کانتینر میتواند دو کانتینری که نیاز دارند حتما باهم حتما اجرا شوند را اجرا کنند که خود آن در کنار main container قرار میگیرد و volume و network مشترک با main container دارد.
به عنوان مثال، ممکن است یک کانتینر داشته باشید که به عنوان یک وب سرور برای فایلها در یک Volume مشترک عمل میکند، و یک کانتینر مجزای “sidecar” که آن فایلها را از یک منبع ریموت بروزرسانی میکند، مانند دیاگرام زیر:
برخی از پادها دارای کانتینرهای init و همچنین کانتینرهای app هستند. کانتینرهای Init قبل از راهاندازی کانتینرهای app اجرا و تکمیل میشوند.
Pod در کوبرنتیز، به طور ذاتی دو نوع منبع مشترک را برای کانتینرهای تشکیلدهنده خود فراهم میکند: شبکه و منبع ذخیرهسازی.
در این مقاله پاد را تعریف کردیم و گفتیم که Pod در کوبرنتیز، کوچکترین واحد محاسباتی قابل دیپلوی است که میتوانید در Kubernetes ایجاد و مدیریت کنید. در مورد پاد نیز گفتیم که شامل یک یا چند کانتینر اپلیکیشن (application containers) متصل به هم است که دارای منابع ذخیرهسازی مشترک، شبکه و دستور مشخصی برای نحوه اجرای کانتینرها است.
پادها برای پشتیبانی از چندین فرآیند که در کنار هم و با همکاری هم انجام میشوند (که فرآیندهای کانتینرها است)، طراحی شدهاند و به طور کلی میتوان گفت، وظیفهی پادها خدماترسانی است. در کوبرنتیز، اگر یک پاد (یا نودی که روی آن اجرا میشود) از کار بیفتد، Kubernetes میتواند به طور خودکار یک کپی جدید از آن پاد برای ادامه عملیات ایجاد کند. همچنین، قابلیت Ephemeral Container این امکان را به شما خواهد داشت که به یک پاد در حال اجرا، کانتینری اضافه کنید.
برتینا، ارائهدهنده انواع خدمات هاستینگ با بالاترین کیفیت، پشتیبانی ۲۴ ساعته و آپتایم ۹۹.۹٪ است. برای انتخاب و خرید سرویس هاستینگ، میتوانید از طریق تیکت یا تماس با شماره ۶۱۰۶۴-۰۲۱ اقدام کنید.
این مطلب چقدر برای شما مفید بود؟
امتیاز 4.2 / 5. تعداد نظرات : 5
اولین نظر را شما ثبت کنید!