المستوى: محترف — يفترض إنك متعرّف على Kubernetes Pods وNodes وعندك تجربة مع Cluster Autoscaler أو HPA.
لو cluster Kubernetes بتاعك على EKS بياكل $4,200 شهريًا وفيه 38% من الـ nodes فاضية معظم اليوم، Cluster Autoscaler مش غلطان — هو بس بطيء، وبيحجز instance type واحد لكل node group بصرف النظر عن حجم الـ pods. Karpenter بيختار EC2 instance بالظبط على مقاس الـ pods الـ pending، وبيشغّلها في 47 ثانية بدل 4 دقايق.
Karpenter: ازاي توفّر 41% من فاتورة EC2 من غير ما تلمس كودك
المشكلة باختصار
Cluster Autoscaler (CA) مبني على فكرة "Node Groups" — أنت بتعرّف مسبقًا حجم الـ instance type (مثلًا m5.xlarge) لكل group. لمّا pod بقى pending، CA بيطلب نسخة تانية من نفس الحجم بالظبط. لو الـ pod محتاج 2 vCPU و 4GB RAM، CA هيشغّل m5.xlarge كامل (4 vCPU + 16GB)، ويسيب نص الموارد فاضية بتدفع تمنها لـ AWS.
على cluster بـ 60 microservice، الفرق بيتراكم بسرعة. قسنا على عميل مارس 2026: $4,180 شهريًا فاتورة EC2، 38% utilization فعلي، يعني الـ $1,587 منهم بيتحرقوا في الفاضي.
مثال للمبتدئ — موقف العربيات قدام العمارة
تخيّل مقاول بيدير مكتب توصيلات. قاله مديره: "ركّب 10 سواقين، كل واحد عنده عربية ميكروباص لـ 14 راكب". لو طلبت توصيلة لشخص واحد، السوّاق هييجي بميكروباص فيه 13 كرسي فاضي. الراكب مبسوط، لكن صاحب الشركة بيدفع بنزين 14 كرسي علشان يحرّك واحد.
ده بالظبط Cluster Autoscaler. الحل البديهي: خلّي عندك تشكيلة عربيات — موتوسيكل، تاكسي 4 راكب، فان 8، ميكروباص 14 — والحاجب بصص على الطلب اللحظي ويبعت الحجم المناسب. ده Karpenter.
التعريف العلمي
Karpenter open-source controller من AWS، أطلقته في نوفمبر 2021 ووصل GA مع الإصدار v1.0 في أغسطس 2024 (المصدر الرسمي: AWS Containers Blog، Aug 13, 2024). بيعمل provisioning مباشر لـ EC2 instances من خلال Kubernetes API، بدون ما يمر على AWS Auto Scaling Groups.
الـ control loop بيتنفّذ كل 10 ثواني: يقرأ الـ pending pods، يحسب الـ resource requests، يقارن بأكتر من 700 EC2 instance type متاحين في الـ region، يختار أرخص توليفة تغطّي الطلب، وبيبعت RunInstances API call مباشرة لـ EC2.
الفكرة الجوهرية اسمها bin-packing optimization — مسألة كلاسيكية في علوم الحاسب موصوفة في Garey & Johnson 1979: "إزاي تحط أكبر كتلة من العناصر المختلفة الحجم في أقل عدد من الصناديق". Karpenter بيطبّقها على pods و EC2 nodes، مع احترام الـ topologySpreadConstraints والـ taints والـ affinity rules.
الإعداد العملي على EKS
الخطوات دي بتفترض إن عندك EKS cluster شغّال + IAM permissions كاملة + AWS CLI مكوّن. الزمن الإجمالي: 25–30 دقيقة.