برنامه نویسی

کاوش اجزای Kubernetes: API Server، Scheduler، Controller Manager، و بیشتر

Summarize this content to 400 words in Persian Lang
Kubernetes یک پلت فرم گسترده با اجزای مختلف است که با هم کار می کنند تا اطمینان حاصل شود که برنامه های کاربردی کانتینری به طور موثر مستقر، مدیریت و مقیاس بندی می شوند. در زیر، به برخی از اجزای کلیدی Kubernetes که نقش حیاتی در مدیریت عملکرد خوشه ایفا می کنند، خواهیم پرداخت.

اجزای کلیدی Kubernetes

1. سرور API

این سرور API نقطه مدیریت مرکزی Kubernetes است. این یک نقطه پایانی REST API است که به مشتریان (مانند kubectl، سایر اجزای Kubernetes یا سیستم های خارجی) برای تعامل با خوشه.

نقش: سرور API به عنوان دروازه ای برای تمام تعاملات با خوشه عمل می کند. چه در حال استقرار برنامه‌ها، بررسی وضعیت کلاستر یا جستجوی منابع باشید، این سرور API است که این درخواست‌ها را پردازش می‌کند.

ویژگی ها:

احراز هویت و مجوز را کنترل می کند.
درخواست های REST API را تأیید و پردازش می کند.
با ارائه یک API یکپارچه به عنوان هاب ارتباطی بین تمام اجزای Kubernetes (مانند Scheduler، Controller Manager و غیره) عمل می کند.
درخواست های مربوط به حالت خوشه را مدیریت می کند و آنها را در آن ذخیره می کند etcd، فروشگاه کلید ارزش.

2. مدیر کنترلر

این مدیر کنترلر وظیفه تنظیم وضعیت خوشه را بر عهده دارد. کنترل‌کننده‌ها فرآیندهای پس‌زمینه‌ای هستند که تضمین می‌کنند وضعیت مطلوب تعریف‌شده در مانیفست‌های Kubernetes برآورده می‌شود و هرگونه تغییر در خوشه به طور مداوم تصحیح می‌شود.

نقش: کنترل کننده هایی را اجرا می کند که به طور مداوم وضعیت فعلی خوشه را نظارت می کنند و در صورت نیاز تغییراتی را برای مطابقت با وضعیت مورد نظر ایجاد می کنند.

ویژگی ها:

Replication Controller: اطمینان حاصل می کند که تعداد مشخصی از کپی های یک pod همیشه در حال اجرا هستند.

کنترل گر گره: مسئول نظارت بر سلامت گره ها و مدیریت چرخه زندگی آنها (به عنوان مثال، رسیدگی به خرابی گره ها).

کنترل کننده استقرار: فرآیند استقرار را مدیریت می کند و اطمینان حاصل می کند که تعداد صحیح پادها به درستی مستقر شده و مقیاس بندی شده اند.

کنترل کننده شغل: ایجاد و مدیریت مشاغلی را که تا پایان تکمیل می شوند انجام می دهد.

مدیر کنترلر مطمئن می شود که اگر مشکلی پیش بیاید (مثلاً یک پاد از کار افتاد)، Kubernetes واکنش نشان می دهد و به طور خودکار مشکل را برطرف می کند.

3. برنامه ریز

این برنامه ریز مسئول انتساب کار (یعنی pods) به گره های موجود در خوشه است. Scheduler برای پادهای جدید ایجاد شده که گره اختصاص داده نشده است، نگاه می کند و گره مناسب را بر اساس نیاز منابع و سایر محدودیت ها انتخاب می کند.

نقش: زمانبند تصمیم می گیرد که کدام گره باید هر پاد را بر اساس منابع موجود (CPU، حافظه و غیره)، لکه های گره، قوانین وابستگی و هر محدودیت دیگری که در پیکربندی پاد تعریف شده است اجرا کند.

ویژگی ها:

هنگام انتخاب گره ها عواملی مانند در دسترس بودن منابع، آلودگی ها و تحمل ها، قرابت/ضد قرابت غلاف و موارد دیگر را در نظر می گیرد.
بر اساس حجم کاری فعلی و بهترین نحوه توزیع آنها در کلستر تصمیم گیری می کند.
می‌تواند بر اساس اولویت‌های سفارشی یا محدودیت‌های منابع تصمیمات زمان‌بندی بگیرد.

