مفاهیم پایه کوبچی
برای کار روزمره با پکهای آماده لازم نیست همه جزئیات کوبرنتیز را بدانید. مفاهیم این صفحه برای خواندن وضعیت پک، پیداکردن تنظیمات و بررسی خطاها کافیاند.
برای مطالعه دقیقتر هر مفهوم به مستندات رسمی کوبرنتیز مراجعه کنید.
کوبرنتیز و کلاستر
کوبرنتیز اجرای اپلیکیشنهای کانتینری را روی چند ماشین مدیریت میکند. این ماشینها همراه با اجزای کنترلی، یک کلاستر میسازند.
کلاستر
کلاستر کوبرنتیز از کنترلپلین و یک یا چند نود تشکیل میشود. کنترلپلین وضعیت منابع را بررسی میکند و نودها پادها و کانتینرهای اپلیکیشن را اجرا میکنند.
پروژه کوبیت باید به یک کلاستر متصل باشد تا کوبچی بتواند پکها و منابع آنها را نمایش دهد.
نود
نود یک ماشین فیزیکی یا مجازی عضو کلاستر است. کوبرنتیز پادها را با توجه به منابع درخواستی و محدودیتهای زمانبندی روی نودهای مناسب قرار میدهد.
ورکلود
ورکلود منبعی است که اجرای پادها را مدیریت میکند. Deployment، StatefulSet، DaemonSet، Job و CronJob از نوعهای رایج ورکلود هستند.
در صفحه ورکلودها میتوانید تعداد نمونههای آماده، پادهای زیرمجموعه و وضعیت اجرای هر ورکلود پک را ببینید.
پاد
پاد کوچکترین واحد قابل استقرار در کوبرنتیز است. هر پاد یک یا چند کانتینر دارد که شبکه و بخشی از منابع ذخیرهسازی را با هم به اشتراک میگذارند.
پادها معمولاً موقتیاند. اگر یک پاد حذف یا ناسالم شود، کنترلگر ورکلود میتواند پاد دیگری جای آن بسازد. به همین دلیل تغییر مستقیم فایل داخل کانتینر معمولاً ماندگار نیست.
کانتینر
کانتینر فرایند اپلیکیشن را همراه فایلها و وابستگیهای لازم اجرا میکند. یک پاد میتواند چند کانتینر داشته باشد؛ به همین دلیل در صفحههای لاگ و ترمینال، بعد از انتخاب ورکلود یا پاد باید کانتینر مورد نظر را نیز انتخاب کنید.
ارتباط پادها
نشانی پاد ممکن است با جایگزینی آن تغییر کند. منبع Service یک نشانی پایدار برای دسترسی به مجموعهای از پادها میسازد. NetworkPolicy نیز میتواند ارتباط مجاز میان پادها یا فضای نامها را محدود کند.
منابع کوبرنتیز و وضعیت مطلوب
هر منبع کوبرنتیز، مانند Deployment یا Service، وضعیت مطلوب بخشی از سیستم را تعریف میکند. کنترلگرها وضعیت واقعی را با این تعریف مقایسه و اختلاف را اصلاح میکنند.
این رفتار توضیح میدهد چرا حذف مستقیم یک پاد یا ورکلود همیشه ماندگار نیست. تا وقتی تعریف آن منبع در پک یا چارت باقی مانده باشد، کنترلگر میتواند آن را دوباره بسازد.
فضای نام
فضای نام (Namespace) منابع یک کلاستر را دستهبندی میکند. نام منابعی مانند Service و Deployment باید در فضای نام خود یکتا باشد، اما همان نام میتواند در فضای نام دیگری تکرار شود. منابع سراسری کلاستر مانند Node و StorageClass به فضای نام تعلق ندارند.
هر پک در یک فضای نام نصب میشود. برای دیدن و مدیریت آن در کوبچی، فضای نام باید به پروژه متصل باشد. ساخت و اتصال فضای نام در مدیریت فضاهای نام توضیح داده شده است.
زیرساخت بهعنوان کد
در روش زیرساخت بهعنوان کد، تعریف منابع و تنظیمات در فایل نگهداری میشود. این فایل را میتوان در گیت نسخهبندی، بازبینی و در صورت نیاز بازیابی کرد.
کوبچی برای این کار از GitOps پشتیبانی میکند. استفاده از GitOps اختیاری است و نصب پک آماده از فرم پنل به مخزن گیت نیاز ندارد.
مانیفست
مانیفست، تعریف متنی یک منبع کوبرنتیز است و معمولاً با YAML نوشته میشود. بیشتر مانیفستها فیلدهای apiVersion، kind، metadata و spec دارند. بخش spec وضعیت مطلوب را تعریف میکند و کنترلگر معمولاً نتیجه کار را در status ثبت میکند.
در نصب معمول پک آماده، کوبچی مانیفست پک را از فرم میسازد. ویرایش مستقیم YAML زمانی لازم است که چارت فرم نداشته باشد یا تنظیم مورد نظر در فرم تعریف نشده باشد. جزئیات این مسیر در پیکربندی پک آمده است.
ConfigMap
ConfigMap برای نگهداری تنظیمات غیرحساس به کار میرود. خود چارت باید مشخص کند کدام مقدارها در ConfigMap قرار میگیرند و کانتینر آنها را به شکل فایل یا متغیر محیطی چگونه دریافت میکند.
برای رمز عبور، توکن و کلید خصوصی از ConfigMap استفاده نکنید. داده حساس را با Vault رمزنگاری کنید یا از ورودی Secret تعریفشده در چارت استفاده کنید.
Secret
Secret منبع کوبرنتیز برای نگهداری دادهای است که نباید در تنظیمات عمومی قرار بگیرد؛ مانند اطلاعات ورود به رجیستری یا متغیرهای حساس اپلیکیشن. چارت باید مشخص کند Secret را بهصورت یک مقدار، فایل یا متغیر محیطی چگونه مصرف میکند.
قرارگرفتن مقدار در Secret بهتنهایی به معنی رمزنگاری سرتاسری یا پنهانبودن آن از همه کاربران مجاز نیست. برای نگهداری متن حساس در مانیفست پک، ابتدا آن را با Vault رمزنگاری کنید.
هلم، چارت و پک
هلم مدیر بسته کوبرنتیز است. چارت هلم قالب منابع، مقدارهای پیشفرض و اطلاعات لازم برای نصب یک اپلیکیشن را در یک بسته نسخهپذیر نگه میدارد.
چارت هلم
اگر چارت فرم داشته باشد، کوبچی آن را هنگام نصب نمایش میدهد و مقدارهای ثبتشده را به چارت میدهد. سپس هلم قالبها را رندر میکند و منابع کوبرنتیز ساخته میشوند. خروجی رندرشده در پیکربندی > قالب هلم دیده میشود.
تعریف کامل مخزن، چارت، مقدارها و انتشار هلم در هلم و چارت هلم آمده است.
منبع سفارشی
منبع سفارشی نوعی منبع است که با CustomResourceDefinition یا CRD به API کوبرنتیز افزوده میشود. پس از ثبت CRD، نمونههای آن منبع مانند منابع داخلی کوبرنتیز ساخته و خوانده میشوند.
اپراتور
اپراتور یک کنترلگر برای منابع سفارشی است. اپراتور وضعیت مطلوب ثبتشده در منبع را میخواند، منابع لازم را میسازد یا تغییر میدهد و نتیجه را در وضعیت منبع ثبت میکند.
پک
پک (Pack) یک منبع سفارشی برای تعریف نصب یک چارت هلم است. نام مخزن و چارت، نسخه، متغیرها و مقدارهای نصب در این منبع قرار میگیرند. بیشتر کاربران پک را از پنل کوبچی مدیریت میکنند؛ مانیفست YAML، گیتآپس و kubit-cli نیز برای کارهای فنیتر در دسترساند.
ساختار مانیفست و چرخه زندگی پک در مرجع پک توضیح داده شده است.
پک اپراتور
پک اپراتور مانیفست پک را اعتبارسنجی میکند و انتشار هلم را با آن هماهنگ نگه میدارد. وضعیت نصب، ارتقا یا خطا نیز در همان منبع پک ثبت میشود. راهنمای پک اپراتور رفتار همگامسازی و ارتقای خودکار را توضیح میدهد.
دسترسی وب با Ingress
منبع Ingress مسیر ترافیک HTTP و HTTPS را از بیرون کلاستر به یک Service مشخص میکند. این منبع میتواند چند دامنه و مسیر داشته باشد و برای TLS به یک Secret گواهی ارجاع دهد.
وجود Ingress بهتنهایی کافی نیست. کلاستر باید Ingress Controller فعال داشته باشد و DNS دامنه نیز به مسیر ورودی کلاستر برسد. روش ثبت دامنه و ساخت گواهی در افزودن دامنه و مدیریت گواهی TLS آمده است.
رویدادهای کوبرنتیز
رویداد (Event) پیام کوتاهی درباره وضعیت یا یک عملیات روی منبع است؛ مانند زمانبندی پاد، دریافت ایمیج یا اتصال دیسک. رویدادها یکی از این دو نوع را دارند:
| نوع (Type) | توضیح |
|---|---|
| Normal | پیام اطلاعاتی درباره عملیات عادی یا موفق |
| Warning | وضعیتی نیازمند بررسی، مانند تأخیر زمانبندی یا خطای mount |
رویداد با لاگ اپلیکیشن فرق دارد. رویداد را اجزای کوبرنتیز مینویسند، اما لاگ از برنامه یا کانتینر میآید. برای بررسی هر دو، رویدادهای پک و لاگ کانتینر را ببینید.
متریک و هشدار
متریک یک مقدار عددی با زمان ثبت است؛ مانند مصرف پردازنده، حافظه یا فضای دیسک. صفحه مانیتورینگ مصرف منابع پروژه و پک را از سامانه متریک کلاستر میخواند. نمایش این مصرف به تعریف ServiceMonitor در چارت اپلیکیشن وابسته نیست.
اپلیکیشن میتواند متریکهای اختصاصی خود را در پایاننقطهای مانند /metrics منتشر کند. در سامانههای مبتنی بر Prometheus، منبع ServiceMonitor روش جمعآوری این متریکها و PrometheusRule شرطهای هشدار را تعریف میکند.
صفحه هشدارها هشدارهای فعالی را نشان میدهد که سامانه هشدار با پروژه یا پک مرتبط کرده است. ساخت و ویرایش قانون هشدار از این صفحه انجام نمیشود.
متغیرهای محیطی
متغیر محیطی یک نام و مقدار است که برنامه هنگام اجرا میخواند. در مانیفست کانتینر، env یک متغیر را جداگانه تعریف میکند و envFrom همه کلیدهای یک ConfigMap یا Secret را وارد محیط کانتینر میکند.
env:
- name: PORT
value: '8080'
envFrom:
- configMapRef:
name: my-config
چارت باید این ورودیها را در قالبهایش تعریف کرده باشد. ساخت متغیر یا گروه در کوبچی بهتنهایی چیزی را به کانتینر اضافه نمیکند. روش استفاده از مقدارهای پروژه و Secret گروه در مدیریت متغیرهای محیطی توضیح داده شده است.
واحدهای حافظه
کوبرنتیز مقدار حافظه را برحسب بایت میخواند و دو دسته پسوند دارد:
- پسوندهای اعشاری:
k،M،G،T،PوE؛ برای نمونه400M. - پسوندهای دودویی:
Ki،Mi،Gi،Ti،PiوEi؛ برای نمونه400Mi.
واحدها به حروف بزرگ و کوچک حساساند. 400m یعنی ۰٫۴ بایت، نه ۴۰۰ مگابایت. برای مقدار حافظه معمولاً از واحدهای دودویی مانند Mi و Gi استفاده کنید.