متریکهای PSI در کوبرنتیز ۱.۳۶ به نسخه پایدار رسید
خلاصهٔ کاملتر
PSI یا Pressure Stall Information از سال ۲۰۱۸ بخشی از هسته لینوکس بوده؛ ابزاری که بهجای نشوندادن صرف درصد مصرف CPU یا حافظه، میگه تسکها چه مدت در صف بودن و چقدر وقت از دست رفته. این تفاوت مهمه: یه نود ممکنه ۷۰٪ CPU نشون بده ولی بعضی پروسهها بهخاطر تأخیر در زمانبندی آسیب جدی ببینن. PSI این شکاف رو پر میکنه.
با انتشار کوبرنتیز ۱.۳۶، این قابلیت از مرحله بتا (نسخه ۱.۳۴) به GA یعنی نسخه پایدار رسید. دیگه نیازی به فعالکردن هیچ feature gateای نیست و میشه مستقیم از endpoint معمول /metrics/cadvisor این متریکها رو با Prometheus یا هر ابزار سازگار دیگهای جمع کرد.
تیم SIG Node برای اثبات آمادگی این قابلیت برای محیط production، تستهای عملکردی سنگینی با بیش از ۸۰ پاد روی ماشینهای ۴ هستهای انجام داد. نتیجه؟ سربار Kubelet برای خواندن این متریکها در حدود ۲.۵٪ ظرفیت نود باقی موند. سربار سطح کرنل هم بین ۰.۹٪ تا ۳.۱٪ بود و حتی در اوج بار هم از ۵.۶٪ فراتر نرفت و سریع پایین اومد.
یه بهبود مهم در نسخه ۱.۳۶ اینه که Kubelet دیگه متریک صفر گزارش نمیده وقتی PSI در سطح سیستمعامل غیرفعاله. قبلاً این اتفاق میافتاد و میتونست هشدارهای کاذب در سیستمهای monitoring ایجاد کنه. حالا Kubelet ابتدا بررسی میکنه که آیا کرنل لینوکس واقعاً PSI رو ساپورت میکنه یا نه، و فقط در اون صورت متریک منتشر میکنه.
برای استفاده، نودها باید لینوکس کرنل ۴.۲۰ یا بالاتر و cgroup v2 داشته باشن، و PSI باید در سطح OS فعال باشه (کامپایل با CONFIG_PSI=y و بدون پارامتر psi=0). این متریکها روی نودهای ویندوز در دسترس نیستن، ولی کلاستر میتونه ترکیبی از لینوکس و ویندوز داشته باشه.
ادمینهای نود میتونن از طریق API سرور به kubelet پروکسی بزنن و دادههای فشار رو بهصورت real-time ببینن:
CONTAINER_NAME="example-container"
kubectl get --raw "/api/v1/nodes/$(kubectl get nodes -o jsonpath='{.items[0].metadata.name}')/proxy/stats/summary" \
| jq '.pods[].containers[] | select(.name=="'"$CONTAINER_NAME"'") | {name, cpu: .cpu.psi, memory: .memory.psi, io: .io.psi}'این دستور دادههای PSI مربوط به CPU، حافظه و I/O یه کانتینر مشخص رو از Summary API برمیگردونه. البته پروکسی به kubelet یه عملیات privileged حساب میشه و باید با احتیاط انجام بشه.
نکات کلیدی:
- PSI بهجای درصد مصرف، زمان واقعی توقف تسکها رو اندازه میگیره
- از کوبرنتیز ۱.۳۶ به GA رسیده و نیاز به feature gate نداره
- سربار Kubelet و کرنل هر دو زیر ۶٪ ظرفیت نود بودن
- در نسخه ۱.۳۶ گزارش متریک صفر برای نودهای بدون پشتیبانی PSI حذف شد
- فقط برای نودهای لینوکس با cgroup v2 و کرنل ۴.۲۰+ در دسترسه




