مرا به خاطر بسپار

آموزش کوبرنتیز: بخش اول

بازدید: 198 آخرین به‌روزرسانی: 28 ارديبهشت 1404

مقدمه

همانطور که در  مقاله قبلی (کوبرنتیز چیست) خواندید، کوبرنتیز (Kubernetes یا به‌اختصار K8s) یک پلتفرم متن‌باز برای مدیریت خودکار کانتینرها است که توسعه، استقرار، و مقیاس‌بندی برنامه‌های مدرن را ساده می‌کند. این سری آموزشی برای مبتدیانی طراحی شده که می‌خواهند از صفر شروع کنند و همچنین برای افرادی که به دنبال درک عمیق‌تر هستند.

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

معماری کوبرنتیز

برای درک کوبرنتیز، باید معماری آن را بشناسیم. یک خوشه کوبرنتیز از دو بخش اصلی تشکیل شده است: گره اصلی (Master Node) و گره‌های کارگر (Worker Nodes). گره اصلی مغز خوشه است و وظایف مدیریتی را انجام می‌دهد، در حالی که گره‌های کارگر کانتینرها را اجرا می‌کنند.

معماری کوبرنتیز

در ادامه، اجزای کلیدی کوبرنتیز را با جزئیات بیشتری بررسی می‌کنیم:
خوشه (Cluster): خوشه مجموعه‌ای از گره‌ها است که برنامه‌های کانتینری را اجرا می‌کنند. یک خوشه شامل:
  • گره اصلی: وظایف مدیریتی مثل زمان‌بندی، نظارت، و ذخیره‌سازی داده‌ها را انجام می‌دهد.
  • گره‌های کارگر: کانتینرها را اجرا می‌کنند و با گره اصلی هماهنگ هستند.
گره (Node): گره‌ها ماشین‌های فیزیکی یا مجازی در خوشه هستند. هر گره شامل:
Kubelet: عاملی که روی هر گره اجرا می‌شود، با API Server ارتباط برقرار می‌کند، و وضعیت کانتینرها را مدیریت می‌کند. Kubelet اطمینان می‌دهد که کانتینرها طبق تعریف اجرا شوند.
Container Runtime: نرم‌افزاری مثل داکر یا Containerd که کانتینرها را ایجاد و اجرا می‌کند.

پاد (Pod): کوچک‌ترین واحد اجرایی در کوبرنتیز است. ویژگی‌های پاد:
  • معمولاً شامل یک یا چند کانتینر است که منابع مشترکی (مثل آدرس آیپی و ذخیره‌سازی) دارند.
  • در یک گره اجرا می‌شود و توسط کوبرنتیز مدیریت می‌شود.
  • موقتی است؛ اگر خراب شود، کوبرنتیز آن را جایگزین می‌کند.
مثال: یک پاد ممکن است شامل یک کانتینر وب‌سرور (Nginx) و یک کانتینر برای جمع‌آوری لاگ‌ها باشد.
Kube-Proxy: روی هر گره اجرا می‌شود و قوانین شبکه را مدیریت می‌کند تا ترافیک به پادها هدایت شود.
سرویس: گروهی از پادها را به هم متصل می‌کند و دسترسی پایدار به آن‌ها را فراهم می‌کند. ویژگی‌ها:
  • یک آدرس ثابت (IP یا نام DNS) برای دسترسی به پادها ارائه می‌دهد.
  • ترافیک را بین پادها متعادل می‌کند (Load Balancing).
  • حتی اگر پادها تغییر کنند (مثلاً به دلیل خرابی یا مقیاس‌بندی)، سرویس دسترسی را حفظ می‌کند.
انواع سرویس: ClusterIP (داخلی)، NodePort (خارجی)، و LoadBalancer (ابری).
استقرار (Deployment): برای مدیریت پادها و اطمینان از اجرای تعداد مشخصی از آن‌ها استفاده می‌شود. وظایف:
  • مقیاس‌بندی: افزایش یا کاهش تعداد پادها.
  • به‌روزرسانی: اعمال تغییرات تدریجی در برنامه (مثل ارتقاء نسخه).
  • بازگشت: امکان بازگشت به نسخه‌های قبلی در صورت بروز مشکل.
مثال: یک استقرار می‌تواند تضمین کند که همیشه 3 پاد Nginx در حال اجرا باشند.
kubectl: ابزار خط فرمان کوبرنتیز است که با API Server ارتباط برقرار می‌کند و دستورات را به خوشه ارسال می‌کند و .به شما امکان می‌دهد:
  • منابع (پادها، سرویس‌ها، استقرارها) را ایجاد، حذف، یا ویرایش کنید.
  • وضعیت خوشه را بررسی کنید (مثل kubectl get pods).
  • دستورات پیشرفته مثل مشاهده لاگ‌ها (kubectl logs) یا دیباگ را اجرا کنید.
  • kubectl
صفحه کنترل (Control Plane): مغز خوشه است و در گره اصلی اجرا می‌شود. اجزای آن عبارتند از:
  • API Server: نقطه تماس مرکزی برای تمام تعاملات. تمام دستورات kubectl از طریق API Server پردازش می‌شوند.
  • etcd: پایگاه داده کلیدی-مقداری که وضعیت خوشه (مثل اطلاعات پادها و سرویس‌ها) را ذخیره می‌کند.
  • Scheduler: تصمیم می‌گیرد که پادها روی کدام گره اجرا شوند، با توجه به منابع موجود، نیازهای پاد، و محدودیت‌ها.
  • Controller Manager: کنترل‌کننده‌هایی را اجرا می‌کند که وضعیت خوشه را با وضعیت مورد نظر هماهنگ می‌کنند (مثل اطمینان از اجرای تعداد درست پادها).

