انتقل إلى المحتوى الرئيسي

الفصل 3.3 - التصنيفات والمحددات

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم دور التصنيفات
  • إنشاء واستخدام التصنيفات
  • تحديد الموارد باستخدام المحددات
  • تنظيم مواردك بفعالية

ما هو التصنيف؟​

التصنيف هو زوج مفتاح-قيمة مرفق بموارد Kubernetes لتحديدها وتنظيمها.


لماذا نستخدم التصنيفات؟​

التنظيم​

تسمح التصنيفات بـ:

  • تجميع الموارد بشكل منطقي
  • تصفية وتحديد الموارد
  • التنظيم حسب البيئة، التطبيق، الإصدار، إلخ.

أمثلة على التصنيفات​

labels:
app: my-application # اسم التطبيق
env: production # البيئة
tier: frontend # الطبقة (frontend/backend)
version: v1.2.3 # الإصدار
team: backend-team # الفريق المسؤول
component: api-server # المكون

إعلان التصنيفات​

في YAML​

apiVersion: v1
kind: Pod
metadata:
name: web-pod
labels:
app: web
env: production
tier: frontend
version: v1
spec:
containers:
- name: nginx
image: nginx:1.20

عبر kubectl​

# إضافة تصنيف
kubectl label pod web-pod team=backend

# تعديل تصنيف موجود
kubectl label pod web-pod env=staging --overwrite

# حذف تصنيف
kubectl label pod web-pod team-

المحددات​

تسمح المحددات بتحديد الموارد بناءً على تصنيفاتها.

محددات بسيطة​

selector:
matchLabels:
app: web
env: production

محددات مع تعبيرات​

selector:
matchExpressions:
- key: env
operator: In
values:
- production
- staging
- key: version
operator: NotIn
values:
- v1

المشغلون:

  • In: القيمة موجودة في القائمة
  • NotIn: القيمة غير موجودة في القائمة
  • Exists: المفتاح موجود
  • DoesNotExist: المفتاح غير موجود

الاستخدام في kubectl​

التصفية باستخدام التصنيفات​

# Pods مع تصنيف محدد
kubectl get pods -l app=web

# Pods مع عدة تصنيفات
kubectl get pods -l app=web,env=production

# Pods بدون تصنيف
kubectl get pods -l '!env'

# Pods مع تصنيف في قائمة
kubectl get pods -l 'env in (production,staging)'

محددات معقدة​

# تعبير AND
kubectl get pods -l app=web,env=production

# تعبير OR (عبر عدة طلبات)
kubectl get pods -l app=web
kubectl get pods -l app=api

حالات الاستخدام: الخدمات​

تستخدم الخدمات المحددات للعثور على الـ Pods:

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
tier: frontend
ports:
- port: 80
targetPort: 8080

أفضل الممارسات​

اتفاقيات التسمية​

  • استخدم أسماء قصيرة وواصفة
  • تجنب الأحرف الخاصة (باستثناء - و _)
  • استخدم القيم بحروف صغيرة
  • الحد الأقصى 63 حرفًا لكل تصنيف

التصنيفات الموصى بها​

labels:
app.kubernetes.io/name: my-app
app.kubernetes.io/instance: my-app-prod
app.kubernetes.io/version: "1.2.3"
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: my-system
app.kubernetes.io/managed-by: helm

ملخص​

في هذا الفصل، تعلمت:

التصنيفات: أزواج مفتاح-قيمة لتنظيم الموارد
المحددات: تحديد الموارد بناءً على التصنيفات
الاستخدام: الخدمات، عمليات النشر، مجموعات النسخ تستخدم المحددات
الأوامر: kubectl label، التصفية باستخدام -l
أفضل الممارسات: اتفاقيات التسمية والتصنيفات الموصى بها


الخطوات التالية​

الآن بعد أن أتقنت التصنيفات:

الفصل 3.4: دورة حياة الـ Pods
الفصل 3.5: مجموعات النسخ


الفصل تم إنشاؤه في: ديسمبر 2024