الفصل 3.2 - إعلان YAML للـ Pods
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم بنية YAML للـ Pod
- إنشاء Pods باستخدام kubectl
- تحديد الموارد (CPU، الذاكرة)
- تكوين متغيرات البيئة
- تركيب وحدات التخزين
بنية YAML للـ Pod
البنية الأساسية
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
env: production
spec:
containers:
- name: my-container
image: nginx:1.20
ports:
- containerPort: 80
الأقسام الرئيسية
- apiVersion: إصدار API لـ Kubernetes
- kind: نوع المورد (Pod)
- metadata: البيانات الوصفية (الاسم، التصنيفات، التعليقات التوضيحية)
- spec: مواصفات الـ Pod
مثال كامل
apiVersion: v1
kind: Pod
metadata:
name: web-server
namespace: default
labels:
app: web
tier: frontend
version: v1
spec:
containers:
- name: nginx
image: nginx:1.20
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
protocol: TCP
env:
- name: ENV_VAR
value: "production"
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
volumeMounts:
- name: config
mountPath: /etc/nginx/conf.d
volumes:
- name: config
configMap:
name: nginx-config
restartPolicy: Always
الموارد (CPU والذاكرة)
Requests و Limits
resources:
requests: # الموارد المضمونة
cpu: "100m" # 0.1 نواة CPU
memory: "128Mi" # 128 ميبيبايت
limits: # الموارد القصوى
cpu: "500m" # 0.5 نواة CPU
memory: "512Mi" # 512 ميبيبايت
وحدات CPU:
100m= 0.1 CPU1= 1 نواة CPU2.5= 2.5 نواة CPU
وحدات الذاكرة:
128Mi= 128 ميبيبايت1Gi= 1 جيبيبايت500M= 500 ميجابايت
متغيرات البيئة
الطريقة 1: مباشرة
env:
- name: DATABASE_URL
value: "postgresql://localhost:5432/mydb"
- name: LOG_LEVEL
value: "info"
الطريقة 2: من ConfigMap
env:
- name: CONFIG_VALUE
valueFrom:
configMapKeyRef:
name: my-config
key: config-key
الطريقة 3: من Secret
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: password
وحدات التخزين
أنواع وحدات التخزين
volumes:
# وحدة تخزين من ConfigMap
- name: config
configMap:
name: my-config
# وحدة تخزين من Secret
- name: secrets
secret:
secretName: my-secret
# وحدة تخزين مؤقتة
- name: temp
emptyDir: {}
# وحدة تخزين دائمة
- name: data
persistentVolumeClaim:
claimName: my-pvc
التركيب في الحاوية
volumeMounts:
- name: config
mountPath: /etc/config
readOnly: true
أوامر kubectl
إنشاء Pod
# من ملف YAML
kubectl apply -f pod.yaml
# من سطر الأوامر
kubectl run my-pod --image=nginx:1.20
# إنشاء وعرض YAML
kubectl run my-pod --image=nginx:1.20 --dry-run=client -o yaml > pod.yaml
إدارة الـ Pods
# قائمة الـ Pods
kubectl get pods
# عرض التفاصيل
kubectl describe pod my-pod
# عرض السجلات
kubectl logs my-pod
# تنفيذ أمر
kubectl exec -it my-pod -- /bin/bash
# حذف Pod
kubectl delete pod my-pod
ملخص
في هذا الفصل، تعلمت:
بنية YAML: apiVersion، kind، metadata، spec
الموارد: Requests (المضمونة) و Limits (القصوى)
متغيرات البيئة: مباشرة، ConfigMap، Secret
وحدات التخزين: ConfigMap، Secret، emptyDir، PVC
الأوامر: kubectl apply، get، describe، logs، exec، delete
الخطوات التالية
الآن بعد أن تعرف كيفية إنشاء Pods:
الفصل 3.3: التصنيفات والمحددات
المختبر 3.1: إنشاء وإدارة الـ Pods
الفصل تم إنشاؤه في: ديسمبر 2024