مقالات
داکر و راه اندازی سرور GitLab با استفاده از داکر

پاد در سرویس کوبرنتیز چیست؟

پاد در سرویس کوبرنتیز به عنوان کوچک‌ترین بخش شناخته می‌شود که نقش بسیار مهمی در مدیریت اپلیکیشن‌های کانتینری دارد.

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

معرفی کلی پاد

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

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

محتویات درون یک پاد

محتویات درون یک پاد در کنار یکدیگر برنامه‌ریزی و قرار گرفته‌اند. یک کاربر کوبرنتیز باید مجموعه‌ای از کانتینرهای یکپارچه اپلیکیشن را در یک پاد قرار دهد. بدون وجود پاد، این متعلقات اپلیکیشن یا سرویس‌ها باید روی یک ماشین مجازی یکسان اجرا شوند. محتوای به اشتراک گذاشته شده در یک پاد باید مجموعه‌ای از وجوه ایزوله بودن را داشته باشند، برای مثال می‌توان به namespaceهای لینوکس یا cgroups اشاره کرد. برای یک پاد تک کانتینری نیز، اپلیکیشن‌های تنها می‌توانند ایزوله شوند.

نمایش اطلاعات یک پاد

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

مدیریت پادهای کوبرنتیز

کوبرنتیز همانند CoreOs و CRI-O از runtime پلتفرم داکر نیز پشتیبانی می‌کند. کاربران در سرویس کوبرنتیز می‌توانند خودشان اقدام به ایجاد پاد کنند، اما در اکثر مواقع Kubernetes Controler این کار را با بهترین بازدهی ممکن انجام می‌دهد. زمانی که کاربر درخواستی را می‌دهد، برای مثال درخواست ساخت سه پاد جدید می‌دهد، سرویس کوبرنتیز سه پاد جدید با استفاده منابع موجود در API مربوط می‌سازد. سرویس زمان‌بندی یا Scheduler کوبرنتیز بهترین و مناسب‌ترین گره برای هر پاد را با استفاده از خط‌مشی‌های مشخص در کوبرنتیز، محل قرارگیری و خود محتویات پاد، پیدا می‌کند.

کانتینرهای درون یک پاد، آدرس آی پی و فضای پورت یکسانی را استفاده می‌کنند. آن‌ها می‌توانند یکدیگر را از طریق یک localhost  یا میزبان محلی پیدا کنند. اپلیکیشن‌های قرار داده شده در یک پاد، به Volumeهای به اشتراک گذاشته شده‌ای که به پاد متصل شده‌اند، دسترسی دارند.

برقراری ارتباط با سایر استانداردها

علاوه بر موارد ذکر شده، پاد به کانتینرها اجازه برقراری ارتباط از طریق سایر استانداردها مانند اشتراک حافظه POSIX یا SystemV را نیز می‌دهد. کانتینرهای درون یک پاد  از آی‌پی آدرس‌های مختلفی نسبت به سایر کانتینرها در پادهای دیگر استفاده می‌کنند و از پروتکل IPC نمی‌توانند استفاده کنند. اگرچه در سرویس کوبرنتیز ارتباط بین پادها به سادگی توسط سرویس‌های آن شکل می‌گیرد. برای مثال اگر بخش Front-End یک اپلیکیشن در یک پاد در یک گره ساکن باشد، قسمت Backe-End نیز می‌تواند روی یک پاد دیگر در همان گره قرار بگیرد. به همین دلیل این دو بخش در یک گره می‌توانند به یکدیگر به سادگی متصل شوند.

پادها چگونه مورد استفاده قرار می‌گیرند؟

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

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

کلام آخر

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

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