0Pricing
Cloud & IT Cert Prep · درس

مفاهيم Kubernetes لـ Azure

راجع بنى Kubernetes الأساسية — الحاويات Pods وعمليات النشر والخدمات ومساحات الأسماء — وتعرّف على كيفية إدارة AKS لمستوى التحكم نيابةً عنك.

مفاهيم Kubernetes لـ Azure درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ما هو Kubernetes؟

Kubernetes (K8s) هو نظام أساسي مفتوح المصدر لتنسيق الحاويات، طوّرته Google في الأصل. وهو يؤتمت نشر التطبيقات القائمة على الحاويات وتوسعتها وإدارتها. وبدلًا من تشغيل الحاويات يدويًا، تصف الحالة المطلوبة لتطبيقك في بيانات YAML، ويعمل Kubernetes باستمرار على مطابقة الحالة الفعلية بالحالة المطلوبة — من خلال إعادة تشغيل الحاويات المتعطلة، وجدولة أحمال العمل على العقد السليمة، وتوسيع النسخ المتماثلة.

بنية المجموعة: مستوى التحكم والعقد

تتكون مجموعة Kubernetes من مستوى تحكم وعقد عاملة. يتضمن مستوى التحكم خادم API (نقطة الدخول لجميع أوامر kubectl)، وetcd (مخزن حالة موزعًا)، والمجدول (يعيّن الـ pods إلى العقد)، ومدير وحدات التحكم (يحافظ على الحالة المطلوبة). تشغّل العقد العاملة kubelet (وكيل العقدة)، وkube-proxy (قواعد الشبكة)، ووقت تشغيل للحاويات (containerd). في AKS، تدير Microsoft مستوى التحكم — ولا تدير سوى العقد العاملة.

# Kubernetes control plane components
# kube-apiserver    - REST API for all cluster operations
# etcd              - Distributed key-value store (cluster state)
# kube-scheduler    - Assigns pending pods to nodes
# kube-controller-manager  - Runs reconciliation controllers

# Worker node components
# kubelet           - Node agent, ensures containers run
# kube-proxy        - Network routing for services
# containerd        - Container runtime (runs containers)

Pods: أصغر وحدة قابلة للنشر

إن pod هي أصغر وحدة قابلة للنشر في Kubernetes. وتغلف pod حاوية واحدة أو أكثر تشترك في مساحة أسماء الشبكة (عنوان IP نفسه) ووحدات تخزين ودورة حياة. تتواصل الحاويات داخل pod عبر localhost. وتكون الـ pods مؤقتة — فعند تعطلها، تُستبدل بـ pods جديدة ذات عناوين IP مختلفة. ونادرًا ما تنشئ pods مباشرة؛ بل تنشئ موارد ذات مستوى أعلى تدير الـ pods.

# Simple pod manifest
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp
    image: mycontainerregistry.azurecr.io/myapp:v1.0
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: '100m'
        memory: '128Mi'
      limits:
        cpu: '500m'
        memory: '512Mi'

عمليات النشر: إدارة Replica Sets

يُعد Deployment الطريقة القياسية لتشغيل التطبيقات عديمة الحالة في Kubernetes. فهو ينشئ ReplicaSet ويديره، ويحافظ على العدد المطلوب من النسخ المتماثلة المتطابقة من الـ pods. تدعم عمليات النشر التحديثات التدريجية — باستبدال الـ pods القديمة بأخرى جديدة تدريجيًا — كما تدعم التراجع إلى الإصدارات السابقة. تصف قالب الـ pod المطلوب وعدد النسخ المتماثلة، ويتولى Kubernetes بقية العمل.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1       # Create 1 extra pod during update
      maxUnavailable: 0 # Never reduce below desired count
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: mycontainerregistry.azurecr.io/myapp:v1.0
        ports:
        - containerPort: 80

الخدمات: نقاط نهاية شبكة مستقرة

نظرًا إلى أن الـ pods مؤقتة وتتغير عناوين IP الخاصة بها، توفر Services نقطة نهاية شبكة مستقرة توزّع حركة المرور على الـ pods المطابقة. تستخدم الخدمة محدد تسميات للعثور على الـ pods. أنواع الخدمات هي: ClusterIP (للاستخدام الداخلي فقط، وهو الإعداد الافتراضي)، وNodePort (يكشف منفذًا على كل عقدة)، وLoadBalancer (يجهّز Azure Load Balancer بعنوان IP عام)، وExternalName (اسم مستعار لـ DNS يشير إلى خدمة خارجية).

# Service exposing myapp pods externally
apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  type: LoadBalancer  # Creates Azure Load Balancer
  selector:
    app: myapp        # Routes traffic to pods with this label
  ports:
  - port: 80          # Service port
    targetPort: 80    # Pod/container port

# After creation, check the EXTERNAL-IP (Azure LB public IP)
# kubectl get service myapp-svc

مساحات الأسماء لتعدد المستأجرين

تُقسّم Namespaces مجموعة Kubernetes واحدة إلى مجموعات افتراضية متعددة. وتُعزل الموارد الموجودة في مساحات أسماء مختلفة حسب الاسم — إذ يمكنك امتلاك Deployment باسم myapp في كل من مساحتي الأسماء development وproduction في الوقت نفسه. وتُعد مساحات الأسماء الوحدة الأساسية لتطبيق RBAC وحصص الموارد وسياسات الشبكة على فريق أو بيئة. تتضمن مساحات الأسماء الافتراضية default وkube-system وkube-public.

# Create a namespace for the dev team
kubectl create namespace dev-team

# Deploy into a specific namespace
kubectl apply -f deployment.yaml --namespace dev-team

# List all resources in a namespace
kubectl get all --namespace dev-team

# Set default namespace for current context
kubectl config set-context --current --namespace dev-team

ConfigMaps وSecrets

تخزن ConfigMaps بيانات الإعداد غير الحساسة على شكل أزواج مفتاح-قيمة أو ملفات، وتحقنها في الـ pods كمتغيرات بيئة أو عمليات تحميل لوحدات التخزين. وتخزن Secrets البيانات الحساسة (مثل كلمات المرور والرموز المميزة) بترميز base64 (ولا تكون مشفّرة افتراضيًا — استخدم Azure Key Vault Provider for Secrets Store CSI Driver لتحقيق التشفير الفعلي للبيانات غير النشطة). كلاهما مرتبط بمساحة أسماء، ويُشار إليهما في مواصفات الـ pods بالاسم.

# Create a ConfigMap from literal values
kubectl create configmap app-config \
  --from-literal=APP_ENV=production \
  --from-literal=LOG_LEVEL=info

# Create a Secret
kubectl create secret generic db-secret \
  --from-literal=DB_PASSWORD='super-secret'

# Reference in a pod spec
# env:
# - name: APP_ENV
#   valueFrom:
#     configMapKeyRef:
#       name: app-config
#       key: APP_ENV
# - name: DB_PASSWORD
#   valueFrom:
#     secretKeyRef:
#       name: db-secret
#       key: DB_PASSWORD

وحدات التخزين الدائمة على Azure

تحتاج التطبيقات ذات الحالة إلى مساحة تخزين تتجاوز عمر الـ pods الفردية. يستخدم Kubernetes PersistentVolumes (PVs) وPersistentVolumeClaims (PVCs) لفصل التخزين عن دورة حياة الـ pod. في AKS، تجهّز فئتا التخزين المضمنّتان Azure Disk وAzure Files الأقراص المُدارة ومشاركات الملفات تلقائيًا عند إنشاء PVC. ويُستخدم Azure Disk للوصول من pod واحدة، بينما يدعم Azure Files قراءة عدة pods وكتابتها في الوقت نفسه.

# PersistentVolumeClaim using Azure Disk
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-disk-pvc
spec:
  accessModes:
  - ReadWriteOnce   # Single-node read/write (Azure Disk)
  storageClassName: managed-csi
  resources:
    requests:
      storage: 10Gi

# Mount in a pod
# volumes:
# - name: data
#   persistentVolumeClaim:
#     claimName: my-disk-pvc
# volumeMounts:
# - name: data
#   mountPath: /data

Horizontal Pod Autoscaler