Scheduler برای حصول اطمینان از اینکه بارهای کاری به طور مساوی در بین گره ها توزیع می شود، ضروری است و از اضافه بار هر گره منفرد جلوگیری می کند.

4. etcd

etcd یک ذخیره‌سازی کلید-مقدار توزیع‌شده است که تمام داده‌های خوشه‌ای Kubernetes، از جمله پیکربندی‌ها، تعاریف منابع، وضعیت و ابرداده را در خود نگهداری می‌کند. این منبع حقیقت برای کل خوشه است.

نقش: etcd برای ذخیره وضعیت کل خوشه Kubernetes استفاده می شود. وقتی تغییراتی ایجاد می‌کنید، مانند استقرار یک pod جدید یا مقیاس‌بندی یک برنامه، این تغییرات در etcd منعکس می‌شوند.

ویژگی ها:

داده ها را به روشی سازگار و بسیار در دسترس ذخیره می کند.
دسترسی پر سرعت به پیکربندی و داده های وضعیت را فراهم می کند.
برای بازیابی بلایا و تحمل خطا بسیار مهم است. اگر خوشه Kubernetes دوباره راه اندازی شود، از حالت ذخیره شده در etcd بازیابی می شود.

5. Kubelet

این Kubelet عاملی است که روی هر گره کارگر در خوشه اجرا می شود. مسئول اطمینان از اینکه کانتینرها در گره طبق انتظار اجرا می شوند و گزارش دادن به اجزای اصلی را بر عهده دارد.

نقش: Kubelet از سالم بودن و سالم بودن ظروف موجود در هر غلاف اطمینان حاصل می کند. استفاده از منابع غلاف را نظارت می کند و به روز رسانی وضعیت را به سرور API گزارش می دهد.

ویژگی ها:

زمان اجرا کانتینر را برای راه اندازی کانتینرها (مثلاً داکر، کانتینر) اجرا می کند.
اطمینان حاصل می کند که کانتینرها همانطور که در مشخصات غلاف مشخص شده در حال اجرا هستند.
به‌روزرسانی‌های غلاف را تماشا می‌کند و در صورت لزوم ظروف را تنظیم می‌کند.
سلامت گره و پاد را به سرور API گزارش می دهد.

اگر یک غلاف از کار بیفتد یا از یک گره خارج شود، Kubelet اطمینان حاصل می کند که ظرف دوباره راه اندازی شده یا در صورت نیاز برنامه ریزی مجدد می شود.

6. پروکسی باشید

این پروکسی باشید بر روی هر گره در خوشه اجرا می شود و مسئول حفظ قوانین شبکه است تا امکان ارتباط بین پادها در گره های مختلف را فراهم کند. این شبکه‌سازی بین سرویس‌ها را فعال می‌کند و اطمینان می‌دهد که سرویس‌های Kubernetes در داخل خوشه قابل دسترسی هستند.

نقش: Kube Proxy شبکه سازی بین سرویس ها را تسهیل می کند و تعادل بار ترافیک شبکه را به پادهای مناسب مدیریت می کند.

ویژگی ها:

شبکه خدمات را مدیریت می کند و اطمینان حاصل می کند که ترافیک به پادهای مناسب هدایت می شود.
روش‌های مختلفی را برای متعادل‌سازی بار پیاده‌سازی می‌کند، از جمله دور رابین و هش IP.
با iptables یا IPVS (سرور مجازی IP) برای هدایت ترافیک به غلاف های باطنی مناسب.

Kube Proxy تضمین می‌کند که همه پادها می‌توانند با هم ارتباط برقرار کنند، حتی اگر در گره‌های مختلف در خوشه قرار داشته باشند.

7. مدیر کنترلر ابر

این مدیر کنترلر ابر به Kubernetes اجازه می دهد تا با ارائه دهندگان ابر (مانند AWS، Google Cloud یا Azure) تعامل داشته باشد و منابع خاص محیط ابری را مدیریت کند.

