Kubernetes pod چیست؟ Kubernetes pod مجموعهای از یک یا چند کانتینر لینوکس و کوچکترین واحد از یک برنامه Kubernetes میباشد.
در سیستم کوبرنتیز، کانتینرهای موجود در یک پاد، منابع محاسباتی یکسانی را به اشتراک خواهند گذاشت. این منابع محاسباتی در Kubernetes با هم ترکیب میشوند تا کلاسترهایی را تشکیل دهند که میتوانند یک سیستم قدرتمندتر و هوشمندانهتر برای اجرای برنامهها ارائه کنند.
Kubernetes را میتوان همانند سیستمعاملی در نظر گرفت که روی چند سرور بهصورت یکپارچه اجرا میشود، درنتیجه باتوجه به اجرای خودکار کانتینر در کوبرنتیز، کاربران میتوانند بهراحتی با اپلیکیشن و سرویسهایشان در تعامل باشند، بدون اینکه نیاز باشد برای هر اپلیکیشن از سیستمعامل جدا استفاده کنند.
در واقع، یک pod مجموعهای از یک یا چند کانتینر مرتبط است که در یک میزبان (node) واحد در کوبرنتیز اجرا میشوند و به صورت مشترک منابع سیستمی (مثل CPU و RAM) و شبکه را به اشتراک میگذارند.
کنترلرهای کوبرنتیز مانند ReplicaSet یا Deployment مسئولیت ساخت و مدیریت podها را بر عهده دارند. همچنین، هر pod دارای آدرس IP منحصر به فردی است که درون یک cluster قابل مشاهده است و امکان ارتباط مستقیم با دیگر podها یا منابع بیرونی را فراهم میکند.
درک واحدهای سخت افزاری و نرم افزاری از کانتینرها تا پادها و از nodeها تا کلاسترها، در ابتدا میتواند چالشبرانگیز باشد، در ادامه مطب Kubernetes pod چیست، شما را با مرتبطترین قطعات آن آشنا خواهیم نمود.
واحدهای سخت افزاری
Node: کوچکترین واحد سخت افزار در کوبرنتیز است که به عنوان یک ماشین مجزا در نظر گرفته میشود.
Cluster: مجموعهای از Nodeها است که برای به اشتراک گذاری و تعادل هوشمند منابع با یکدیگر گروه بندی میشوند.
واحدهای نرم افزاری
Linux container: مجموعهای از یک یا چند فرآیند، شامل تمام فایلهای لازم برای اجرا، که آنها را در سراسر ماشینها قابل حمل میکند.
Kubernetes pod: مجموعهای از یک یا چند کانتینر لینوکس که با هم بستهبندی شدهاند تا مزایای اشتراکگذاری منابع از طریق مدیریت کلاستر را به حداکثر برسانند.
در اصل، سخت افزار فردی در کوبرنتیز به عنوان یک Node نشان داده میشود. تعدادی از این Nodeها در کلاستر جمع آوری میشوند و اجازه میدهند که توان محاسباتی در صورت نیاز توزیع شود.
چندین مورد از آن nodeها در کلاستر جمعآوری میشوند و امکان توزیع قدرت محاسباتی در صورت نیاز را فراهم میکنند.
در ادامه مطلب Kubernetes pod چیست، به تفاوت میان پاد در مقابل Node ،Cluster و container خواهیم پرداخت.
تفاوت Kubernetes Pod با container
Kubernetes Pod حاوی یک یا چند کانتینر است. کانتینر بستهای از وابستگیهای نرم افزاری و منابع مورد نیاز برای اجرای یک برنامه میباشد. این منابع شامل کد، کتابخانهها، ابزارها و تنظیمات است.
Pods یک لایه انتزاعی بر روی کانتینرها ایجاد میکند که وابستگیها و منابعی را فراهم میکند که به Kubernetes اجازه میدهد تا کانتینرها را به طور موثر مدیریت کند.
در مورد کانتینر اطلاعات بیشتری کسب کنید.
تفاوت Kubernetes Pod با Nodes
پادها در کوبرنتیز، در داخل Nodeها در یک کلاستر میزبانی میشوند. Nodeها ماشین مجازی یا فیزیکی هستند که یک کلاستر را اجرا میکنند.
یک Node چندین Pod در آن تعبیه شده است که کانتینرها را اجرا میکنند. دو نوع Node در Kubernetes به عنوان master nodes و worker nodes وجود دارد.
master nodes دارای یک صفحه کنترل است که زمان بندی پادهای موجود در worker nodes را مدیریت میکند.worker nodes میزبان پادهایی هستند که برنامههای کانتینری را اجرا میکنند.
تفاوت Kubernetes Pod با Cluster
در کوبرنتیز، یک کلاستر مجموعهای از Nodeها است. پس از استقرار، پادها به یک یا چند Node در حال اجرا نمونههای یک برنامه اختصاص داده میشوند.
یک کلاستر با استفاده از حداقل یک master nodes و worker nodes ایجاد میشود. از طریق Nodeها، کلاسترها به پادهای Kubernetes محیطهای پیکربندیشده و سبکی برای توسعه، استقرار و مدیریت کارآمد برنامهها ارائه میکنند.
از آنجایی که کانتینرهای Kubernetes میتوانند روی هر سیستم عاملی اجرا شوند، کلاسترها به پادها اجازه میدهند در ماشینها و محیطهای مختلف اجرا شوند.
Pod چه کاری انجام میدهد
Pod نشان دهنده فرآیندهای در حال اجرا در یک کلاستر است. با محدود کردن پادها به یک فرآیند، Kubernetes میتواند در مورد سلامت هر فرآیندی که در کلاستر اجرا میشود، گزارش دهد.
Podها دارای یک آدرس IP منحصر به فرد (که به آنها اجازه میدهد با یکدیگر ارتباط برقرار کنند)، حجم ذخیره سازی پایدار (در صورت نیاز) و اطلاعات پیکربندی که تعیین میکند یک کانتینر چگونه باید اجرا شود، میباشند.
اگرچه اکثر پادها حاوی یک کانتینر واحد هستند، اما بسیاری از آنها دارای چند کانتینر میباشند که برای اجرای یک عملکرد دلخواه با یک دیگر در ارتباط هستند.
Pod چگونه کار میکند
پادها توسط منابع حجم کاری به نام کنترلرها ایجاد میشوند که راه اندازی، تکثیر و سلامت پادها را در کلاستر مدیریت میکنند.
به عنوان مثال، اگر یک Node در کلاستر از کار بیوفتد، یک کنترلر تشخیص میدهد که پادهای آن Node پاسخگو نیستند و پادهای جایگزین را در Nodeهای دیگر ایجاد میکند.
سه نوع رایج از کنترلرها عبارتند از:
- مشاغلی از نوع دستهای که زودگذر هستند و کار را به اتمام میرسانند
- استقرار برنامههایی که بدون حالت و پایدار هستند، مانند وب سرورها (سرورهای HPPT)
- حالتها برای برنامههایی که هم حالت پذیر و هم پایدار هستند، مانند پایگاههای داده
اگر یک Node چندین کانتینر داشته باشد، همه آنها روی یک سرور در کلاستر برنامه ریزی میشوند، فرقی ندارد ماشین مجازی یا سرور فیزیکی باشد.
تمام کانتینرها در پاد، منابع و وابستگیهای خود را به اشتراک میگذارند و میتوانند اجرا و خاتمه فعالیت آنها را هماهنگ کنند.
به عنوان مثال، پادها میتوانند حاوی کانتینرهای “init” باشند که قبل از اجرای کانتینرهای برنامه اجرا میشوند و محیطی را برای برنامههای بعدی، تنظیم میکنند.
Podها تقریبا همیشه توسط کنترلرهایی ایجاد میشوند که میتوانند به طور خودکار چرخه عمر پاد را مدیریت کنند، از جمله جایگزین کردن پادهای ناموفق، تکثیر پادها در صورت لزوم، و خارج کردن پاد از Nodeهای کلاستر، در زمانی که کامل هستند یا دیگر مورد نیاز نیستند.
کنترلرها از اطلاعات موجود در قالب پاد برای ایجاد پاد استفاده میکنند و اطمینان حاصل میکنند که پادهای در حال اجرا با استقرار تعریف شده در قالب پاد مطابقت دارند، برای مثال با ایجاد کپیهایی برای مطابقت با تعداد تعریف شده در استقرار.
نحوه ارتباط Podها با یکدیگر چگونه است
هنگامی که یک pod ایجاد میشود، آدرس IP منحصر به فرد خود را به آن اختصاص میدهد. اگر چندین کانتینر درون پاد وجود داشته باشد، آنها میتوانند به سادگی با استفاده از Localhost بین یکدیگر ارتباط برقرار کنند.
ارتباطات خارج از پاد با قرار دادن یک پورت به دست میآید. ارتباطات بین پادها در یک کلاستر از این واقعیت استفاده میکند که Kubernetes یک آدرس IP خصوصی کلاستر را به هر pid در یک کلاستر اختصاص میدهد و نیازی به ایجاد پیوندهای صریح بین پادها یا نقشه پورتهای کانتینری برای پورتهای میزبان را از بین میبرد. به این ترتیب، هر پاد در یک کلاستر میتواند بدون نیاز به NAT یکدیگر را ببیند.
چرا کوبرنتیز از Podها استفاده میکند
رابطه پادها با کلاسترها به این دلیل است که کوبرنیتها به طور مستقیم کانتینرها را اجرا نمیکنند، در عوض پادها را اجرا میکند تا اطمینان حاصل شود که هر کانتینر درون آنها منابع و شبکه محلی یکسانی را به اشتراک میگذارد.
گروهبندی کانتینرها به این روش به آنها اجازه میدهد تا با یکدیگر ارتباط برقرار کنند، به طوری که سختافزار فیزیکی مشابهی دارند، در حالی که هنوز تا حدی ایزوله باقی ماندهاند.
این سازماندهی کانتینر به صورت پادها، مبنای یکی از ویژگیهای شناخته شده کوبرنتس به نام تکرار است.
هنگامی که کانتینرها به صورت پاد سازماندهی میشوند، کوبرنتس میتواند از کنترلرهای تکرار برای مقیاس افقی یک برنامه در صورت نیاز استفاده کند.
در واقع، این بدان معنی است که اگر یک پاد بیش از حد بارگذاری شود، Kubernetes میتواند به طور خودکار آن را تکرار کند و آن را در کلاستر مستقر کند.
پادهای Kubernetes علاوهبر پشتیبانی از عملکرد سالم در طول دورههای بار سنگین، اغلب به طور مداوم تکرار میشوند تا مقاومت در برابر شکست را برای سیستم ایجاد کنند.
انواع Pod
پادها، کانتینرها را به دو روش اجرا میکند:
Single containers
یک Kubernetes pod میتواند یک کانتینر واحد را اجرا کند. در این حالت، کانتینر نمایانگر یک برنامه کامل، شامل تمام وابستگی ها و منابع مورد نیاز برای اجرای برنامه است. اپلیکیشنهایی که تک کانتینری هستند، ساده و آسان اجرا میشوند.
Multiple container
یک pod در Kubernetes میتواند چندین کانتینر را روی یک سرور اجرا کند. چنین مواردی زمانی اتفاق میافتد که اپلیکیشنهای برنامه به یکدیگر وابسته هستند و نیاز به اشتراکگذاری منابعی مانند فایلها، حجم یا دادهها دارند.
پادهای Kubernetes این وابستگی مشترک را با تشکیل یک لایه انتزاعی بر روی کانتینرها فعال میکنند که در آن به راحتی میتوانند منابع را در یک محیط کنترل شده به اشتراک بگذارند.
همزمان، چندین پاد میتوانند یک اپلیکیشن را اجرا کنند. این مفهوم به عنوان تکرار شناخته میشود.
نحوه کار با Pods چگونه است
با استفاده از یک ابزار خط فرمان به نام kubectl می توان به پادها دسترسی داشت. Kubectl به شما امکان میدهد طیف وسیعی از وظایف مدیریتی را در Nodeها اجرا کنید.
این وظایف ممکن است شامل استقرار برنامهها، بازرسی، مدیریت منابع و مشاهده گزارشها باشد. در ادامه مطلب Kubernetes pod چیست، شما را با برخی از دستورات اساسی مورد استفاده در Kubernetes از طریق kubectl آشنا خواهیم نمود.
دریافت Pods
هنگامی که به دادههایی از پادهای کوبرنیت نیاز دارید، از دستور kubectl get pods استفاده کنید. این دستور اطلاعات جدول بندی شده در مورد منابع موجود در یک pod را به شما میدهد.
اگر اطلاعات مربوط به یک pod خاص را میخواهید، میتوانید از kubectl get pods name_of _pod استفاده کنید.
با استفاده از انتخابگرهای برچسب در دستور kubectl api-resources میتوانید دادهها را مطابق درخواست کاربر فیلتر کنید. نتیجه نمایش خلاصهای از تمام منابع پشتیبانی شده در کلاستر است.
نحوه ایجاد Pods
برای ایجاد یک pod، از دستور kubectl create -f FILENAME$ استفاده کنید. اگرچه این امکان وجود دارد، اما Kubernetes آن را توصیه نمیکند.
دلیل آن زودگذر بودن پادها میباشد و ممکن است با تمام دادههای برنامه از کار بیفتند. در عوض، شما باید با استفاده از کنترلرها، پاد ایجاد کنید.
کنترلکنندههایی مانند Deployment ،Job و StatefulSets اطمینان حاصل میکنند که podها تکرار میشوند، حجم دائمی دارند و به طور موثر و کارآمد اجرا میشوند.
حذف Pods
برای حذف یک pod میتوانید از دستور kubectl delete -f ./mypod.yaml$ استفاده کنید. این دستور فوراً پادها را حذف میکند و مدت مهلت برای خاتمه را لغو میکند.
پادهای Kubernetes دارای مهلت پیش فرض ۳۰ ثانیهای برای اتمام هستند. حذف اجباری پادها با منابع مشترک مانند فضای ذخیرهسازی، API یا نامها توصیه نمیشود.
Nodeها مدتی طول میکشد تا متوجه حذف اجباری شوند، بنابراین یک حذف ممکن است روی فرآیندهای دیگر با استفاده از شناسایی مشابه پاد حذف شده تأثیر بگذارد.
اگر پادها را حذف نکنید، Kubernetes به طور خودکار آنها را پس از تکمیل فرآیندهای اختصاص داده شده حذف میکند. پس از حذف یک پاد، Kubernetes یک ابطال کش کشف را صادر میکند که حداکثر 10 دقیقه طول میکشد.
اگر 10 دقیقه برای انتظار ندارید، منابع api kubectl را اجرا کنید تا حافظه کش به سرعت بارگذاری شود.
بهروزرسانی یا جایگزینی پادها
پس از ایجاد، برخی از اطلاعات در Kubernetes pod غیرقابل تغییر است. اطلاعات شامل فرادادهها، فیلدها، نامها و برخی مشخصات میباشد.
بنابراین تلاش برای به روزرسانی برخی فیلدها، جایگزینی و پچ کردن اطلاعات در پادها محدودیتهایی دارد. در عوض، Kubernetes تغییراتی را در قالب پاد و استفاده از آن برای ایجاد پادهای جدید توصیه میکند.
Pods مانیتورینگ
کوبرنیتها به دلیل اجزای زیادی که دارند، خطرات بیشتری برای داشتن تنگناهای عملکردی آنها را تهدید میکند. این امر نظارت را ضروری میکند.
مانیتورینگ Kubernetesها با ردیابی معیارهای عملکرد، تعداد منابع و ارائه یک نمای کلی از عملیات در کلاستر به شما بینشی در مورد سلامت کلاستر میدهد.
در صورت بروز مشکلات باید دائما به شما هشدار داده شود تا سریعا نسبت به رفع آن اقدام کنید.
با این حال، ماهیت چند وجهی کوبرنیت پیچیدگی ثبت و نظارت بر اجزای آن را افزایش داد. برای انجام موثر نظارت در چنین محیط توزیع شده و پویایی، شما به یک رویکرد گرانول نیاز دارید، سیستمی که هر جز، از جمله منابع در استقرار کوبرنیتها یا سلامت پادهای مستقر شده را ردیابی کند.
جمع بندی
Kubernetes به عنوان یک سامانه مدیریت کانتینر، محیطی قدرتمند برای اجرای برنامهها و خدمات ایجاد میکند. در این محیط، مفهوم Pod یکی از مهمترین عناصر است. پاد یک مجموعه از یک یا چندین کانتینر مرتبط است که به طور مشترک منابع و فضا را به اشتراک میگذارند. Pods در Kubernetes دارای اهمیت بالایی هستند، زیرا هر زمان که تعداد بیشتری کانتینر به هم پیوسته و تعامل میکنند، با استفاده از پادها مدیریت میشوند. Podها امکان اجرای متنوعتر و توزیع بار در بین کانتینرها را فراهم میکنند. به علاوه، برای مقیاسپذیری و حفاظت از برنامهها، ایجاد و مدیریت Pods با استفاده از ابزارهای مانند Kubernetes Deployment بسیار مفید است.
[yasr_overall_rating]