0Pricing
Cloud & IT Cert Prep · درس

ملفات تعريف Fargate للحُزم دون خوادم

شغّل حُزم Kubernetes على Fargate دون إدارة عُقد EC2، واضبط ملفات تعريف Fargate، وافهم قيود مساحات الأسماء الخاصة بها

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

ما هي ملفات تعريف Fargate؟

تتيح AWS Fargate for EKS تشغيل حاويات Kubernetes دون توفير عُقد EC2 أو إدارتها. وبدلًا من التفكير في أنواع المثيلات ومجموعات العُقد، يمكنكم تعريف ملف تعريف Fargate يحدد الحاويات التي ينبغي تشغيلها على Fargate استنادًا إلى مساحة الأسماء ومحددات التسميات الاختيارية. وتوفّر AWS تلقائيًا مقدار الحوسبة المناسب لكل حاوية، ثم تنهيه عند توقف الحاوية.

تهيئة ملف تعريف Fargate

يرتبط ملف تعريف Fargate بمجموعة EKS ويحتوي على محددات واحدة أو أكثر — يحدد كل محدد مساحة أسماء وأزواجًا اختيارية من مفتاح وقيمة لتسمية Kubernetes. يجب أن تطابق الحاوية محددًا واحدًا على الأقل لكي تتم جدولة تشغيلها على Fargate. ويحدد الملف أيضًا دور تنفيذ الحاوية (وهو دور IAM) والشبكات الفرعية الخاصة التي ينبغي لـ Fargate استخدامها لإطلاق الحاويات.

# Create a Fargate profile for the 'production' namespace
aws eks create-fargate-profile \
  --cluster-name my-cluster \
  --fargate-profile-name production-profile \
  --pod-execution-role-arn arn:aws:iam::111122223333:role/EKSFargatePodExecutionRole \
  --subnets subnet-aaa subnet-bbb \
  --selectors '[{"namespace":"production"},{"namespace":"staging","labels":{"fargate":"true"}}]'

دور تنفيذ الحاوية

دور تنفيذ الحاوية هو دور IAM تنتحله EKS عندما تسحب Fargate صور الحاويات وترسل سجلات الحاويات إلى CloudWatch. ويجب أن يتضمن سياسة AWS المُدارة AmazonEKSFargatePodExecutionRolePolicy. ومن دون هذا الدور، سيفشل تشغيل الحاويات المُجدوَلة على Fargate، لأن Fargate لن يتمكن من المصادقة لدى ECR أو الكتابة إلى CloudWatch Logs.

# Create the pod execution role trust policy
cat fargate-trust-policy.json
# {
#   "Version": "2012-10-17",
#   "Statement": [{
#     "Effect": "Allow",
#     "Principal": {"Service": "eks-fargate-pods.amazonaws.com"},
#     "Action": "sts:AssumeRole"
#   }]
# }

aws iam attach-role-policy \
  --role-name EKSFargatePodExecutionRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy

قيود مساحات الأسماء في Fargate

تفرض Fargate قيودًا مهمة على مساحات الأسماء. وتُعد مساحة الأسماء kube-system غير متاحة لمعظم ملفات تعريف Fargate، لأن حاويات النظام مثل kube-proxy تعمل فيها. والاستثناء هو CoreDNS؛ إذ توفر AWS عملية إرشادية لتعديل نشر CoreDNS وإزالة التعليق التوضيحي eks.amazonaws.com/compute-type: ec2 حتى يتمكن من العمل على Fargate. وستظل الحاويات الموجودة في مساحات الأسماء المستبعدة غير مُجدوَلة إذا لم تتوفر عُقد EC2.

# Patch CoreDNS to allow Fargate scheduling
kubectl patch deployment coredns \
  -n kube-system \
  --type json \
  -p '[{"op":"remove","path":"/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'

# Restart CoreDNS to apply the patch
kubectl rollout restart deployment coredns -n kube-system

تحديد موارد حاويات Fargate

