۱۴۰۵ مهر ۶, دوشنبه
دلار آمریکا۲۴۳٬۴۱۵▲ ۳٫۵۸٪یورو۲۷۷٬۰۰۰▲ ۳٫۳۹٪درهم امارات۶۶٬۳۰۵▲ ۳٫۶۱٪سکه امامی۲۴۴٬۵۰۵٬۰۰۰▲ ۱٫۶۶٪طلای ۱۸ عیار (گرم)۲۴٬۳۱۹٬۰۰۰▲ ۱٫۷۵٪انس طلا۴٬۱۵۰ $▼ ۳٫۲۶٪تتر۲۴۴٬۴۵۶▲ ۳٫۲۴٪بیت‌کوین۸۲٬۶۵۳ $▼ ۲٫۴۱٪اتریوم۲٬۶۴۰ $▼ ۱٫۸۹٪سولانا۱۱۷٫۸۴ $▼ ۴٫۳۴٪اپل۳۴۱٫۰۷ $▲ ۱٫۵۳٪انویدیا۲۲۵٫۰۷ $▲ ۰٫۲۲٪مایکروسافت۵۱۶٫۱۷ $▲ ۳٫۶۶٪آلفابت (گوگل)۳۴۳٫۹۲ $▲ ۰٫۴۶٪تسلا۳۷۲٫۱۱ $▼ ۱٫۵۴٪شاخص نزدک۲۷٬۰۶۹ $▲ ۰٫۴۸٪
نرخ ارز

Kubernetes 1.37 با نام Garhwal؛ مقیاس به صفر HPA و ۱۶ قابلیت پایدار

Kubernetes 1.37 با ۶۷ بهبود منتشر شد: مقیاس‌گیری تا صفر در HPA پیش‌فرض شد، Metrics API و گواهی‌های Pod پایدار شدند و kube-dns رو به بازنشستگی است.

دواپس و کلاد۳ دقیقه مطالعه
Kubernetes 1.37 با نام Garhwal؛ مقیاس به صفر HPA و ۱۶ قابلیت پایدار
فهرست مطالب
  1. مهم‌ترین تغییرات Kubernetes 1.37
  2. قابلیت‌های بتا و آلفا که ارزش دنبال کردن دارند
  3. kube-dns منسوخ شد
  4. پیش از ارتقا چه کنیم؟

Kubernetes 1.37 با نام Garhwal روز ۲۶ اوت ۲۰۲۶ منتشر شد. این نسخه ۶۷ بهبود دارد: ۱۶ قابلیت به مرحله پایدار (Stable) رسیده‌اند، ۲۳ قابلیت بتا شده‌اند، ۲۷ قابلیت تازه در مرحله آلفا وارد شده‌اند و یک مورد هم منسوخ یا حذف شده است.

نام این نسخه از منطقه گرهوال (Garhwal) در ایالت اوتاراکند هند در دامنه هیمالیا گرفته شده است. تیم انتشار در لوگو از تراس‌های پلکانی الهام گرفته است؛ جایی که هر طبقه روی طبقه پایینی بنا می‌شود، درست مثل نسخه‌های Kubernetes که هر کدام روی کار نسخه قبلی ساخته می‌شوند.

مهم‌ترین تغییرات Kubernetes 1.37

مقیاس‌گیری تا صفر در HPA، پیش‌فرض شد

قابلیت مقیاس‌گیری تا صفر در HorizontalPodAutoscaler که اولین بار در Kubernetes 1.16 معرفی شده بود، حالا به مرحله بتا رسیده و به‌طور پیش‌فرض فعال است. برای ورک‌لودهایی که با معیارهای Object یا External مقیاس می‌گیرند، HPA می‌تواند در زمان بیکاری تعداد Podها را به صفر برساند و با بازگشت تقاضا دوباره آن‌ها را بالا بیاورد.

به گفته تیم Kubernetes، این قابلیت می‌تواند هزینه مصرف‌کننده‌های صف، کارهای دسته‌ای و ورک‌لودهای GPU را کاهش دهد. کافی است minReplicas را صفر بگذارید:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: queue-worker
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: queue-worker
  minReplicas: 0
  maxReplicas: 10
  metrics:
    - type: External
      external:
        metric:
          name: queue_messages_ready
        target:
          type: AverageValue
          averageValue: "30"

دقت کنید مقیاس به صفر بر اساس CPU و حافظه پشتیبانی نمی‌شود، چون این معیارها به وجود Podهای فعال وابسته‌اند.

Metrics API بعد از ۹ سال پایدار شد

API مربوط به metrics.k8s.io که پشت دستور kubectl top و HPA قرار دارد، پس از نزدیک به نه سال ماندن در مرحله بتا به نسخه پایدار رسید. طبق اعلام پروژه، نسخه v1beta1 در دوره انتقال طبق سیاست منسوخ‌سازی API قابل استفاده می‌ماند، پس ابزارهای فعلی شما خراب نمی‌شوند.

گواهی‌های Pod و Cluster Trust Bundles

دو قابلیت Pod Certificates و ClusterTrustBundles هم‌زمان پایدار شدند. این یعنی توزیع کلید خصوصی، گواهی X.509 و بسته‌های اعتماد به Podها حالا پشتیبانی رسمی و بومی دارد. مدیر کلاستر یک کنترلر امضاکننده مستقر می‌کند و ورک‌لودها با یک Projected Volume از نوع podCertificate هویت خود را دریافت می‌کنند؛ گامی مهم برای پیاده‌سازی mTLS بدون ابزار جانبی.

KYAML و مهاجرت نسخه ذخیره‌سازی

فرمت KYAML، گونه‌ای سخت‌گیرانه‌تر و کم‌ابهام‌تر از YAML برای Kubernetes، پایدار شد و دستور kubectl get -o kyaml حالا قابلیتی رسمی است. همچنین API مهاجرت نسخه ذخیره‌سازی (storagemigration.k8s.io/v1) پایدار و به‌طور پیش‌فرض فعال شده است.

قابلیت‌های بتا و آلفا که ارزش دنبال کردن دارند

  • زمان‌بندی گروهی (Gang Scheduling) در بتا: گروهی از Podها فقط وقتی زمان‌بندی می‌شوند که منابع کافی برای همه آن‌ها وجود داشته باشد؛ برای آموزش مدل‌های یادگیری ماشین توزیع‌شده حیاتی است.
  • پشتیبانی از RangeStream در etcd در بتا: با etcd نسخه 3.7 به بالا، مصرف حافظه در خواندن فهرست‌های بزرگ کاهش پیدا می‌کند. با etcd قدیمی‌تر، kube-apiserver خودکار به روش قبلی برمی‌گردد.
  • Memory QoS با cgroups v2 در بتا: کنترل دقیق‌تر حافظه با مکانیزم‌هایی مثل memory.min.
  • ردیابی آخرین استفاده از PVC در بتا: شرط جدید Unused روی PersistentVolumeClaimها نشان می‌دهد کدام دیسک‌ها بی‌استفاده مانده‌اند؛ ابزاری ساده برای کاهش هزینه ذخیره‌سازی.
  • چک‌پوینت و بازیابی در سطح Pod در آلفا: CRI دو فراخوانی جدید CheckpointPod و RestorePod گرفته است. برای استفاده، رانتایم کانتینر هم باید از آن‌ها پشتیبانی کند.

kube-dns منسوخ شد

تنها مورد منسوخ‌سازی این نسخه kube-dns است. CoreDNS از Kubernetes 1.13 افزونه DNS پیش‌فرض بوده و kube-dns از قابلیت‌هایی مثل EndpointSlice و سرویس‌های دوپشته پشتیبانی نمی‌کند. طبق اعلام پروژه، انتظار می‌رود بعد از v1.40 بسته جدیدی برای kube-dns ساخته نشود. اگر هنوز از آن استفاده می‌کنید، همین حالا مهاجرت به CoreDNS را برنامه‌ریزی کنید.

پیش از ارتقا چه کنیم؟

ارتقای کلاستر عملیاتی را با خواندن یادداشت‌های انتشار کامل و آزمایش روی محیط staging شروع کنید. چند قابلیت، از جمله مقیاس به صفر HPA و ردیابی آخرین استفاده از PVC، در این نسخه به‌طور پیش‌فرض فعال شده‌اند؛ پس بهتر است پیش از ارتقا بدانید کدام‌ها در کلاستر شما اثر دارند. نسخه وصله‌ای v1.37.1 هم در مخزن رسمی منتشر شده است.

اگر تازه وارد دنیای کانتینرها شده‌اید، پیش از Kubernetes سراغ آموزش Docker برای توسعه‌دهندگان بروید و سپس با CI/CD در GitHub Actions ساخت و انتشار ایمیج‌ها را خودکار کنید.

مطالب مرتبط