نقش: ادغام بین Kubernetes و ارائه دهنده ابر را مدیریت می کند. به عنوان مثال، می‌تواند منابع ابری مانند متعادل‌کننده‌های بار، حجم‌های ثابت و آدرس‌های IP خارجی را ایجاد یا حذف کند.

ویژگی ها:

وظایف خاص ارائه‌دهنده ابر را مدیریت می‌کند، مانند اتصال فضای ذخیره‌سازی دائمی به گره‌ها یا مدیریت متعادل‌کننده‌های بار مبتنی بر ابر.
تضمین می کند که زیرساخت ابری به طور یکپارچه با اجزای Kubernetes مانند Pods یا Services یکپارچه می شود.

این مؤلفه به ویژه در محیط‌های بومی ابری که خوشه‌های Kubernetes در ابرهای عمومی میزبانی می‌شوند، مفید است.

خلاصه معماری Kubernetes

هواپیمای کنترلی: مسئول کنترل خوشه است و شامل اجزایی مانند سرور API، مدیر کنترلر، برنامه ریز، و etcd.

گره های کارگر: کانتینرها را میزبانی کنید، بارهای کاری برنامه را اجرا کنید. اجزای این گره ها عبارتند از Kubelet، پروکسی باشید، و زمان اجرا کانتینر.

یکپارچه سازی ابری: مدیر کنترلر ابر Kubernetes را با خدمات و منابع ابری پل می کند.

نتیجه گیری

Kubernetes یک سیستم پیچیده است که اجزای مختلفی را برای خودکارسازی و مدیریت برنامه‌های کانتینری ادغام می‌کند. هر جزء در معماری Kubernetes نقش مهمی در حصول اطمینان از اجرای کارآمد برنامه‌ها، مقیاس‌پذیر بودن و بازیابی دلپذیر از خرابی‌ها دارد. با درک نقش ها و تعاملات سرور API، برنامه ریز، مدیر کنترلر، etcd، Kubelet، پروکسی باشیدو سایر مؤلفه‌ها، درک جامعی از نحوه هماهنگ‌سازی برنامه‌های کاربردی در یک محیط توزیع‌شده توسط Kubernetes به دست می‌آورید.

Kubernetes یک پلت فرم گسترده با اجزای مختلف است که با هم کار می کنند تا اطمینان حاصل شود که برنامه های کاربردی کانتینری به طور موثر مستقر، مدیریت و مقیاس بندی می شوند. در زیر، به برخی از اجزای کلیدی Kubernetes که نقش حیاتی در مدیریت عملکرد خوشه ایفا می کنند، خواهیم پرداخت.

اجزای کلیدی Kubernetes

1. سرور API

این سرور API نقطه مدیریت مرکزی Kubernetes است. این یک نقطه پایانی REST API است که به مشتریان (مانند kubectl، سایر اجزای Kubernetes یا سیستم های خارجی) برای تعامل با خوشه.

  • نقش: سرور API به عنوان دروازه ای برای تمام تعاملات با خوشه عمل می کند. چه در حال استقرار برنامه‌ها، بررسی وضعیت کلاستر یا جستجوی منابع باشید، این سرور API است که این درخواست‌ها را پردازش می‌کند.
  • ویژگی ها:

    • احراز هویت و مجوز را کنترل می کند.
    • درخواست های REST API را تأیید و پردازش می کند.
    • با ارائه یک API یکپارچه به عنوان هاب ارتباطی بین تمام اجزای Kubernetes (مانند Scheduler، Controller Manager و غیره) عمل می کند.
    • درخواست های مربوط به حالت خوشه را مدیریت می کند و آنها را در آن ذخیره می کند etcd، فروشگاه کلید ارزش.

2. مدیر کنترلر