تخصص Fargate موارد الحوسبة استنادًا إلى طلبات وحدة المعالجة المركزية والذاكرة المحددة في مواصفات الحاوية. وتقرّب القيم إلى تركيبة vCPU/ذاكرة التالية التي تدعمها Fargate (مثلًا، من 0.25 vCPU / ‏0.5 GB حتى 16 vCPU / ‏120 GB). وتدفعون فقط مقابل الموارد المخصصة لكل ثانية أثناء تشغيل الحاوية. احرصوا دائمًا على ضبط طلبات الموارد بدقة — إذ يؤدي طلب موارد أقل من اللازم إلى إنهاء الحاوية بسبب نفاد الذاكرة، بينما يزيد طلب موارد أكثر من اللازم التكلفة.

# Pod spec with explicit resource requests and limits
apiVersion: v1
kind: Pod
metadata:
  name: api-pod
  namespace: production
spec:
  containers:
  - name: api
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/my-api:latest
    resources:
      requests:
        cpu: '500m'
        memory: '1Gi'
      limits:
        cpu: '1'
        memory: '2Gi'

Fargate مقابل مجموعات عُقد EC2: المفاضلات

تلغي Fargate الحاجة إلى إدارة العُقد، لكنها تفرض بعض القيود: عدم دعم DaemonSets (لعدم وجود عُقد دائمة لجدولتها عليها)، وعدم دعم الحاويات ذات الامتيازات، ودعم محدود لبعض أنواع التخزين. وتدعم مجموعات عُقد EC2 وحدات معالجة الرسومات (GPU)، والنوى المخصصة، وأحمال العمل ذات الحالة التي تستخدم محركات NVMe محلية. ومن الأنماط الشائعة تشغيل الخدمات عديمة الحالة على Fargate، وأحمال العمل ذات الحالة أو أحمال GPU على مجموعات عُقد EC2 مخصصة ضمن مجموعة EKS نفسها.

شبكات Fargate ومجموعات الأمان

تحصل كل حاوية Fargate على واجهة شبكة مرنة (ENI) خاصة بها وعلى عنوان IP خاص من الشبكة الفرعية التي حددتموها في الملف. وهذا يعني أنه يمكنكم تطبيق مجموعة أمان فريدة على كل حاوية باستخدام ميزة Security Groups for Pods. وتدعم حاويات Fargate جميع قواعد مجموعات أمان VPC القياسية، مما يمنحكم تحكمًا دقيقًا في حركة المرور الواردة والصادرة على مستوى الحاوية الفردية — وهي ميزة أمان مهمة مقارنة بمجموعات الأمان المشتركة على مستوى العُقد.

# Assign a security group to a pod via annotation
apiVersion: v1
kind: Pod
metadata:
  name: secure-api
  namespace: production
  annotations:
    vpc.amazonaws.com/pod-eni: 'true'
spec:
  securityGroups:
    groupIds:
    - sg-0abc1234def56789a
  containers:
  - name: api
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/secure-api:v2

تسجيل سجلات Fargate في CloudWatch

ترسل حاويات Fargate السجلات إلى Amazon CloudWatch Logs باستخدام موجّه السجلات Fluent Bit المضمّن. ويمكنكم تهيئة التسجيل بإنشاء ConfigMap باسم aws-logging في مساحة الأسماء aws-observability. ويجب أن يمتلك دور تنفيذ الحاوية الإذن لإنشاء مجموعات السجلات وكتابة أحداث السجل. وتُنظّم السجلات في مجموعات سجلات CloudWatch حسب المجموعة ومساحة الأسماء، مما يسهّل تجميع السجلات مركزيًا دون تشغيل وكيل سجلات منفصل.

# ConfigMap to enable Fargate logging
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-logging
  namespace: aws-observability
data:
  flb_log_cw: 'true'
  output.conf: |
    [OUTPUT]
        Name cloudwatch_logs
        Match *
        region us-east-1
        log_group_name /aws/eks/my-cluster/fargate
        log_stream_prefix fargate-
        auto_create_group true

المُوسّع الأفقي للحاويات على Fargate

