مفهوم Pod در kubernetes چیست و چطور کار می کند

Kubernetes Pod چیست آموزش banner

مفهوم Pod در kubernetes چیست و چطور کار می کند

What is pod on kubernetes and how it works

 

درک مفهوم Pod ها

یک Pod پایه ای ترین قسمت Kubernetes است و همچنین کوچکترین و ساده ترین قسمت از مدل اشیاء Kubernetes است ، که می توان آن را ایجاد کرد و توسعه داد. یک Pod نمایانگر پردازش در حال اجرا در کلاستر می باشد. اگر با Kubernetes و نصب و راه اندازی آن اطلاعات کافی ندارید ، صفحه مربوطه به آموزش راه اندازی Kubernetes را مطالعه کنید. 

یک Pod ، یک مخزن application ( و در برخی موارد چندین مخزن ) ، منابع ذخیره ساز ، یک آدرس IP منحصر به فرد و گزینه هایی که مشخص می کنند مخزن ها چطور اجرا شوند را ، کپسوله می کند. یک Pod نشان دهنده یک قسمت از توسعه است : یک نمونه کوچک از یک برنامه Kubernetes که یا حاوی یک مخزن است و یا شامل چند مخزن وابسته به یکدیگر است و این منابع به اشتراک گذاشته می شود.

Pod ها از تمامی مخازن زمان اجرا به خوبی پشتیبانی می کنند و Docker که محبوب ترین مخزن زمان اجرا است نیز از Kubernetes Pods استفاده می کند.

از Pod ها در کلاسترینگ Kubernetes به دو روش استفاده می شود :

  1. Pod های شامل یک مخزن : “one-container-per-Pod” محبوب ترین حالت مورد استفاده دز Kubernetes است. در این حالت فرض کنید که یک مخزن بسته بندی شده است و Kubernetes به جای استفاده مستقیم از مخزن از Pod استفاده می کند.
  2. Pod های شامل چند مخزن که برای کار کردن به یکدیگر نیاز دارند : یک Pod می تواند شامل یک برنامه چند مخزن مورد نیاز به صورت محلی باشد که این مخزن ها به شدت به یکدیگر وابسته هستند ، و همه این ها در یک Pod به اشتراک گذاشته شده اند. این مخزن هایی که به صورت محلی بسته بندی شده اند به صورت یک واحد یکپارچه مانند یک مخزن از فایل های منابع به اشتراک گذاشته شده به صورت عمومی سرویس دهی می کنند ، در حالی که یک مخزن جداگانه این فایل ها را به روز رسانی و مجدد بازخوانی می کند. Pod این مخازن و ذخیره ساز های به اشتراک گذاشته شده را بسته بندی کرده و یک موجودیت جدید با قابلیت مدیریت ارائه می کند.

هر Pod به معنای اجرای یک نمونه برنامه تعیین شده است. اگر می خواهید چندین برنامه را به صورت موازی و همزمان اجرا کنید ، باید برای هرکدام یک Pod را اجرا کنید. در Kubernetes به این کار replication گفته می شود. Replicates Pod ها معمولا به صورت گروهی و به وسیله مفهومی به نام Controller ایجاد و مدیریت می شوند. برای اطلاعات  بیشتر Pod ها و Controller ها را مطالعه کنید.

چطور Pod ها چندین مخزن را کنترل می کنند

Pod ها برای تبدیل چندین پردازش وابسته به یکدیگر ( مانند مخازن ) و ارائه آنها به صورت یک سرویس یکپارچه طراحی شده است. مخازن موجود در Pod به صورت خودکار و به صورت محلی و زمان بندی شده بر روی یک ماشین مجازی یا کلاستر کار می کنند. این مخزن ها منابع و پیش نیازهایشان را به اشتراک می گذارند و با یکدیگر در ارتباط هستند و به صورت هماهنگ با یکدیگر تا خاتمه کار همکاری دارند.

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

Kubernetes Pod Diagram

نمودار Pod :

Pod ها دو منبع مشترک را برای مخزن های تشکیل دهنده آن ارائه می کند : شبکه و ذخیره ساز.

شبکه

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

ذخیره ساز

یک Pod می تواند مجموعه از ذخیره سازهای به اشتراک گذاشته را داشته باشد. همه مخزن های داخل Pod می توانند به ذخیره سازهای به اشتراک گذاشته شده دسترسی داشته باشند و همچنین می توانند اجازه دسترسی به داده های به اشتراک گذاشته شده را نیز داشته باشند. همچنین می توان دسترسی دائم و خودکار به ذخیره سازهای مشترک داد تا اگر مخزنی نیاز به راه اندازی مجدد داشت این دسترسی از بین نرود.

کار کردن با Pod ها

Pod ها برای اهداف و مصارف نسبتا کوتاه مدت طراحی شده اند و به همین دلیل به ندرت پیش می آید که Pod های تکی در Kubernetes ایجاد کنید. هنگامی که یک Pod ایجاد می شود ( چه مستقیما توسط خودتان یا غیر مستقیم توسط Controller ) برنامه ریزی می شود تا در یک گره یا Node در کلاستر اجرا شود و در همان Node تا زمان اتمام پردازش ، حذف شدن Pod ، خارج کردن Pod از گره به علت کمبود منابع و یا بروز خطا در گره ، باقی می ماند.

نکته : راه اندازی مجدد یک مخزن داخل Pod نباید با راه اندازی مجدد خود Pod اشتباه گرفته شود. یک Pod خودش اجرا نمی شود ولی یک زیرساختی را فراهم می کند که مخزن ها تا زمانی که حذف نشده اند در آن اجرا می شوند.

Pod ها حالت خود درمانی یا خود ترمیمی ندارند و اگر وقتی زمان بندی شده اند که در یک گره کار کنند ، دچار مشکل شوند ، Pod ها حذف می شوند. به همین ترتیب اگر گره ای دچار مشکل کمبود منابع شود و یا برای رفع مشکل در حالت تعمیرات قرار گیرد ، Pod ها حذف خواهند شد. Kubernetes از کی مفهموم سطح بالایی به نام Controller استفاده می کند که تا حدودی کارهایی که Pod ها باید انجام دهند را مدیریت می کنند. این حالت استفاده Kubernetes از Controller ها برای مدیریت Pod ها بسیار رایج است.

Pod ها و Controller  ها

یک Controller می تواند چندین Pod را ایجاد و مدیریت کند ، مدیریت Replication ها و برنامه ریزی ها و حالت خود تعمیری در کلاستر. برای مثال اگر یک گره دچار خطا شود ، به صورت خودکار یک گره یکسان دیگر را جایگزین می کند.

قالب های Pod

قالب های Pod ها مشخصات فنی آن ها هستند و شامل عناصر دیگر مانند Replication Controllers, Jobs, و DaemonSets می شوند. Controller ها با استفاده از قالب ها Pod ها رو ایجاد می کنند. در زیر یک مثال روشن از یک Pod آورده شده که شامل یک مخزن است که یک پیغام را چاپ می کند :

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

Leave a Reply