يضبط Horizontal Pod Autoscaler (HPA) تلقائيًا عدد النسخ المتماثلة من الـ pods في Deployment استنادًا إلى استخدام وحدة المعالجة المركزية أو الذاكرة المرصود، أو إلى مقاييس مخصصة. تستعلم وحدة تحكم HPA عن خادم المقاييس كل 15 ثانية، وتزيد عدد النسخ المتماثلة أو تخفضه للحفاظ على الاستخدام قريبًا من الهدف. وتحدد الحدين الأدنى والأقصى لعدد النسخ المتماثلة كضوابط تمنع التوسع الخارج عن السيطرة.

# Create an HPA targeting 50% CPU utilisation
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 2
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

فحوصات السلامة: اختبارات الحيوية والجاهزية

يستخدم Kubernetes probes لمراقبة سلامة الحاويات. يتحقق اختبار الحيوية مما إذا كانت الحاوية لا تزال قيد التشغيل — فإذا فشل، يعيد Kubernetes تشغيل الحاوية. ويتحقق اختبار الجاهزية مما إذا كانت الحاوية جاهزة لخدمة حركة المرور — فإذا فشل، تُزال الـ pod من موازنة تحميل Service من دون إعادة تشغيلها. أما اختبار بدء التشغيل فيؤخر الاختبارات الأخرى حتى تهيئة التطبيق، مما يمنع عمليات إعادة التشغيل المبكرة أثناء بدء التشغيل البطيء.

livenessProbe:
  httpGet:
    path: /health
    port: 80
  initialDelaySeconds: 15
  periodSeconds: 20
  failureThreshold: 3

readinessProbe:
  httpGet:
    path: /ready
    port: 80
  initialDelaySeconds: 5
  periodSeconds: 10
  failureThreshold: 3

startupProbe:
  httpGet:
    path: /startup
    port: 80
  failureThreshold: 30
  periodSeconds: 10  # Allow 300s for slow startup

طلبات الموارد والحدود

ينبغي لكل حاوية في Kubernetes التصريح عن طلبات الموارد (الحد الأدنى المضمون من التخصيص الذي يستخدمه المجدول) والحدود (الحد الأقصى المسموح به، وبعد تجاوزه تُقيَّد الحاوية أو تُنهى). تُقاس طلبات وحدة المعالجة المركزية بالـ millicores (m) — حيث 1000m = نواة CPU واحدة. ويساعد ضبط الطلبات والحدود بدقة على منع مشكلات الجار المزعج، كما يتيح للمجدول توزيع الـ pods بكفاءة على العقد من دون الإفراط في تخصيص الموارد.

resources:
  requests:
    cpu: '250m'      # 0.25 CPU core guaranteed
    memory: '256Mi'  # 256 MiB guaranteed
  limits:
    cpu: '1'         # Max 1 CPU core
    memory: '512Mi'  # Max 512 MiB (OOMKilled if exceeded)

تحقق سريع

اختبر مدى فهمكم لمفاهيم Microsoft Azure Fundamentals (AZ-900) التي تناولها هذا الدرس.

مراجعة الدرس

تعلّمتم في هذا الدرس أن pods هي أصغر وحدات قابلة للنشر، وتشترك في الشبكة والتخزين، وأن Deployments تدير مجموعات النسخ المتماثلة عديمة الحالة مع دعم التحديثات التدريجية، وأن Services توفر نقاط نهاية ثابتة لموازنة حركة المرور عبر pods مؤقتة. بعد ذلك، سنستكشف نشر أحمال العمل على AKS.

الأسئلة الشائعة

هل درس «مفاهيم Kubernetes لـ Azure» مجاني؟

نعم — نص درس «مفاهيم Kubernetes لـ Azure» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «مفاهيم Kubernetes لـ Azure»؟

راجع بنى Kubernetes الأساسية — الحاويات Pods وعمليات النشر والخدمات ومساحات الأسماء — وتعرّف على كيفية إدارة AKS لمستوى التحكم نيابةً عنك. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «مفاهيم Kubernetes لـ Azure»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Azure Container Registry
  2. Azure Container Instances
  3. مفاهيم Kubernetes لـ Azure
  4. نشر أعباء العمل على AKS
← العودة إلى Cloud & IT Cert Prep