همنواسازی کانتینرها (container orchestration)

مقدمههمنواسازی کانتینری چیست؟برنامه ها معمولاً از اجزای کانتینری جداگانه‌ای (به نام میکروسرویس ها) تشکیل می شوند که باید در سطح شبکه سازماندهی شوند تا برنامه به صورت دلخواه اجرا شود. فرآیند سازماندهی چندین کانتینر به این روش به عنوان همنواسازی کانتینر شناخته می شود.تعریف همنواسازی کانتینریدر فرآیندهای توسعه مدرن، برنامه های کاربردی دیگر یکپارچه نیستند، بلکه از ده ها یا صدها مؤلفه به هم پیوسته و کانتینری تشکیل شده اند. این مولفه‌ها باید با هم کار کنند تا یک برنامه معین به روش دلخواه کار کند. همنواسازی کانتینر به فرآیند سازماندهی نحوه عملکرد اجزای جداگانه و سطوح برنامه اشاره دارد.همنواسازی کانتینر چگونه کار می کند؟در حالی که پلتفرم‌هایی مانند Apache Mesos، Google Kubernetes و Docker Swarm هر کدام روش‌های خاص خود را برای مدیریت کانتینر دارند، موتورهای هماهنگ‌سازی کانتینر به کاربر این امکان را می‌دهند که زمان شروع و توقف کانتینرها را کنترل کند، کانتینرها را در خوشه‌ها گروه‌بندی کند و همه فرآیندهایی را که یک برنامه را تشکیل می‌دهند هماهنگ کند. . با ابزارهای هماهنگ سازی کانتینر، کاربران می توانند استقرار کانتینرها را کنترل کنند و به روز رسانی ها، نظارت بر وضعیت و رویه های شکست را به صورت خودکار انجام دهند.container orchestrationکوبرنتیس(Kubernetes)کانتینرها راه خوبی برای بسته بندی و اجرای برنامه ها هستند. در یک محیط تولید، شما باید کانتینرهایی را که برنامه ها را اجرا می کنند مدیریت کنید و اطمینان حاصل کنید که هیچ زمان از دسترس خارج بودنی وجود ندارد. برای مثال، اگر کانتینری پایین بیاید، کانتینر دیگری باید راه اندازی شود. حال اگر این رفتار توسط یک سیستم مدیریت شود، آسان تر نخواهد بود؟به این ترتیب Kubernetes به کمک ما می آید! Kubernetes چارچوبی را برای اجرای انعطاف پذیر سیستم های توزیع شده در اختیار شما قرار می دهد. از مقیاس‌بندی و خطای برنامه شما مراقبت می‌کند، الگوهای استقرار و موارد دیگر را ارائه می‌دهد. به عنوان مثال: Kubernetes به راحتی می تواند یک استقرار قناری را برای سیستم شما مدیریت کند.معماری کوبرنتیسکوبرنتیس :1- انواع اپلیکیشن ها را پشتیبانی می‌کند. هدف Kubernetes پشتیبانی از انواع بسیار متنوعی از کارها، از جمله کارهای بدون حالت، با حالت، و پردازش داده است. اگر یک برنامه می تواند در یک کانتینر اجرا شود، باید در Kubernetes عالی اجرا شود.2- کد منبع را مستقر نمی کند و برنامه شما را build نمی‌کند. گردش کار یکپارچه سازی، تحویل و استقرار مداوم (CI/CD) بر اساس فرهنگ ها و ترجیحات سازمان و همچنین الزامات فنی تعیین می شود.3- سرویس‌های سطح برنامه مانند میان‌افزار (مثلاً گذرگاه‌های پیام)، چارچوب‌های پردازش داده (مثلاً Spark)، پایگاه‌های داده (مثلاً MySQL)، کش‌ها و سیستم‌های ذخیره‌سازی خوشه‌ای (مثلاً Ceph) را به عنوان خدمات داخلی تامین نمی‌کند. چنین مؤلفه‌هایی می‌توانند در Kubernetes اجرا شوند، و یا توسط برنامه‌های در حال اجرا در Kubernetes از طریق مکانیسم‌های قابل حمل، مانند Open Service Broker، به آنها دسترسی داشته باشید.4- راه حل های ورود، نظارت یا هشدار را دیکته نمی کند. برخی از ادغام ها را به عنوان اثبات مفهوم، و مکانیسم هایی برای جمع آوری و فرستادن معیارها فراهم می کند.5- زبان یا سیستم پیکربندی (مثلاً Jsonnet) را ارائه و الزامی نمی کند. بلکه یک API اعلامی ارائه می دهد که ممکن است توسط اشکال دلخواه مورد استفاده قرار گیرد.6- هیچ گونه پیکربندی، نگهداری، مدیریت، یا سیستم های خود ترمیم کننده ماشین را ارائه نمی دهد و نمی پذیرد.7- علاوه بر این، Kubernetes یک سیستم همنواسازی صرف نیست. در واقع نیاز به همنواسازی را از بین می‌برد. تعریف فنی همنواسازی اجرای یک گردش کار تعریف شده است: ابتدا A، سپس B و سپس C را انجام دهید. در مقابل، Kubernetes شامل مجموعه ای از فرآیندهای کنترل مستقل و قابل ترکیب است که به طور پیوسته حالت فعلی را به سمت حالت مورد نظر هدایت می کند. مهم نیست چگونه از A به C می رسید. کنترل متمرکز نیز لازم نیست. این منجر به سیستمی می‌شود که دارای استفاده آسان‌تر، قوی‌تر، انعطاف‌پذیرتر و قابل توسعه‌تر است.