این مدیر کنترلر وظیفه تنظیم وضعیت خوشه را بر عهده دارد. کنترل‌کننده‌ها فرآیندهای پس‌زمینه‌ای هستند که تضمین می‌کنند وضعیت مطلوب تعریف‌شده در مانیفست‌های Kubernetes برآورده می‌شود و هرگونه تغییر در خوشه به طور مداوم تصحیح می‌شود.

  • نقش: کنترل کننده هایی را اجرا می کند که به طور مداوم وضعیت فعلی خوشه را نظارت می کنند و در صورت نیاز تغییراتی را برای مطابقت با وضعیت مورد نظر ایجاد می کنند.
  • ویژگی ها:

    • Replication Controller: اطمینان حاصل می کند که تعداد مشخصی از کپی های یک pod همیشه در حال اجرا هستند.
    • کنترل گر گره: مسئول نظارت بر سلامت گره ها و مدیریت چرخه زندگی آنها (به عنوان مثال، رسیدگی به خرابی گره ها).
    • کنترل کننده استقرار: فرآیند استقرار را مدیریت می کند و اطمینان حاصل می کند که تعداد صحیح پادها به درستی مستقر شده و مقیاس بندی شده اند.
    • کنترل کننده شغل: ایجاد و مدیریت مشاغلی را که تا پایان تکمیل می شوند انجام می دهد.

مدیر کنترلر مطمئن می شود که اگر مشکلی پیش بیاید (مثلاً یک پاد از کار افتاد)، Kubernetes واکنش نشان می دهد و به طور خودکار مشکل را برطرف می کند.

3. برنامه ریز

این برنامه ریز مسئول انتساب کار (یعنی pods) به گره های موجود در خوشه است. Scheduler برای پادهای جدید ایجاد شده که گره اختصاص داده نشده است، نگاه می کند و گره مناسب را بر اساس نیاز منابع و سایر محدودیت ها انتخاب می کند.

  • نقش: زمانبند تصمیم می گیرد که کدام گره باید هر پاد را بر اساس منابع موجود (CPU، حافظه و غیره)، لکه های گره، قوانین وابستگی و هر محدودیت دیگری که در پیکربندی پاد تعریف شده است اجرا کند.
  • ویژگی ها:

    • هنگام انتخاب گره ها عواملی مانند در دسترس بودن منابع، آلودگی ها و تحمل ها، قرابت/ضد قرابت غلاف و موارد دیگر را در نظر می گیرد.
    • بر اساس حجم کاری فعلی و بهترین نحوه توزیع آنها در کلستر تصمیم گیری می کند.
    • می‌تواند بر اساس اولویت‌های سفارشی یا محدودیت‌های منابع تصمیمات زمان‌بندی بگیرد.

Scheduler برای حصول اطمینان از اینکه بارهای کاری به طور مساوی در بین گره ها توزیع می شود، ضروری است و از اضافه بار هر گره منفرد جلوگیری می کند.

4. etcd

etcd یک ذخیره‌سازی کلید-مقدار توزیع‌شده است که تمام داده‌های خوشه‌ای Kubernetes، از جمله پیکربندی‌ها، تعاریف منابع، وضعیت و ابرداده را در خود نگهداری می‌کند. این منبع حقیقت برای کل خوشه است.

  • نقش: etcd برای ذخیره وضعیت کل خوشه Kubernetes استفاده می شود. وقتی تغییراتی ایجاد می‌کنید، مانند استقرار یک pod جدید یا مقیاس‌بندی یک برنامه، این تغییرات در etcd منعکس می‌شوند.
  • ویژگی ها:

    • داده ها را به روشی سازگار و بسیار در دسترس ذخیره می کند.
    • دسترسی پر سرعت به پیکربندی و داده های وضعیت را فراهم می کند.
    • برای بازیابی بلایا و تحمل خطا بسیار مهم است. اگر خوشه Kubernetes دوباره راه اندازی شود، از حالت ذخیره شده در etcd بازیابی می شود.

5. Kubelet

این Kubelet عاملی است که روی هر گره کارگر در خوشه اجرا می شود. مسئول اطمینان از اینکه کانتینرها در گره طبق انتظار اجرا می شوند و گزارش دادن به اجزای اصلی را بر عهده دارد.

  • نقش: Kubelet از سالم بودن و سالم بودن ظروف موجود در هر غلاف اطمینان حاصل می کند. استفاده از منابع غلاف را نظارت می کند و به روز رسانی وضعیت را به سرور API گزارش می دهد.
  • ویژگی ها:

    • زمان اجرا کانتینر را برای راه اندازی کانتینرها (مثلاً داکر، کانتینر) اجرا می کند.
    • اطمینان حاصل می کند که کانتینرها همانطور که در مشخصات غلاف مشخص شده در حال اجرا هستند.
    • به‌روزرسانی‌های غلاف را تماشا می‌کند و در صورت لزوم ظروف را تنظیم می‌کند.
    • سلامت گره و پاد را به سرور API گزارش می دهد.

