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

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

الأقسام الرئيسية​

  1. apiVersion: إصدار API لـ Kubernetes
  2. kind: نوع المورد (Pod)
  3. metadata: البيانات الوصفية (الاسم، التصنيفات، التعليقات التوضيحية)
  4. 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 CPU
  • 1 = 1 نواة CPU
  • 2.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