الفصل 1.5 - المفاهيم الأساسية
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم ما هو Pod
- شرح دور Deployment
- فهم Services وأنواعها
- استخدام Namespaces للتنظيم
مقدمة
يستخدم Kubernetes عدة مفاهيم أساسية ستستخدمها باستمرار. يقدم هذا الفصل الأهم منها: Pods, Deployments, Services و Namespaces.
Pods: الوحدة الذرية
التعريف
الـ Pod هو أصغر وحدة قابلة للنشر في Kubernetes.
خصائص الـ Pod
نقاط رئيسية:
- Pod = 1 أو أكثر من الحاويات
- الحاويات في Pod تشارك:
- عنوان IP
- الأحجام
- مساحة الأسماء الشبكية
- الـ Pods مؤقتة (يمكن إعادة إنشائها)
مثال على Pod
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Deployments: إدارة دورة الحياة
التعريف
الـ Deployment يصف الحالة المرغوبة لتطبيقك.
ميزات الـ Deployment
الفوائد:
- يدير النسخ تلقائيًا
- تحديثات متدرجة (بدون انقطاع)
- تراجع في حالة حدوث مشكلة
- الشفاء الذاتي
مثال على Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Services: عرض التطبيقات
التعريف
الـ Service يعرض مجموعة من الـ Pods كخدمة شبكة مستقرة.
المشكلة المحلولة:
- الـ Pods لها IPs مؤقتة
- يمكن إعادة إنشاء الـ Pods
- كيف نحافظ على عنوان ثابت؟
الحل: يوفر الـ Service عنوان IP ثابت واسم DNS
أنواع الـ Services
1. ClusterIP (افتراضي)
- خدمة داخلية في العنقود
- يمكن الوصول إليها فقط من داخل العنقود
- يستخدم DNS الداخلي
2. NodePort
- يعرض على منفذ (30000-32767) لكل node
- يمكن الوصول إليه من الخارج
- منفذ فريد على جميع الـ nodes
3. LoadBalancer
- يعرض عبر موازن تحميل سحابي
- IP عام تلقائي
- متاح على AWS, Azure, GCP
مثال على Service
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
Namespaces: العزل المنطقي
التعريف
تسمح الـ Namespaces بتقسيم العنقود إلى عدة بيئات افتراضية.
فوائد الـ Namespaces
حالات الاستخدام:
- فصل dev/staging/prod
- عزل الفرق
- إدارة حصص الموارد
- تطبيق سياسات الأمان
Namespaces الافتراضية
ينشئ Kubernetes عدة namespaces افتراضية:
- default: Namespace الافتراضي لمواردك
- kube-system: مكونات نظام Kubernetes
- kube-public: موارد عامة
- kube-node-lease: نبضات nodes
مثال على الاستخدام
# إنشاء namespace
kubectl create namespace production
# النشر في namespace
kubectl apply -f deployment.yaml -n production
# قائمة الـ pods في namespace
kubectl get pods -n production
العلاقات بين المفاهيم
نظرة عامة
التسلسل الهرمي:
- Namespace: يحتوي على كل شيء
- Deployment: يدير الـ Pods
- ReplicaSet: يحافظ على عدد النسخ
- Pods: تشغل الحاويات
- Service: يعرض الـ Pods
ملخص الفصل
في هذا الفصل، تعلمت:
Pod: أصغر وحدة قابلة للنشر، 1+ حاويات
Deployment: يدير دورة الحياة، النسخ، التحديثات
Service: يعرض الـ Pods مع IP ثابت
أنواع الـ Services: ClusterIP, NodePort, LoadBalancer
Namespaces: عزل منطقي، تنظيم
العلاقات: Namespace → Deployment → Pods → Service
الخطوات التالية
الآن بعد أن أتقنت المفاهيم الأساسية:
Lab 1.1: أول نشر (تطبيق عملي)
Quiz Module 1: تحقق من معرفتك
تم إنشاء الفصل في: ديسمبر 2024