Objects و Labels و Namespaces
ما هو Kubernetes Object؟
Section titled “ما هو Kubernetes Object؟”Object هو مورد داخل Kubernetes مثل Pod أو Deployment أو Service. كل Object له:
apiVersion: إصدار API.kind: نوع المورد.metadata: الاسم والـ labels والـ annotations.spec: الحالة التي تريدها.status: الحالة الحالية التي يكتبها Kubernetes.
apiVersion: v1kind: Namespacemetadata: name: trainingmetadata
Section titled “metadata”metadata هي بطاقة تعريف المورد.
metadata: name: web labels: app: web env: dev annotations: owner: devops-teamLabels
Section titled “Labels”Labels تستخدم للاختيار والربط.
مثال: Service يختار Pods التي تحمل label:
selector: app: webNamespaces
Section titled “Namespaces”Namespace يقسم Cluster إلى مساحات. هذا مفيد لفصل:
- فرق مختلفة.
- بيئات مختلفة مثل dev و staging و prod.
- تجارب التدريب عن موارد النظام.
kubectl create namespace devkubectl get pods -n devkubectl config set-context --current --namespace=devAnnotations
Section titled “Annotations”Annotations تشبه labels لكنها لا تستخدم عادة للاختيار. تستخدم لتخزين معلومات إضافية للأدوات أو البشر.
Owner References
Section titled “Owner References”كثير من الموارد يكون لها مالك. مثلا Deployment ينشئ ReplicaSet، و ReplicaSet ينشئ Pods. لهذا لو حذفت Deployment، Kubernetes يعرف الموارد التابعة له.
Lab: تنظيم الموارد بالـ Labels
الهدف: إنشاء Namespace وتشغيل Pods عليها labels ثم فلترتها.
kubectl create namespace labels-labkubectl run web --image=nginx:1.27 -n labels-lab --labels app=web,env=devkubectl run api --image=nginx:1.27 -n labels-lab --labels app=api,env=devkubectl get pods -n labels-lab --show-labelskubectl get pods -n labels-lab -l app=webkubectl delete namespace labels-lab