در این مطلب به ذخیرهسازی بومی کانتینر – container-native storage- میپردازیم. خواهیم دید که این ذخیرهسازی چه چیزی را تعریف میکند و مزایای آن بهعنوان راهی برای ذخیرهسازی مداوم Kubernetes به اپلیکیشنهای مبتنی بر کانتینر بررسی میکنیم.
در حال حاضر ذخیرهسازی کانتینری مبحث داغی است. اما از آنجا که این موضوعی جدید است، در برخی موارد سردرگمیها و سوءتفاهمتی وجود دارد و مطالبی که در بازاریابی محصولات ارائه میشود میتواند گمراهکننده باشد.
تقریباً همه موافقت دارند که اکثر برنامههای مبتنی بر معماری کانتینر در سازمانها به ذخیرهسازی مداوم نیاز دارند. اما دقیقاً چگونگی عملکرد ذخیرهسازی کانتینری یک محصول مشخص نیست و بر سر آن توافق همگانی وجود ندارد. یک نوع ذخیرهساز در حال ظهور و جدید، و آنچه به نظر میرسد به دلایل مختلف مقبول عامه باشد ، ذخیرهسازی بومی کانتینری است که گاهی اوقات بهعنوان ذخیرهسازی بومی ابر نیز شناخته میشود.
اما چرا این نوع ذخیرهسازی مقبول عام است؟ احتمالاً چون این شکل ذخیرهسازی مبتنی بر کانتینر است که بیشتر منطبق بر اصول کانتینرسازی است. به عبارتی یعنی هرآنچه برای مدیریت ذخیرهسازی موردنیاز است میتواند در محفظههای کانتینر محصور شود و در بستر Kubernetes اجرا شود. این روش در اصل نوعی ذخیرهسازی است که توسط نرمافزار تعریف شده(software-defined) و در کانتینرها اجرا میشود.
به عبارت دیگر، این ذخیرهسازی است که مانند هر سرویس دیگری که بخشی از چشمانداز کلی برنامه را تشکیل میدهد، میتواند توسط کد تحویل داده شود و همراه با برنامه قابلحمل باشد، بدون اینکه وابستگی سختافزاری داشته باشد.
این امر به چند دلیل مهم است و مهمترین آنها تأثیر رایانش ابری در مسیر حرکت فناوری اطلاعات است. افزایش استفاده از فضای ترکیبی و چند ابری به معنای توانایی جابهجایی بارهای کاری بین مرکز داده و سرویسهای ابری است. دلایل فرعی دیگر شامل افزایش نیاز به فضای ذخیرهسازی در لحظه و بر مبنای نیاز درآنواحد توسط تیمهای توسعه است.
اصول ذخیرهسازی کانتینری
اصول ذخیرهسازی مداوم Kubernetes حول مجموعهای از رابطهای برنامهنویسی برنامه (API) است. در مرحله اول، PVC ساخته شده توسط نرمافزارهای کاربردی که با برنامههای کانتینری و برای تعیین ظرفیت موردنیاز، سطح ذخیرهسازی و غیره با آن همراه هستند. در همین حال، حجم پایدار (PV) و کلاسهای ذخیرهسازی وجود دارد که از ویژگیهای خود ذخیرهسازی است و، توصیف ماهیت ذخیرهسازی مداوم موجود و مطابقت آن با PVC های کاربردی در Kubernetes است.
این حافظه میتواند روی سرورهایی باشد که خوشه Kubernetes روی آنها اجرا میشود، یا ممکن است حافظه خارجی در یک آرایه ذخیرهسازی باشد. اگر فضای ذخیرهسازی در محل ذخیرهساز مشترک خارجی باشد، میتوان آن را به برنامههای کانتینری توسط پلاگینهایی مانند CSI (رابط ذخیرهسازی کانتینر) ارائه داد.
ذخیره بومی کانتینری(container-native storage) چیست؟
با درنظرگرفتن آنچه تاکنون توصیف کردیم، و بهویژه خصوصیات مربوط به عملیات بومی ابر و کانتینر سازی، یک مفهوم اساسی وجود دارد که باید ذخیرهسازی بومی کانتینری را تعریف کند. به عبارتی، این ذخیرهسازی باید از خوشه Kubernetes مدیریت شود تا به طور واقعی بهعنوان کانتینر بومی شناخته شود و از رسانههایی که مستقیماً برای خوشه قابلدسترسی هستند تجمیع شود.
در همین حال، برای شروع رقابت با مجموعه ویژگیهای ارائه شده توسط محصولات ذخیرهسازی بلوغیافته، محصولات ذخیرهسازی بومی کانتینری باید شامل سرویسهای ذخیرهسازی مانند تکثیر، اسنپ شات، تقلیل داده ، کیفیت سرویس و رمزگذاری باشد، اما اینها نیز تعریف اصلی نیستند .
اکنونکه میتوانید ذخیرهسازی را از محفظه ذخیرهسازی مبتنی بر آرایه تأمین کنید و آن را از طریق کلاستر مدیریت نمایید. اما این – که گاهی اوقات ذخیرهسازی container-ready نامیده میشود – با این ایده که همه چیز باید از Kubernetes مدیریت شود، مغایرت دارد، زیرا هیچ آرایه ذخیرهسازی سازمانی تنظیم و سپس رها نمیشود. این نیاز به مدیریت و تأمین از طریق آرایه دارد.
همچنین ممکن است این روش با اصول بومی ابری مغایرت داشته باشد زیرا ممکن است بارهای کاری چندان قابلحمل و انتقال نباشند، اگرچه در تئوری باید اطمینان حاصل کنید که نوع مناسب مدیا در هرکجا که برنامههای کانتینردار برای اجرا نیاز داشته باشند، حتی اگر کاملاً بومی-کانتینر باشد، در دسترس باشد.
اگر میخواهید محصولی بر این اساس بخرید، شاید باید سؤالات زیر را از تأمینکننده محصول سؤال کنید:
- آیا نرمافزار ذخیرهسازی شما در کانتینر اجرا میشود؟
- آیا مجازیسازی از طریق همان بستر، تهیه و اجرا میشود؟
- چه نوع مدیریت ذخیرهسازی برای Kubernetes مورد نیاز است؟
برخی تأمینکنندگان ذخیرهسازی بومی کانتینر عبارتاند از:
- Diamanti
- Ionir
- MayaData
- Portworx (from Pure Storage)
- Longhorn (from Rancher)
- Red Hat OpenShift Container Storage
- IO
- Rook
- StorageOS
ممنون میشم