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

المختبر 3.1 - إنشاء وإدارة Pods

الأهداف​

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

  • إنشاء Pods باستخدام YAML
  • إدارة دورة حياة Pods
  • استخدام التسميات والمحددات
  • فحص Pods

المتطلبات الأساسية​

  • عنقود Kubernetes وظيفية
  • تثبيت وتكوين kubectl

التمرين 1: إنشاء Pod بسيط​

الخطوة 1: إنشاء ملف YAML​

قم بإنشاء pod-simple.yaml:

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
env: dev
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80

الخطوة 2: إنشاء Pod​

kubectl apply -f pod-simple.yaml

الخطوة 3: التحقق​

# عرض Pod
kubectl get pods

# التفاصيل
kubectl describe pod nginx-pod

# السجلات
kubectl logs nginx-pod

التمرين 2: Pod مع متغيرات البيئة​

قم بإنشاء pod-env.yaml:

apiVersion: v1
kind: Pod
metadata:
name: env-pod
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'echo $MESSAGE && sleep 3600']
env:
- name: MESSAGE
value: "Hello from Kubernetes!"

قم بالتطبيق وتحقق من السجلات.


التمرين 3: Pod متعدد الحاويات​

قم بإنشاء pod-multi.yaml:

apiVersion: v1
kind: Pod
metadata:
name: multi-pod
spec:
containers:
- name: nginx
image: nginx:1.20
- name: busybox
image: busybox
command: ['sh', '-c', 'while true; do echo $(date); sleep 5; done']

اختبر الاتصال بين الحاويات.


التمرين 4: التسميات والمحددات​

الخطوة 1: إنشاء عدة Pods مع التسميات​

kubectl run pod1 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod2 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod3 --image=nginx:1.20 --labels=app=api,env=dev

الخطوة 2: التصفية باستخدام التسميات​

# Pods مع app=web
kubectl get pods -l app=web

# Pods مع app=web و env=prod
kubectl get pods -l app=web,env=prod

# Pods بدون env=dev
kubectl get pods -l 'env!=dev'

التمرين 5: دورة الحياة​

الخطوة 1: مراقبة المراحل​

# إنشاء Pod
kubectl run test-pod --image=nginx:1.20

# مراقبة المراحل
kubectl get pod test-pod -w

# عرض الأحداث
kubectl describe pod test-pod

الخطوة 2: اختبار إعادة التشغيل​

قم بإنشاء Pod يتعطل:

apiVersion: v1
kind: Pod
metadata:
name: crash-pod
spec:
restartPolicy: Always
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'exit 1']

راقب إعادة التشغيل التلقائي.


التنظيف​

# حذف جميع Pods التي تم إنشاؤها
kubectl delete pod nginx-pod env-pod multi-pod pod1 pod2 pod3 test-pod crash-pod

أسئلة للتفكير​

  1. ما الفرق بين Pod ذو حاوية واحدة وPod متعدد الحاويات؟
  2. كيف تتواصل الحاويات داخل Pod؟
  3. لماذا نستخدم التسميات؟
  4. ماذا يحدث إذا تعطلت حاوية؟

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

المختبر 3.2: النشر باستخدام ReplicaSets
الفصل 3.5: ReplicaSets


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