devops, devops-plan, kubernetes, دوآپس, کلاسترینگ, کوبرنتیز, مقالات

معرفی Kubernetes و ساختار اجزای تشکیل دهنده

معرفی Kubernetes و ساختار اجزای تشکیل دهنده

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

 

 

Kubernetes از مجموعه‌ای از اجزای تشکیل دهنده استفاده می‌کند که با هم کار می‌کنند تا برنامه‌های کاربردی را در یک خوشه مدیریت کنند. این اجزا عبارتند از:

  • Master: Master مسئول مدیریت خوشه است. Master شامل یک API Server، یک Controller Manager، و یک Scheduler است.
  • Nodes: Node یک ماشین فیزیکی یا مجازی است که Podها را اجرا می‌کند.
  • Pods: Pod یک واحد اساسی در Kubernetes است که یک یا چند Container را در خود جای می‌دهد.
  • Containers: Container یک بسته بندی نرم‌افزاری است که شامل کد، پیکربندی، و تمام منابع مورد نیاز برای اجرای برنامه است.

Master

Master مسئول مدیریت خوشه است. Master شامل یک API Server، یک Controller Manager، و یک Scheduler  و Etcd است.

  • API Server: API Server رابطی است که کاربران و ابزارها از طریق آن با Kubernetes تعامل می‌کنند.
  • Controller Manager: Controller Manager مسئول اجرای کنترلرها است. کنترلرها مسئول اطمینان از اینکه منابع Kubernetes در وضعیت مطلوبی هستند.
  • Scheduler: Scheduler مسئول تخصیص Podها به Nodes است.
  • Etcd یک سیستم ذخیره سازی کلید-مقدار توزیع شده، قابل اعتماد است که برای ذخیره سازی داده های مهم برای سیستم های توزیع شده استفاده می شود.

Nodes

Node یک ماشین فیزیکی یا مجازی است که Podها را اجرا می‌کند. Node شامل یک Kubernetes Agent است که با Master ارتباط برقرار می‌کند.

  • Kubernetes Agent: Kubernetes Agent مسئول اجرای Podها و گزارش وضعیت آنها به Master است.

     Node worker ها اجزای زیر را دارند:

    • kubelet: kubelet مسئول اجرای Podها و گزارش وضعیت آنها به Master است.
    • container runtime: container runtime مسئول اجرای containers است.
    • kube-proxy: kube-proxy مسئول روت کردن ترافیک به Podها است.
    • kube-dns: kube-dns مسئول ارائه خدمات DNS برای Podها است.

    kubelet

    kubelet مسئول اجرای Podها و گزارش وضعیت آنها به Master است. kubelet با استفاده از API Server با Master ارتباط برقرار می کند.

    container runtime

    container runtime مسئول اجرای containers است. Kubernetes از چندین container runtime پشتیبانی می کند، از جمله Docker و CRI-O.

    kube-proxy

    kube-proxy مسئول روت کردن ترافیک به Podها است. kube-proxy از iptables برای روت کردن ترافیک استفاده می کند.

    kube-dns

    kube-dns مسئول ارائه خدمات DNS برای Podها است. kube-dns از سرویس های DNS داخلی Kubernetes استفاده می کند.

 

 

Pods

Pod یک واحد اساسی در Kubernetes است که یک یا چند Container را در خود جای می‌دهد. Podها به عنوان یک واحد اجرا می‌شوند و به اشتراک گذاری منابع زیربنایی را آسان می‌کنند.

  • Container: Container یک بسته بندی نرم‌افزاری است که شامل کد، پیکربندی، و تمام منابع مورد نیاز برای اجرای برنامه است.

ساختار اجزای تشکیل دهنده

Kubernetes از یک ساختار لایه‌ای برای سازماندهی اجزای تشکیل دهنده خود استفاده می‌کند. لایه‌های مختلف به شرح زیر هستند:

  • Core Kubernetes: این لایه شامل اجزای اصلی Kubernetes مانند Master، Nodes، و Pods است.
  • Kubernetes Extensions: این لایه شامل اجزای اضافی Kubernetes است که قابلیت‌های جدیدی را ارائه می‌دهند.
  • Third-Party Components: این لایه شامل اجزای شخص ثالث است که می‌توانند با Kubernetes استفاده شوند.

 

 

ساختار دایرکتوری ها در کوبرنتیز

 

Kubernetes از یک ساختار دایرکتوری استاندارد برای ذخیره فایل‌های پیکربندی و داده استفاده می‌کند. این ساختار دایرکتوری به کاربران و ابزارها اجازه می‌دهد تا به راحتی به فایل‌های مورد نیاز دسترسی پیدا کنند.

