این حالت نمایش چند صفحه ای قابل پرینت این قسمت می‌باشد. برای پرینت کلیک کنید..

بازگشت به حالت نمایش عادی این قسمت.

برنامه خود را بررسی کنید

1 - بررسی پادها و نودها

اهداف

  • یادخواهید گرفت پادها (Pods) جیستند.
  • یاد خواهید گرفت نودهای (Nodes) کوبرتنیز چیستند.
  • یادخواهید گرفت چگونه برنامه های خود را در کوبرتنیز عیب یابی کنید.

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

هنگامی که در فصل دوم یک دیپلویمنت ساختید کوبرنتیز یک پاد که متشکل از نسخه ای از برنامه شما است را در سرورتان اجرا کرد. هر پاد در کوبرتنیز یک انتزاع است که متشکل از یک یا چند برنامه کانتینری می باشد و این کانتینر ها به صورت مشترک به این موارد دسترسی خواهند داشت:

  • منبع ذخیره سازی مشترک یا Volume
  • پیکر بندی شبکه و یک ای پی (IP)
  • اطلاعاتی در مورد نحوه اجرای هر کانتینر همانند ایمیج، ویرایش و درگاه های شبکه ای مورد نیاز.

هر پاد برگرفته از مدلی منطقی از یک برنامه برروی سروری است که می تواند برنامه های مختلفی را که به هم مربوط هستند در بر بگیرد.

برای مثال: یک پاد شاید دو کانتینر داشته باشد که یکی از آنها برنامه میزبانی Node.js شما را در بر بگیرد و کانتینر دیگری که اطلاعات مورد نیاز Node.js را فراهم می سازد.

ساخت هر پاد در پلتفرم کوبرنتیز یک دسته عملیات را شامل می شود که پلتفرم تمام آن ها را به صورت متحد اعمال می کند(Atomic). وقتی که شما یک دیپلویمنت می سازید، پادها به همراه کانتینرهایشان ساخته می شوند. وظیفه اجرای این پادها به نودهای کلاستر واگذارشده و تا زمانی که این پادها قطع (terminate) یا حذف شوند اعمال می گردد. در صورتی که نود کلاستر دچار مشکل شود یک پاد برار بر روی نود های دیگر کلاستر برپا شده و اجرا می گردد.

مرور کلی پاد

نودها

پادها همیشه بر روی نودها اجرا می شوند. در کوبرتنیز نودها کارگرانی هستند که می توانند یک سرور فیزیکی یا ماشین مجازی باشند. نودها توسط کنترل پلین ها (Control Plane) مدیریت می شود. هر نود می تواند تعداد متعددی پاد را در بر بگیرد و کنترل پلین کوبرنتیز این پادهارا برروی نودهای مختلف کلاستر مستقر و مدیریت کند. کنترل پلین برای تقسیم خودکار وظایف بین نودها مواردی اعم از مقدار منابع آزاد سیستم ها را بررسی می کند.

هر نود در کوبرنتیز حداقل باید این شرایط را داشته باشد:

  • نرم افزار کوبلت (Kubelet) که یک برنامه برای ارتباط نودها و کنترل پلین است باید بر روی آن نصب و راه اندازی شده باشد. کوبلت وظیفه راه اندازی و مدیریت پادها برروی ماشین را دارد.

  • یک برنامه اجرای کانتینری (مانند داکر) که وظیفه گرفتن ایمیج های کانتینر ها و اجرای آن ها را بر عهده می گیرد.

نگاه کلی بر نودها

عیب یابی با استفاده از کوب کتل (kubectl)

در فصل ۲ این آموزش شما از رابط دستوری کوب کتل استفاده کردید. در فصل ۳ شما از این رابط دستوری استفاده می کنید تا اطلاعات بیشتری در مورد نرم افزار مستقر شده و عملیات های روزمره ای که می توان بر روی محیط انجام داد آشنا شوید.

تعدادی از عملیات های روزمره ای که می توان انجام داد به شرح زیر می باشد:

  • لیست کردن منابع توسط - kubectl get
  • نمایش جزییات یک منبع توسط - kubectl describe
  • بررسی لاگ های یک کانتینر در یک پاد توسط - kubectl logs
  • اجرای یک دستور داخل کانتینری از یک پاد توسط - kubectl exec

با استفاده از این دستورات شما می توانید اطلاعاتی همانند چه زمانی برنامه ها مستقر شده اند، در چه وضعیتی هستنند، کجا در حال اجرا هستند و یا چه تنظیماتی را شامل می شوند.

حالا که با جزییات عملیاتی کلاستر و دستورات آن آشنا شدیم بییاید تا دانش خودمان را امتحان کنیم.

بررسی تنظیمات برنامه مستقر شده

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

kubectl get pods

برای بررسی اطلاعات بیشتری در مورد پاد همانند ایمیج در حال استفاده می توانید از دستور زیر استفاده کنید:

kubectl describe pods

در پاسخ دستور قبل اطاعات جامع تری همانند آدرس ای پی (IP) و درگاه های در حال استفاده و لیستی از رویدادهای پاد از لحظه شروعش را خواهید دیدی.

توجه داشته باشید که پاسخ دریافتی دستور describe بسیار زیاد است و مواردی از آن را ما هنوز مرور نکرده ایم، اما نگران نباشید شما با تمام این مفاهیم تا پایان این دوره آموزش آشنا خواهید شد.

بررسی برنامه ها در ترمینال

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

دستور زیر را در ترمینال دیگری اجرا کنید:

kubectl proxy

دوباره نام پاد را استخراج کرده تا در مرحله بعد استفاده کنیم.

export POD_NAME="$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')"
echo Name of the Pod: $POD_NAME

با استفاده از نام پاد و دستور curl یک درخواست را به رابط کاربری کوبرنتیز بفرستید:

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/

اجرای دستورات برروی کانتینر

با استفاده از دستور exec می توانید به صورت مستقیم داخل یک کانتینر که پاد آن در حال اجرا است دستوراتی را اجرا کنید.

با استفاده از دستور زیر لیست متغییر های محیطی را بررسی کنید:

kubectl exec "$POD_NAME" -- env

توجه داشته باشید که در این مثال ما از نام کانتینر استفاده نمی کنیم چون تنها یک کانتینر داریم.

با استفاده از دستور زیر به رابط کاربری داخل کانتینر در پاد مورد نظر می توانید وصل شوید.

kubectl exec -ti $POD_NAME -- bash

حالا که به کانتینر وصل هستید می توانید با نرم افزار NodeJS نصب شده در آن کار کنید. به طور مثال با استفاده از دستور زیر سورس کد برنامه اجرایی در این پاد را خواهید دید:

cat server.js

می توانید با استفاده از دستور curl از بالا بودن برنامه اطمینان برقرار کنید.

curl http://localhost:8080

برای خروج از کانتینر می توانید از دستور exit استفاده کنید

گام بعدی