تو قسمت سیزدهم از مسیر بلاگ پستهای کوبرنتیز، میریم سراغ مفاهیم کنترل دسترسی تا اینکه ببینیم چجوری به کلاستر متصل میشیم و چه فرآیندی طی میشه.
خب یه مروری کنیم پستهای قبلی رو:
توصیه میکنم که حتما این پستها رو هم مطالعه کنید. بریم که ادامه بدیم.
کوبرنتیز به عنوان یکی از محبوبترین ابزارهای Orchestration کانتینرها شناخته میشود که مزایای بیشماری برای مقیاسپذیری، پایداری و خودبهبودی سیستمها ارائه میدهد. با این حال، برای سازمانها و کسبوکارهای مهم، قابلیت دسترسی بالا (High Availability) یک الزام اساسی محسوب میشود. در این مقاله، گزینههای مختلف برای طراحی یک کلاستر HA در کوبرنتیز بررسی و راهحلهای عملی ارائه میشود.
دو مسیر اصلی برای طراحی کلاستر High Available در Kubernetes وجود دارد:
هر کدام از این گزینهها مزایا و معایب خاص خود را دارند که باید با دقت بررسی شوند.
در توپولوژی استکشده، سرویس ذخیرهسازی توزیعشده etcd بر روی همان نودهایی که Control Plane کوبرنتیز اجرا میشود، قرار میگیرد.
kube-apiserver
، kube-scheduler
و kube-controller-manager
است.kube-apiserver
از یک لود بالانسر بیرونی استفاده میشود.مزایا:
معایب:
نکته: این توپولوژی به صورت پیشفرض در kubeadm
اجرا میشود. متداولترین روش پیادهسازی کوبرنتیز به صورت HA میباشد و معمولا از این روش استفاده میشود.
در این توپولوژی، سرویس etcd از نودهای Control Plane جدا شده و روی نودهای اختصاصی اجرا میشود:
kube-apiserver
، kube-scheduler
و kube-controller-manager
را اجرا میکند.مزایا:
معایب:
معمولا جاهایی که دوست داریم نودهای مستر خودمون رو stateless کنیم از این ساختار استفاده میکنیم که باعث میشه بتونیم تنها کامپوننتی که state داره رو بیرون از نودهای مستر ستاپ کنیم. در اسکیلهای بزرگ هم توجیه داره که این کار رو انجام بدیم.
اگر از Kubernetes به عنوان پلتفرم عملیاتی برای برنامههای خود استفاده میکنید، احتمالاً با پرسشهایی اساسی مواجه خواهید شد:
در این مقاله به بررسی این پرسشها میپردازیم و مزایا و معایب گزینههای مختلف را تحلیل میکنیم.
تصویر بالا مزایا و معایب استفاده از هرکدوم از رویکردهای انتخاب تعداد بیشتر یا کمتری کلاستر رو نشون میده.
به عنوان یک توسعهدهنده نرمافزار، معمولاً چندین برنامه را طراحی و اجرا میکنید. این برنامهها ممکن است در محیطهای مختلفی مانند dev و test و production اجرا شوند.
این وضعیت به نوعی ماتریس برنامهها و محیطها منجر میشود. به عنوان مثال، اگر 3 برنامه و 3 محیط داشته باشید، در مجموع 9 نمونه برنامه (Application Instance) خواهید داشت.
سوال اینجاست که:
همه این گزینهها قابلقبول هستند و Kubernetes محدودیتی برای این انتخابها ایجاد نمیکند!
در ادامه، گزینههای موجود را بررسی میکنیم:
بهطور کلی، میتوان گفت یک کلاستر زمانی "بزرگتر" از کلاستر دیگر است که مجموع بیشتری از نودها و پادها را داشته باشد — برای مثال، کلاستری با ۱۰ نود و ۱۰۰ پاد از کلاستری با ۱ نود و ۱۰ پاد بزرگتر است.
در این روش، تمام ورکلودها در یک کلاستر Kubernetes اجرا میشوند و از طریق Namespaceهای جداگانه از هم تفکیک میشوند.
✅ مزایا:
❌ معایب:
در این روش، برای هر نمونه از برنامه یک کلاستر Kubernetes جداگانه اجرا میشود.
✅ مزایا:
❌ معایب:
در این رویکرد، برای هر برنامه یک کلاستر جداگانه ایجاد میشود که تمام نمونههای برنامه (مانند نسخه Dev و Prod) در همان کلاستر اجرا میشوند.
✅ مزایا:
❌ معایب:
در این روش، بهازای هر محیط (مانند Dev، Test و Prod) یک کلاستر جداگانه ایجاد میشود که تمام برنامههای آن محیط در کلاستر مربوطه اجرا میشوند.
✅ مزایا:
❌ معایب:
در مجموع، میتوانید از تعداد کمی کلاستر بزرگ یا تعداد زیادی کلاستر کوچک استفاده کنید. هرکدام از این روشها مزایا و معایب خود را دارند.
انتخاب بهترین رویکرد به نیازهای شما بستگی دارد:
با توجه به سناریوهای بالا، میتوانید مناسبترین ترکیب را برای کسبوکار خود انتخاب کنید.
در بلاگ پستهای بعدی مسیرمون رو ادامه میدیم و بیشتر و بیشتر در مورد کوبرنتیز یاد میگیریم.
مراقب خودتون باشید. 🌹🐳🌹
خوبه که داکرمی رو تو جاهای مختلف فالو کنید. پذیرای نظرات شما هستیم.
🫀 Follow DockerMe 🫀
🔔 Follow YouTube 🔔
📣 Follow Instagram 📣
🖇 Follow LinkedIn DockerMe🖇
🔎 Follow Linkedin Ahmad Rafiee 🔎
🕊 Follow Twitter 🕊