تدعم Fargate مُوسّع الحاويات الأفقي في Kubernetes، Horizontal Pod Autoscaler (HPA). وعندما يوسّع HPA عدد النسخ، توفّر Fargate تلقائيًا أجهزة افتراضية مصغّرة جديدة دون الحاجة إلى تعديل حجم أي مجموعة عُقد. ويوفر ذلك تجربة توسّع تلقائي حقيقية دون خوادم: إذ يتحكم HPA في عدد الحاويات، بينما تتولى Fargate إدارة موارد الحوسبة بمرونة. ومع ذلك، ستحتاجون إلى نشر Metrics Server في المجموعة حتى يتمكن HPA من قراءة استخدام وحدة المعالجة المركزية والذاكرة.

# Deploy Metrics Server (required for HPA)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

# Create an HPA for a Fargate-scheduled deployment
kubectl autoscale deployment my-api \
  --namespace production \
  --cpu-percent=60 \
  --min=2 \
  --max=20

نموذج تسعير Fargate

تدفعون مقابل Fargate حسب ثانية vCPU وثانية GB المستهلكة، مع حد أدنى قدره دقيقة واحدة لكل حاوية. ولا توجد تكاليف على مستوى العُقد، أو رسوم سعة محجوزة، أو تكاليف لتصحيح AMI/نظام التشغيل. وتكون Fargate عادةً أعلى تكلفة لكل وحدة حوسبة من مثيلات EC2 عند الطلب والمضبوطة الحجم، لكن التكلفة الإجمالية للملكية تكون غالبًا أقل عند احتساب الوقت الهندسي الذي يتم توفيره في إدارة العُقد وتصحيحها واتخاذ قرارات التوسّع.

قيود Fargate الشائعة التي ينبغي معرفتها

القيود الرئيسية لـ Fargate في اختبار SAA-C03 هي: عدم دعم DaemonSet (لا يمكن وضع الحاويات على كل عُقد لعدم وجود عُقد دائمة)، وعدم دعم الحاويات ذات الامتيازات، وعدم دعم وضع hostNetwork، إضافة إلى أن التخزين المؤقت يقتصر على 20 GB لكل حاوية (ويمكن توسيعه إلى 200 GB من خلال تهيئة). ولا يدعم التخزين الكتلي الدائم باستخدام EBS — استخدموا EFS للتخزين الدائم المشترك للملفات مع حاويات Fargate.

# Mount EFS in a Fargate pod (EBS is NOT supported on Fargate)
apiVersion: v1
kind: Pod
metadata:
  name: efs-pod
  namespace: production
spec:
  volumes:
  - name: efs-storage
    persistentVolumeClaim:
      claimName: efs-pvc
  containers:
  - name: app
    image: my-image:latest
    volumeMounts:
    - name: efs-storage
      mountPath: /data

تحقق سريع

اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمتم في هذا الدرس أن ملفات تعريف Fargate تستخدم محددات مساحات الأسماء والتسميات لجدولة تشغيل الحاويات دون خوادم، وأن دور تنفيذ الحاوية يمنح Fargate الإذن لسحب الصور وكتابة السجلات، وأن Fargate لا تدعم DaemonSets أو EBS — فاستخدموا EFS للتخزين الدائم. بعد ذلك، سنستكشف شبكات EKS باستخدام المكوّن الإضافي VPC CNI ووحدة التحكم AWS Load Balancer Controller.

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

هل درس «ملفات تعريف Fargate للحُزم دون خوادم» مجاني؟

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

ماذا ستتعلم في «ملفات تعريف Fargate للحُزم دون خوادم»؟

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

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

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

كم من الوقت يستغرق درس «ملفات تعريف Fargate للحُزم دون خوادم»؟

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

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

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

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

  1. مستوى التحكم وعُقد العمال في EKS
  2. ملفات تعريف Fargate للحُزم دون خوادم
  3. شبكات EKS: VPC CNI وموازنة التحميل
  4. أدوار IAM لحسابات الخدمة (IRSA)
← العودة إلى Cloud & IT Cert Prep