HomeAboutSkillsCertificatesProjectsBlogContact

June 28, 2026

الفرق بين الـ Namespaced والـ Cluster-scoped Resources 🌐

في Kubernetes، الـ API مقسم الـ Resources لنوعين أساسيين بناءً على نطاق الرؤية والتحكم والـ Scope وهما الـ Cluster-scoped Resources والـ Namespaced Resources. وده شرح مفصل ليهم:

Kubernetes Architecture

1️⃣ Namespaced Resources

ديه الـ Resources اللي بتعيش داخل نطاق معزول منطقياً (Logical Isolation) وتعتبر بيئة العمل الفعلية للـ Developers.

أهم الأمثلة: Pods, Deployments, Services, ConfigMaps, Secrets.

الهدف منها: العزل (Isolation) وتقسيم الكلاستر لبيئات مختلفة (مثلاً: production و staging).

الـ Security (RBAC): للتحكم في الموارد ديه بنستخدم Role (عشان نحدد الصلاحيات) و RoleBinding (عشان نربط الصلاحيات بيوزر داخل الـ Namespace ده بس).

إدارة الموارد (Quota Management): الـ Admins بيقدروا يحطوا ResourceQuotas على الـ Namespace عشان يحددوا الفريق ده آخره يستهلك كام CPU أو Memory.

الـ Storage: هنا بنلاقي الـ PersistentVolumeClaim (PVC) ده مجرد طلب Request والبود مستحيل يستخدم PVC بتاع Namespace تاني.

تكرار الأسماء (Naming): مسموح بتكرار الأسماء بشرط إنها تكون في Namespaces مختلفة.


2️⃣ Cluster-scoped Resources

دي الـ Resources اللي بتكون على مستوى الكلاستر كله ومش تابعة لأي Namespace.

أهم الأمثلة: Nodes, Namespaces (الـ Namespace نفسه يعتبر Cluster resource).

الهدف منها: تمثيل البنية التحتية الأساسية أو إعدادات الكلاستر العامة اللي بتأثر على كل الـ Resources.

الـ Security (RBAC): للتحكم فيها، بنستخدم ClusterRole و ClusterRoleBinding من خلالها بيكون عندنا صلاحيات Admin على مستوى الكلاستر بالكامل.

إدارة الموارد (Quota Management): الموارد دي لا تخضع للـ ResourceQuotas الخاصة بالـ Namespace لأنها بتمثل قدرة الكلاستر ككل ومش محصورة في بيئة معزولة.

الـ Storage: هنا بنلاقي الـ PersistentVolume (PV) والـ StorageClass (SC) الموارد دي متاحة للكلاستر كله ومش تابعة لأي Namespace محدد. تكرار الأسماء (Naming): الاسم لازم يكون فريد (Unique) 100% مستحيل تلاقي 2 Nodes ليهم نفس الاسم في الكلاستر.

🔍 إزاي نعرف الـ Resource تبع أي نوع؟

طب لو عايزين نعرف Resource معين ده تبع إيه؟ Kubernetes عنده Command بنقدر نعرف من خلاله وهو:

لمعرفة كل الـ Namespaced Resources:

kubectl api-resources --namespaced=true

لمعرفة كل الـ Cluster-scoped Resources:

kubectl api-resources --cluster-scoped=true OR --namespaced=false