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

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

العلاقات بين المفاهيم​

نظرة عامة​

التسلسل الهرمي:

  1. Namespace: يحتوي على كل شيء
  2. Deployment: يدير الـ Pods
  3. ReplicaSet: يحافظ على عدد النسخ
  4. Pods: تشغل الحاويات
  5. Service: يعرض الـ Pods

ملخص الفصل​

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

Pod: أصغر وحدة قابلة للنشر، 1+ حاويات
Deployment: يدير دورة الحياة، النسخ، التحديثات
Service: يعرض الـ Pods مع IP ثابت
أنواع الـ Services: ClusterIP, NodePort, LoadBalancer
Namespaces: عزل منطقي، تنظيم
العلاقات: Namespace → Deployment → Pods → Service


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

الآن بعد أن أتقنت المفاهيم الأساسية:

Lab 1.1: أول نشر (تطبيق عملي)
Quiz Module 1: تحقق من معرفتك


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