ویرگول
ورودثبت نام
محمدرضا مقدسی
محمدرضا مقدسیDevops & Cloud Engineer at Greenplus
محمدرضا مقدسی
محمدرضا مقدسی
خواندن ۴ دقیقه·۸ ماه پیش

قسمت دوم-راهنمای جیبی کوبرنتیز-Provisioning استاتیک یا داینامیک در Kubernetes: انتخاب با شماست!


از سری پست‌های راهنمای جیبی کوبرنتیز: مفاهیم کلیدی به زبان ساده قسمت دوم را با هم شروع می‌کنیم.
توی پست قبلی درباره PV و PVC صحبت کردیم.
توی مثال اولی ک زدیم ی نکته‌ای بود. اگر گفتین چی بود؟

بیاین دوباره با هم مثال مرور کنیم:

مثال ساده
فرض کن یه برنامه داریم که نقاشی‌های بچه‌ها رو نگه می‌داره. این برنامه توی یه خونه (پاد) زندگی می‌کنه. حالا این برنامه می‌خواد نقاشی‌ها رو جایی ذخیره کنه که اگه خونه‌ش خراب شد، نقاشی‌ها گم نشن.
اول PV درست می‌کنیم: مدیر شهر (یعنی ادمین کوبرنتیز) یه کمد توی انبار جادویی درست می‌کنه. مثلاً می‌گه: «این کمد ۱۰ گیگابایته و خیلی سریعه.» این می‌شه PV.
بعد PVC درست می‌کنیم: برنامه نقاشی می‌گه: «من یه کمد می‌خوام که حداقل ۵ گیگابایت جا داشته باشه.» این درخواست می‌شه PVC. حالا سیستم کوبرنتیز می‌گرده و می‌بینه که اون کمد ۱۰ گیگابایتی PV برای این درخواست مناسبه. پس کمد رو به برنامه می‌ده.

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


داستان شهر جادویی و کمدهای برنامه‌ها

تصور کن توی یه شهر جادویی به اسم کوبرنتیز، یه عالمه خونه کوچولو هست که اسمشون پاد (Pod) هست. توی این خونه‌ها، برنامه‌ها زندگی می‌کنن و وسایلشون رو توی کمدهای جادویی به اسم PersistentVolume (PV) نگه می‌دارن. هر وقت برنامه‌ها به کمد نیاز دارن، یه نامه به اسم PersistentVolumeClaim (PVC) می‌فرستن و می‌گن: «من یه کمد می‌خوام!»

حالا بیایم ببینیم این کمدها چطوری درست می‌شن و به برنامه‌ها داده می‌شن.

روش قدیمی: Static Provisioning (تهیه استاتیک)

توی روش قدیمی، یه آقا یا خانم دقیق که مدیر شهره، از قبل یه سری کمد آماده می‌کنه و توی انبار می‌ذاره. مثلاً:

  • یه کمد کوچیک ۵ گیگابایتی
  • یه کمد متوسط ۱۰ گیگابایتی
  • یه کمد بزرگ ۲۰ گیگابایتی

این کمدها منتظرن که برنامه‌ها بیان و درخواست کنن.


فرض کن یه برنامه میاد و می‌گه: «من یه کمد می‌خوام که ۷ گیگابایت جا داشته باشه.» مدیر شهر نگاه می‌کنه و می‌گه: «خب، کمد ۵ گیگابایتی که برات کوچیکه، پس کمد ۱۰ گیگابایتی رو بهت می‌دم!» برنامه اون کمد ۱۰ گیگابایتی رو می‌گیره، ولی فقط ۷ گیگابایتش رو استفاده می‌کنه و ۳ گیگابایت دیگه خالی می‌مونه و هدر می‌ره.

مشکل این روش چیه؟

مثل اینه که تو یه بشقاب بزرگ کیک داشته باشی، ولی فقط یه تیکه کوچیک بخوای بخوری و بقیه‌ش رو دور بریزی. یا اینکه مدیر کوبرنتیز باید از قبل حدس بزنه تو به چه اندازه کمد نیاز داری، و اگه اشتباه حدس بزنه، یا کمدت زیادی بزرگه یا زیادی کوچیک!

روش جدید و باحال: Dynamic Provisioning (تخصیص دینامیک منابع) با StorageClass

حالا توی روش جدید، یه چیز جادویی به اسم StorageClass داریم. StorageClass مثل یه دستور پخت کیکه که به کوبرنتیز می‌گه: «هر وقت برنامه‌ای کمد خواست، براش یه کمد تازه درست کن!» توی این دستور پخت نوشته شده که کمد از چه موادی باشه (مثلاً هارد دیسکش SSD باشه یا HDD یا اصلا روی دیسک لوکال باشه یا روی فضای ابری) و چه شکلی باشه (مثلاً سریع باشه یا ارزون باشه).

وقتی برنامه میاد و می‌گه: «من یه کمد ۷ گیگابایتی می‌خوام»، کوبرنتیز به جای اینکه دنبال کمد آماده بگرده، همون موقع یه کمد ۷ گیگابایتی درست می‌کنه و به برنامه می‌ده. دقیقاً اندازه‌ای که برنامه خواسته، نه بیشتر و نه کمتر!

خوبی این روش چیه؟

مثل اینه که بچه به مامانش میگه: «من یه تیکه کیک کوچولو می‌خوام»، و مامان همون موقع براش یه تیکه به اندازه دلخواه فرزندش ببره. نه چیزی هدر می‌ره، نه لازم نیست از قبل یه کیک بزرگ آماده باشه!

یه مثال دیگه

فرض کن یه برنامه داریم که نقاشی‌های تو رو نگه می‌داره.

توی روش Static Provisioning (تهیه استاتیک):

  • مدیر شهر یه کمد ۱۰ گیگابایتی آماده کرده.
  • تو می‌گی: «من یه کمد می‌خوام که ۵ گیگابایت نقاشی توش جا بشه.»
  • مدیر شهر کمد ۱۰ گیگابایتی رو بهت می‌ده.
  • تو فقط ۵ گیگابایت ازش استفاده می‌کنی و ۵ گیگابایت دیگه خالی می‌مونه و هدر می‌ره.

توی روش Dynamic Provisioning (تهیه دینامیک):

  • کوبرنتیز یه دستور پخت داره به اسم StorageClass که می‌گه: «هر وقت برنامه‌ای یک کمد خواست، براش میره یه کمد جدید بساز بر اساس اندازه و رنگی که برنامه گفته میسازه.»
  • تو می‌گی: «من یه کمد ۵ گیگابایتی می‌خوام.»
  • کوبرنتیز همون موقع یه کمد ۵ گیگابایتی درست می‌کنه و بهت می‌ده.
  • تو همه ۵ گیگابایت رو برای نقاشی‌هات استفاده می‌کنی و چیزی هم هدر نمی‌ره!

خلاصه داستان

  • Static Provisioning (تهیه استاتیک): کوبرنتیز از قبل کمدهای آماده با اندازه‌های ثابت داره. وقتی تو درخواست می‌دی، یه کمد آماده بهت می‌ده، حتی اگه بزرگ‌تر از نیازت باشه.
  • Dynamic Provisioning (تهیه دینامیک): یه دستور پخت جادویی به اسم StorageClass هست که هر وقت تو کمد بخوای، همون موقع یه کمد به اندازه‌ای که گفتی برات درست می‌کنه.

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

۰
۰
محمدرضا مقدسی
محمدرضا مقدسی
Devops & Cloud Engineer at Greenplus
شاید از این پست‌ها خوشتان بیاید