اگر یک غلاف از کار بیفتد یا از یک گره خارج شود، Kubelet اطمینان حاصل می کند که ظرف دوباره راه اندازی شده یا در صورت نیاز برنامه ریزی مجدد می شود.

6. پروکسی باشید

این پروکسی باشید بر روی هر گره در خوشه اجرا می شود و مسئول حفظ قوانین شبکه است تا امکان ارتباط بین پادها در گره های مختلف را فراهم کند. این شبکه‌سازی بین سرویس‌ها را فعال می‌کند و اطمینان می‌دهد که سرویس‌های Kubernetes در داخل خوشه قابل دسترسی هستند.

  • نقش: Kube Proxy شبکه سازی بین سرویس ها را تسهیل می کند و تعادل بار ترافیک شبکه را به پادهای مناسب مدیریت می کند.
  • ویژگی ها:

    • شبکه خدمات را مدیریت می کند و اطمینان حاصل می کند که ترافیک به پادهای مناسب هدایت می شود.
    • روش‌های مختلفی را برای متعادل‌سازی بار پیاده‌سازی می‌کند، از جمله دور رابین و هش IP.
    • با iptables یا IPVS (سرور مجازی IP) برای هدایت ترافیک به غلاف های باطنی مناسب.

Kube Proxy تضمین می‌کند که همه پادها می‌توانند با هم ارتباط برقرار کنند، حتی اگر در گره‌های مختلف در خوشه قرار داشته باشند.

7. مدیر کنترلر ابر

این مدیر کنترلر ابر به Kubernetes اجازه می دهد تا با ارائه دهندگان ابر (مانند AWS، Google Cloud یا Azure) تعامل داشته باشد و منابع خاص محیط ابری را مدیریت کند.

  • نقش: ادغام بین Kubernetes و ارائه دهنده ابر را مدیریت می کند. به عنوان مثال، می‌تواند منابع ابری مانند متعادل‌کننده‌های بار، حجم‌های ثابت و آدرس‌های IP خارجی را ایجاد یا حذف کند.
  • ویژگی ها:

    • وظایف خاص ارائه‌دهنده ابر را مدیریت می‌کند، مانند اتصال فضای ذخیره‌سازی دائمی به گره‌ها یا مدیریت متعادل‌کننده‌های بار مبتنی بر ابر.
    • تضمین می کند که زیرساخت ابری به طور یکپارچه با اجزای Kubernetes مانند Pods یا Services یکپارچه می شود.

این مؤلفه به ویژه در محیط‌های بومی ابری که خوشه‌های Kubernetes در ابرهای عمومی میزبانی می‌شوند، مفید است.


خلاصه معماری Kubernetes

  1. هواپیمای کنترلی: مسئول کنترل خوشه است و شامل اجزایی مانند سرور API، مدیر کنترلر، برنامه ریز، و etcd.
  2. گره های کارگر: کانتینرها را میزبانی کنید، بارهای کاری برنامه را اجرا کنید. اجزای این گره ها عبارتند از Kubelet، پروکسی باشید، و زمان اجرا کانتینر.
  3. یکپارچه سازی ابری: مدیر کنترلر ابر Kubernetes را با خدمات و منابع ابری پل می کند.

نتیجه گیری

Kubernetes یک سیستم پیچیده است که اجزای مختلفی را برای خودکارسازی و مدیریت برنامه‌های کانتینری ادغام می‌کند. هر جزء در معماری Kubernetes نقش مهمی در حصول اطمینان از اجرای کارآمد برنامه‌ها، مقیاس‌پذیر بودن و بازیابی دلپذیر از خرابی‌ها دارد. با درک نقش ها و تعاملات سرور API، برنامه ریز، مدیر کنترلر، etcd، Kubelet، پروکسی باشیدو سایر مؤلفه‌ها، درک جامعی از نحوه هماهنگ‌سازی برنامه‌های کاربردی در یک محیط توزیع‌شده توسط Kubernetes به دست می‌آورید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا