با افزایش تعداد سرویسها یا بیشتر شدن بار کاری آنها، ممکن است کلاستر به منابع بیشتری نیاز داشته باشد. در این بخش میتوانید با مدیریت نودها و نودپولها، منابع کلاستر را کم یا زیاد کنید تا با نیاز سرویسها هماهنگ بماند.
نودپول چیست؟
نودپول گروهی از نودهای worker کلاستر است که مشخصات یکسانی دارند: CPU، RAM، Data Disk و Ephemeral Storage. لیبلها و taintهای یک نودپول هم برای همهی نودهای آن یکی است. بهجای تنظیم تکتک نودها، یکبار مشخصات را روی نودپول تعریف میکنید و هر نودی که به آن اضافه شود، همان مشخصات را میگیرد.
- مشخصات نودپول، مشخصات هر نود آن است. تعداد نودها جداگانه تعیین میشود.
- هر نودپو ل را برای یک نیاز بسازید؛ مثلا نودپولی با Data Disk بزرگتر برای دیتابیسها یا نودپولی با CPU بیشتر برای اپهای سنگین.
- با لیبل و taint میتوانید مشخص کنید پادها روی کدام نودپول اجرا شوند.
- نودپولهای
pوgwکه بهصورت پیشفرض در کلاستر وجود دارند، نودهای پیشفرض کلاستر هستند و برای اپهای شما نیستند.
مشاهده لیست نودها
امکان مشاهده، اضافه کردن و حذف نودها در کوبرنتیز اختصاصی همروش وجود دارد.
لیست نودپولها به همراه منابع هر نودپول (CPU, RAM, Data Disk, Ephemeral Storage) نمایش داده میشود. با کلیک روی آیکون + کنار هر نودپول، آن نودپول باز میشود و لیست نودهای داخل آن به همراه نام نود، وضعیت (مثلا Ready)، IP و آیکون سهنقطهی عملیات نود نمایش داده میشود.
نودهای پیشفرض کلاستر
هر کلاستر با چند نود پیشفرض ساخته میشود:
- master: کنترلپلین کوبرنتیز (مثل API server، etcd و scheduler) روی این نود اجرا میشود.
- p (نودپول platform): کامپوننتهای خود کلاستر، مثل ingress controller و لودبالانسر، روی این نودها اجرا میشوند.
- gw (نودپول gateway): ورودی و خروجی شبکهی کلاستر است و ترافیک عمومی از این نود عبور میکند.
اپهای شما روی نودهای p و gw اجرا نمیشوند و منابع نودپولهایی که خودتان میسازید، کامل در اختیار اپهای شماست.
ساخت نودپول جدید
برای ایجاد نودپول:
- وارد بخش «مدیریت نودها» شوید.
- روی دکمهی ساخت کلیک کنید و گزینهی نودپول جدید را انتخاب کنید.
- نام نودپول
- تعداد نودهای مدنظر برای این نودپول
- تخصیص منابع (CPU, RAM, Data Disk, Ephemeral Storage)
- با تغییر مقادیر، هزینهی این تخصیص منابع بهصورت لحظهای نمایش داده میشود.
- با انتخاب گزینهی استاتیک CPU، CPU ماشین شما رزرو شده و بهصورت Physical Core خواهد بود. انتخاب این گزینه هزینهی CPU ماشین شما را ۲ برابر خواهد کرد.
- لیبلها و taintهای بیشتر
- در صورتی که نیاز داشته باشید برای نودهای این نودپول از لیبل یا taint خاصی استفاده کنید، میتوانید مقادیر این بخش را تنظیم کنید. نودهایی که در آینده برای این نودپول میسازید نیز از همین قوانین پیروی خواهند کرد.
- لیبلها بهصورت جفت
key/valueو taintها بهصورتkey،valueوeffectتعریف میشوند. توضیح کامل آنها را در بخش لیبلها و taintها ببینید.
- ساخت بهصورت cordon
- در صورتی که نیاز داشته باشید نودها در نهایت به صورت scheduling disabled به کلاستر اضافه شوند، میتوانید این گزینه را انتخاب نمایید.
لیبلها و taintها
لیبل و taint دو ابزار کوبرنتیز برای کنترل این هستند که پادها روی کدام نودها اجرا شوند. اگر برای نودپول لیبل یا taint تعریف کنید، همهی نودهای آن نودپول (از جمله نودهایی که بعدا اضافه میکنید) آنها را خواهند داشت.
لیبل یک برچسب key/value روی نود است. پادی که بخواهد فقط روی نودهای دارای این لیبل اجرا شود، آن را با nodeSelector مشخص میکند. مثلا نودپولی با لیبل workload=db بسازید و در پاد بنویسید:
spec:
nodeSelector:
workload: db
taint برعکس لیبل، پادها را از نود دور میکند. پادی که toleration متناظر با taint را نداشته باشد، روی نودهای دارای آن taint اجرا نمیشود. taint سه بخش دارد:
keyوvalue: نام و مقدار taint، مثلاdedicated=dbeffect: تاثیر taint روی پادهایی که toleration ندارند:NoSchedule: پاد جدید روی نود اجرا نمیشود.PreferNoSchedule: کوبرنتیز تا جای ممکن پاد را روی این نود قرار نمیدهد، ولی اجباری نیست.NoExecute: پاد جدید اجرا نمیشود و پادهای در حال اجرایی که toleration ندارند هم از نود خارج میشوند.
پاد برای اجرا روی نود دارای taint، باید toleration متناظر را داشته باشد:
spec:
tolerations:
- key: dedicated
operator: Equal
value: db
effect: NoSchedule
برای اینکه فقط پادهای مشخصی روی یک نودپول اجرا شوند، معمولا هر دو را با هم استفاده میکنند: taint مانع اجرای پادهای دیگر میشود و لیبل پادهای مورد نظر را به آن نودپول میفرستد.
Ephemeral Storage چیست؟
Ephemeral Storage دیسک سیستمِ هر نود است. سیستمعامل نود، ایمیجهای دریافتشده و فضای موقت همهی پادهای آن نود، از این دیسک استفاده میکنند؛ مثل فایلهای داخل کانتینر، emptyDir و لاگها. این فضا ماندگار نیست و با ریست یا حذف پاد، دادههای آن پاک میشود.
مقداری که در کنسول میبینید، کل دیسک سیستم نود است. بخشی از آن را سیستمعامل و ایمیجها مصرف میکنند و فضای قابل استفاده برای پادها کمی کمتر از این مقدار است.
برای دادههایی که باید ماندگار باشند، مثل دادهی دیتابیسها، از دیسک (PVC) استفاده کنید. فضای دیسکها از Data Disk نود تامین میشود و جدا از Ephemeral Storage است. برای آشنایی بیشتر به مستند Rawfile CSI مراجعه کنید.
ساخت نود جدید
بعد از ساخت نودپول، میتوانید نودهای جدیدی به آن اضافه کنید. نودهای جدید از مشخصات نودپول خود ارثبری میکنند.
- وارد بخش «مدیریت نودها» شوید.
- روی دکمهی ساخت کلیک کنید و گزینهی نود جدید را انتخاب کنید.
- نودپولی را که میخواهید نود به آن اضافه شود انتخاب کنید. مشخصات منابع هر نودپول کنار نام آن نمایش داده میشود.
- تعداد نودها را وارد کنید.
- در صورت نیاز، گزینهی ساخت بهصورت cordon را انتخاب کنید تا نودها بهصورت scheduling disabled به کلاستر اضافه شوند.
هزینهی ماهانهی نودها بهصورت لحظهای در همین فرم نمایش داده میشود. ساخت نودها چند دقیقه زمان میبرد و وضعیت آن را میتوانید از بخش «عملیاتها» ببینید.
حذف نود
برای حذف نود:
- وارد بخش «مدیریت نودها» شوید.
- نودپول مورد نظر را با آیکون + باز کنید، نود را پیدا کنید و روی آیکون سهنقطهی عملیات آن نود کلیک کنید.
- از منوی باز شده، گزینهی حذف نود را انتخاب کنید. گزینهی دیگر این منو، افزایش سایز دیسک است.
- در پنجرهی باز شده، اسم نود را در کادر وارد کنید و «تایید حذف نود» را کلیک کنید.
مشاهدهی عملیاتهای نود
بهطور کلی عملیاتهای مربوط به نود چند دقیقه طول میکشد. با کلیک روی دکمهی «عملیاتها» در بالای صفحهی مدیریت نودها، لیست عملیاتها باز میشود:
- در جریان: عملیاتهایی که هنوز در حال انجام هستند. اگر عملیات فعالی وجود نداشته باشد، پیام «عملیات فعالی وجود ندارد» نمایش داده میشود.
- بهتازگی تمامشده: عملیاتهای اخیر، مثل ایجاد نود و حذف نود، به همراه نام نود، وضعیت موفق یا ناموفق و مدت زمان انجام عملیات.
با فیلترهای بالای لیست میتوانید عملیاتها را فیلتر کنید و با «بازنشانی فیلترها» فیلترها را پاک کنید.