برنامه نویسی

رازهای صرفه جویی در هزینه Kubernetes: داستان کاهش 50 درصدی حجم کاری

مقیاس بندی Kubernetes و بهینه سازی هزینه

در نقش فعلی من، در زمان اوج ترافیک با مشکلات تأخیر قابل توجهی در پاسخ‌های API خود مواجه شدیم. پس از بررسی، ما شناسایی کردیم که گلوگاه ناتوانی سیستم در مدیریت کارآمد بار افزایش یافته است.
برای پرداختن به این موضوع، کارپنتر، یک خودکار مقیاس‌کننده خوشه‌ای Kubernetes منبع باز را برای مقیاس‌بندی پویا گره‌ها بر اساس نیازهای حجم کار پیاده‌سازی کردم. این راه حل نه تنها مشکل تأخیر را با اطمینان از منابع کافی در دوره های پرترافیک حل کرد، بلکه استفاده بهینه از منابع را نیز حل کرد، که منجر به صرفه جویی قابل توجهی در هزینه در زمان های کم ترافیک شد.

کارپنتر چیست؟
کارپنتر یک پروژه CNCF (بنیاد محاسبات بومی ابری) است که برای ارائه و مقیاس‌بندی پویا گره‌های Kubernetes بر اساس نیازهای بار کاری طراحی شده است.

چگونه کارپنتر کار می کند

کارپنتر از تعاریف منابع سفارشی (CRD) و APIهای ارائه‌دهنده ابری برای ارائه و مقیاس‌بندی پویا گره‌ها در خوشه‌های Kubernetes استفاده می‌کند. در اینجا توضیح گام به گام نحوه عملکرد Karpenter است که با نمونه های پیکربندی نشان داده شده است:
تعاریف منابع سفارشی (CRDs) یک ابزار قدرتمند در Kubernetes است که به شما امکان می دهد با تعریف منابع خود، API Kubernetes را گسترش دهید. این انعطاف‌پذیری، اتوماسیون پیچیده، بارهای کاری سفارشی‌سازی شده را ممکن می‌سازد.

1. نصب و راه اندازی

Karpenter را با استفاده از مانیفست Helm یا YAML نصب کنید. به عنوان مثال:

helm repo add karpenter https://charts.karpenter.sh
helm install karpenter karpenter/karpenter --namespace karpenter --create-namespace \
  --set controller.clusterName= \
  --set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"= \
  --set settings.aws.defaultInstanceProfile=KarpenterNodeInstanceProfile \
  --set settings.aws.clusterEndpoint=
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. پیکربندی کمیسیون

هسته عملکرد کارپنتر در Provisioner نهفته است. این CRD خط‌مشی‌های مقیاس‌بندی، انواع نمونه‌ها، مناطق و سایر اولویت‌ها را تعریف می‌کند. در اینجا یک نمونه پیکربندی آمده است:
ارائه YAML

apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
  name: default
spec:
  # Limit the maximum number of nodes Karpenter can provision
  limits:
    resources:
      cpu: 1000
  # Define the node lifecycle type
  requirements:
    - key: "karpenter.k8s.aws/instance-type"
      operator: In
      values: ["m5.large", "m5.xlarge"]
    - key: "topology.kubernetes.io/zone"
      operator: In
      values: ["us-east-1a", "us-east-1b"]
  provider:
    instanceProfile: "KarpenterNodeInstanceProfile"
    subnetSelector:
      kubernetes.io/cluster/: "owned"
    securityGroupSelector:
      karpenter.sh/discovery: ""
  ttlSecondsAfterEmpty: 30
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تنظیمات کلیدی:

  1. محدودیت ها.منابع: محدودیت های منابع را برای مقیاس بندی تنظیم می کند (مثلاً حداکثر CPU).
  2. الزامات: تنظیمات گره مانند انواع نمونه یا مناطق را مشخص می کند.
  3. ارائه دهنده: تنظیمات خاص AWS مانند زیرشبکه ها و گروه های امنیتی را پیکربندی می کند.
  4. ttlSecondsAfterEmpty: به طور خودکار گره های بیکار را پس از 30 ثانیه خاتمه می دهد.

3. راه اندازی Node Provisioning

کارپنتر غلاف های برنامه ریزی نشده را در خوشه مشاهده می کند. به عنوان مثال:
Pod Spec

apiVersion: v1
kind: Pod
metadata:
  name: compute-intensive
spec:
  containers:
    - name: busybox
      image: busybox
      resources:
        requests:
          memory: "512Mi"
          cpu: "1"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که به دلیل منابع ناکافی نمی توان این غلاف را برنامه ریزی کرد، Karpenter:

  1. رویداد را تشخیص می دهد.
  2. الزامات pod را با پیکربندی Provisioner مطابقت می دهد.
  3. گره جدیدی را راه اندازی می کند که معیارها را برآورده می کند (مثلاً m5.large در us-east-1a).

4. کاهش گره های بیکار

  1. کارپنتر به طور مداوم بر استفاده از خوشه نظارت می کند. هنگامی که گره ها دیگر مورد نیاز نیستند:
  2. بارهای کاری را به گره های کمتری ادغام می کند.
  3. گره های کم استفاده را بر اساس خط مشی های ttlSecondsAfterEmpty یا سفارشی خاتمه می دهد.

5. مشاهده متریک ها و گزارش ها

Karpenter را با استفاده از ابزارهایی مانند Prometheus یا CloudWatch مانیتور کنید. دستورات مثال:
بررسی تامین گره:
kubectl get nodes

مشاهده گزارش های کارپنتر:
kubectl logs -n karpenter deploy/karpenter-controller

نتیجه گیری

Karpenter مقیاس بندی پویا را در خوشه های Kubernetes ساده می کند. با استفاده از فایل های پیکربندی بلادرنگ، می تواند:
خواسته های حجم کاری را مطابقت دهید.
استفاده از منابع را بهینه کنید
کاهش هزینه ها.
سربار عملیاتی را به حداقل برسانید.

انعطاف پذیری آن به شما امکان می دهد تا به سرعت با نیازهای متغیر برنامه سازگار شوید و در دسترس بودن و عملکرد بالا را تضمین کنید.

🚀 برای استاد شدن در کوبرنتس آماده اید؟

سفر Kubernetes خود را با دوره Master Kubernetes: Zero to Hero به سطح بعدی ببرید! 🌟 چه مبتدی باشید و چه قصد دارید مهارت های خود را تقویت کنید، این دوره عملی شامل موارد زیر است:

✅ مبانی Kubernetes – مفاهیم ضروری مانند گره ها، پادها و خدمات را درک کنید.
✅ مقیاس‌بندی پیشرفته – HPA، VPA و بهینه‌سازی منابع را بیاموزید.
✅ ابزارهای نظارت – استاد پرومتئوس، گرافانا و مدیر هشدار.
✅ سناریوهای دنیای واقعی – تنظیمات Kubernetes آماده تولید بسازید.

🎓 آنچه به آن خواهید رسید

💡 خوشه های Kubernetes را با اطمینان مستقر و مدیریت کنید.
🛡️ برنامه ها را با ConfigMaps و Secrets ایمن کنید.
📈 بهینه سازی و نظارت بر منابع برای حداکثر عملکرد.

🔥 همین الان شروع به یادگیری کنید: به دوره استاد کوبرنتیس بپیوندید

شانس خود را برای تبدیل شدن به یک متخصص Kubernetes از دست ندهید! 💻✨

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا