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

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