الفصل 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