نصب و راه‌اندازی محیط

گام ۱: نصب Docker Desktop
Docker Desktop برای اجرای کانتینرها ضروری است، زیرا کوبرنتیز از کانتینرها برای اجرای برنامه‌ها استفاده می‌کند.
  • دانلود و نصب:
به وب‌سایت رسمی Docker بروید.
https://www.docker.com/products/docker-desktop/
نسخه مناسب برای سیستم‌عامل خود (لینوکس، ویندوز، یا مک) را دانلود و نصب کنید.
جهت بررسی نصب در ترمینال یا Command Prompt دستور زیر را اجرا کنید:
docker --version
باید نسخه داکر (مثلاً Docker version 20.10.0 یا بالاتر) نمایش داده شود.
ابزار Docker Desktop را اجرا کنید و مطمئن شوید که گزینه پشتیبانی از کوبرنتیز در تنظیمات غیرفعال است (چون از Minikube استفاده می‌کنیم).

گام ۲: نصب Minikube
Minikube یک خوشه کوبرنتیز تک‌گره‌ای را در سیستم محلی شما ایجاد می‌کند، که برای یادگیری و تست مناسب است.
  • دانلود و نصب:
به وب‌سایت رسمی Minikube بروید.

دستورالعمل نصب را برای سیستم‌عامل خود دنبال کنید:
- لینوکس:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

مک:

brew install minikube
- ویندوز:
فایل اجرایی را دانلود و به PATH اضافه کنید.
در نهایت برای تنظیم درایور، از درایور داکر استفاده کنید:
minikube config set driver docker
گام ۳: نصب kubectl
kubectl ابزار اصلی برای تعامل با خوشه کوبرنتیز است.
  • دانلود و نصب:
به مستندات رسمی کوبرنتیز  بروید.
https://kubernetes.io/docs/tasks/tools/
دستورالعمل نصب را دنبال کنید:
- لینوکس:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin

- مک:

brew install kubectl

- ویندوز:

فایل اجرایی را دانلود و به PATH اضافه کنید.

گام ۴: راه‌اندازی خوشه با Minikube

حالا بیایید اولین خوشه کوبرنتیز خود را راه‌اندازی کنیم.

راه‌اندازی Minikube: دستور زیر را اجرا کنید:

minikube start

این دستور یک خوشه تک‌گره‌ای ایجاد می‌کند و ممکن است چند دقیقه طول بکشد تا تصاویر دانلود شوند.

بررسی خوشه: برای بررسی وضعیت خوشه دستور زیر را وارد کنید:

kubectl cluster-info

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

kubectl get nodes

باید یک گره با وضعیت Ready ببینید.

تست خوشه: دستور زیر پادهای سیستمی را نشان می‌دهد:

kubectl get pods --all-namespaces

گام ۵: اجرای یک برنامه ساده

برای درک نحوه کار کوبرنتیز، یک وب‌سرور Nginx مستقر می‌کنیم.

ایجاد استقرار (دیپلوی): دستور زیر یک دیپلوی با یک پاد ایجاد می‌کند:

kubectl create deployment nginx-deployment --image=nginx

با دستورات زیر دیپلوی و پادها را بررسی کنید:

kubectl get deployments
kubectl get pods

ایجاد سرویس: برای دسترسی به Nginx، یک سرویس NodePort ایجاد کنید:

kubectl expose deployment nginx-deployment --type=NodePort --port=80

دسترسی به برنامه: URL سرویس را پیدا کنید:

minikube service nginx-deployment --url

URL را در مرورگر باز کنید تا صفحه پیش‌فرض Nginx را ببینید.

جمع‌بندی

در این بخش، ابزارهای اصلی (Docker Desktop، Minikube، و kubectl) را نصب کردیم، یک خوشه کوبرنتیز راه‌اندازی کردیم، و یک برنامه ساده مستقر کردیم. همچنین معماری کوبرنتیز و اجزای کلیدی آن (خوشه، گره، پاد، سرویس، دیپلوی، kubectl، و صفحه کنترل) را با جزئیات بررسی کردیم و یک لینک به نمودار رسمی ارائه دادیم. این پایه‌ای محکم برای یادگیری پیشرفته‌تر است.
در بخش بعدی، به مدیریت پادها، سرویس‌ها، و دیپلوی‌ها با فایل‌های YAML می‌پردازیم و نحوه تعریف منابع را به‌صورت حرفه‌ای‌تر یاد می‌گیریم.

سوالات متداول

  1. چگونه در حوزه رایانش ابری به‌روز بمانم؟
وبلاگ‌های رسمی ابررایانه سیمرغ، AWS، Azure، و GCP را دنبال کنید و در دوره‌های پیشرفته شرکت کنید.
  1. رایانش ابری چیست و چرا مهم است؟
رایانش ابری ارائه خدمات محاسباتی از طریق اینترنت است که مقیاس‌پذیری و کاهش هزینه‌ها را امکان‌پذیر می‌کند.
  1. آیا کوبرنتیز برای مهندسان ابر مهم است؟
در دنیای مدرن، برنامه‌ها اغلب به‌صورت میکروسرویس‌ها در کانتینرها اجرا می‌شوند و کوبرنتیز استاندارد صنعتی برای مدیریت این کانتینرهاست. یادگیری آن شما را برای نقش‌های پیشرفته‌تر مثل مهندس DevOps یا معمار ابر آماده می‌کند.

منابع

https://simorgh.cloud/
تا چه حد این مطلب برای شما مفید بود؟
بر اساس رای 0 نفر

اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

ثبت نظر

نظر دادن