عن المشروع

kube-state-metrics (KSM) هو خدمة تستمع إلى خادم Kubernetes API وتولّد مقاييس حول حالة كائنات المجموعة مثل النشر والعقد والبودات. بدلاً من مراقبة صحة مكونات Kubernetes الفردية، فإنه يقدم تقارير عن الكائنات داخل المجموعة. تُعرض المقاييس كنص عادي على نقطة نهاية HTTP /metrics (المنفذ الافتراضي 8080) وهي مخصصة لـ Prometheus أو أدوات الجمع المتوافقة؛ تعكس نقطة النهاية حالة المجموعة الحالية، لذا تختفي الكائنات المحذوفة منها. فلسفة التصميم: يولّد KSM مقاييس من كائنات Kubernetes API دون تعديل، لذا تتشارك ميزاته درجة استقرار كائنات API الأساسية. يعرض بيانات خام غير معدلة بدلاً من تطبيق استدلالات بأسلوب kubectl، تاركًا التفسير للمستخدمين. تُستبعد المقاييس المبنية على واجهات API ألفا من ضمانات الاستقرار. القدرات الرئيسية الموصوفة في README: - توثيق المقاييس في دليل docs، بالإضافة إلى مقاييس حالة الموارد المخصصة (مجمدة الميزات لصالح resource-state-metrics). - معالجة التسميات: تُحوَّل أسماء تسميات Kubernetes إلى أسماء متوافقة مع Prometheus (مثلًا app.kubernetes.io/name تصبح label_app_kubernetes_io_name)، مع لواحق _conflictN تلقائية عند تصادم التحويلات. - تدعم قوائم السماح/الرفض تعبيرات ECMAScript النمطية، بما في ذلك lookarounds، مع تقييد التقييم بدقيقة واحدة. - مقاييس ذاتية على مضيف/منفذ قياس منفصل (الافتراضي 8081)، بما في ذلك عدادات نجاح/خطأ list/watch، ومدرجات تكراري لمدة طلبات HTTP، ومعلومات البناء، ورقم التجزئة/إجمالي التجزئات، وتجزئة ملف الإعداد وحالة إعادة التحميل. - إرشادات التوسع: حوالي 250MiB ذاكرة و0.1 نواة كقاعدة عامة؛ قد تؤدي حدود CPU المنخفضة إلى تراكم الطوابير وزيادة استخدام الذاكرة. تُعطى أرقام زمن الاستجابة من اختبار توسع بـ 100 عقدة (Perc50 ~260ms، Perc90 ~475ms، Perc99 ~907ms). - التجزئة الأفقية عبر --shard و --total-shards، باستخدام md5 لمعرف الكائن modulo إجمالي التجزئات؛ التجزئة الآلية في StatefulSet باستخدام --pod و --pod-namespace (تجريبية)؛ التجزئة القائمة على النشر مع فهارس تجزئة صريحة؛ وتجزئة daemonset لمقاييس البودات عبر --node، مع --track-unscheduled-pods للبودات غير المعينة. - تصفية الموارد على /metrics باستخدام معاملات الاستعلام resources و exclude_resources، مع أولوية الاستبعاد. - نقاط نهاية الصحة: /healthz و /livez على المنفذ الرئيسي، و /readyz على منفذ القياس. الإعداد والاستخدام: التثبيت عبر go get k8s.io/kube-state-metrics/v2، وبناء حاوية باستخدام make container، والنشر باستخدام kubectl apply -f examples/standard. تتضمن حزمة kube-prometheus بالفعل KSM كمكوّن. قد يحتاج مستخدمو GKE إلى ربط cluster-admin بسبب صلاحيات الأدوار الصارمة. يقارن README أيضًا KSM مع metrics-server: يقدم metrics-server مقاييس موارد مجمعة من Kubelet عبر Metrics API، بينما يولّد KSM مقاييس جديدة من حالة الكائنات ويحتفظ بلقطة في الذاكرة. لا يصدر أي منهما المقاييس إلى وجهات خارجية بنفسه.