ساختار دایرکتوری Kubernetes به شرح زیر است:

/etc/kubernetes
/var/lib/kubernetes

/etc/kubernetes

دایرکتوری /etc/kubernetes حاوی فایل‌های پیکربندی Kubernetes است. این فایل‌ها شامل موارد زیر هستند:

  • kubelet.conf: این فایل پیکربندی kubelet است.
  • apiserver.conf: این فایل پیکربندی API Server است.
  • controller-manager.conf: این فایل پیکربندی Controller Manager است.
  • scheduler.conf: این فایل پیکربندی Scheduler است.

/var/lib/kubernetes

دایرکتوری /var/lib/kubernetes حاوی داده‌های Kubernetes است. این داده‌ها شامل موارد زیر هستند:

  • pods: این دایرکتوری حاوی اطلاعات مربوط به Podها است.
  • nodes: این دایرکتوری حاوی اطلاعات مربوط به Nodes است.
  • services: این دایرکتوری حاوی اطلاعات مربوط به سرویس‌ها است.
  • endpoints: این دایرکتوری حاوی اطلاعات مربوط به endpointها است.
  • configmaps: این دایرکتوری حاوی اطلاعات مربوط به configmaps است.
  • secrets: این دایرکتوری حاوی اطلاعات مربوط به secrets است.
  • pvs: این دایرکتوری حاوی اطلاعات مربوط به PVs است.
  • pvc: این دایرکتوری حاوی اطلاعات مربوط به PVCs است.

 

در اینجا توضیحی در مورد هر یک از دایرکتوری‌های خاص آورده شده است:

pods

دایرکتوری pods حاوی اطلاعات مربوط به Podها است. این اطلاعات شامل موارد زیر است:

  • metadata: اطلاعات مربوط به شناسایی Pod، مانند نام و برچسب‌ها.
  • spec: مشخصات Pod، مانند containers، volumes، و restart policy.
  • status: وضعیت فعلی Pod، مانند وضعیت containers و شبکه.

nodes

دایرکتوری nodes حاوی اطلاعات مربوط به Nodes است. این اطلاعات شامل موارد زیر است:

  • metadata: اطلاعات مربوط به شناسایی Node، مانند نام و برچسب‌ها.
  • spec: مشخصات Node، مانند CPU، حافظه، و فضای ذخیره سازی.
  • status: وضعیت فعلی Node، مانند وضعیت containers و شبکه.

services

دایرکتوری services حاوی اطلاعات مربوط به سرویس‌ها است. این اطلاعات شامل موارد زیر است:

  • metadata: اطلاعات مربوط به شناسایی سرویس، مانند نام و برچسب‌ها.
  • spec: مشخصات سرویس، مانند نوع سرویس، پورت‌ها، و selector.
  • status: وضعیت فعلی سرویس، مانند وضعیت endpointها.

endpoints

دایرکتوری endpoints حاوی اطلاعات مربوط به endpointها است. این اطلاعات شامل موارد زیر است:

  • metadata: اطلاعات مربوط به شناسایی endpoint، مانند نام و برچسب‌ها.
  • subsets: مجموعه‌ای از Podها که به یک سرویس اختصاص داده شده‌اند.

configmaps

دایرکتوری configmaps حاوی اطلاعات مربوط به configmaps است. configmaps حاوی داده‌های قابل تنظیمی هستند که می‌توان از آنها در Pods استفاده کرد.

secrets

دایرکتوری secrets حاوی اطلاعات مربوط به secrets است. secrets حاوی داده‌های محرمانه‌ای هستند که می‌توان از آنها در Pods استفاده کرد.

pvs

دایرکتوری pvs حاوی اطلاعات مربوط به PVs است. PVs منابع ذخیره سازی PersistentVolume هستند که می‌توان از آنها در Pods استفاده کرد.

pvc

دایرکتوری pvc حاوی اطلاعات مربوط به PVCs است. PVCs درخواست‌های PersistentVolumeClaim هستند که می‌توان از آنها در Pods استفاده کرد.

 

مزایای استفاده از Kubernetes

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

کاربردهای Kubernetes

Kubernetes می‌تواند برای طیف گسترده‌ای از کاربردها استفاده شود، از جمله:

  • وب‌اپ‌ها
  • سرویس‌های وب
  • برنامه‌های موبایل
  • برنامه‌های اینترنت اشیا
  • برنامه‌های هوش مصنوعی

Kubernetes یک ابزار قدرتمند و انعطاف‌پذیر است که می‌تواند برای مدیریت برنامه‌های کاربردی در مقیاس بزرگ استفاده شود.

 

 

منبع :  https://bard.google.com/

 

 

 

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