دیروز 9 دسامبر صورت گرفت نسخه بعدی Kubernetes - 1.17. طبق سنتی که برای وبلاگ ما ایجاد شده است، در مورد مهم ترین تغییرات در نسخه جدید صحبت می کنیم.
اطلاعات مورد استفاده برای تهیه این مطالب از اطلاعیه رسمی گرفته شده است. جداول ردیابی پیشرفت های Kubernetes, CHANGELOG-1.17 و مسائل مرتبط، درخواستهای کشش، و پیشنهادهای ارتقای Kubernetes (KEP). خب، چه خبر؟..
مسیریابی آگاه از توپولوژی
جامعه Kubernetes برای مدت طولانی منتظر این ویژگی بوده است - مسیریابی سرویس آگاه از توپولوژی. اگر کلاه لبه دار در اکتبر 2018 سرچشمه می گیرد و رسمی تقویت - 2 سال پیش، مسائل معمول (پسندیدن آن) - و چند سال دیگر بزرگتر ...
ایده کلی این است که توانایی پیادهسازی مسیریابی «محلی» را برای سرویسهای ساکن در Kubernetes فراهم کنیم. "محل" در این مورد به معنای "همان سطح توپولوژیکی" است. (سطح توپولوژی)، که ممکن است:
گره یکسان برای خدمات،
همان رک سرور،
همان منطقه
همان ارائه دهنده ابر،
...
نمونه هایی از استفاده از این ویژگی:
صرفه جویی در ترافیک در تاسیسات ابری با چندین منطقه در دسترس (multi-AZ) - ببینید. تصویر تازه با استفاده از مثال ترافیک از همان منطقه، اما AZ های مختلف در AWS.
تأخیر عملکرد کمتر / توان عملیاتی بهتر.
یک سرویس خرد شده که دارای اطلاعات محلی در مورد گره در هر خرده است.
قرار دادن fluentd (یا آنالوگ) در همان گره با برنامه هایی که لاگ های آنها جمع آوری شده است.
برای جزئیات بیشتر در مورد نحوه عملکرد این ویژگی و نحوه استفاده از آن، بخوانید این مقاله از یکی از نویسندگان
پشتیبانی از دو پشته IPv4/IPv6
پیشرفت قابل توجه درست شد در یکی دیگر از ویژگی های شبکه: پشتیبانی همزمان از دو پشته IP، که برای اولین بار در معرفی شد K8s 1.16. به طور خاص، نسخه جدید تغییرات زیر را به همراه داشت:
در kube-proxy اجرا شد امکان عملکرد همزمان در هر دو حالت (IPv4 و IPv6).
в Pod.Status.PodIPsظاهر شد پشتیبانی از API رو به پایین (همزمان با در /etc/hosts اکنون آنها از میزبان می خواهند که یک آدرس IPv6 اضافه کند).
پشتیبانی از پشته دوگانه نوع (Kubernetes IN Docker) و kubeadm;
ابتکار برای مهاجرت پلاگین های حجمی به CSI - مهاجرت CSI - به نسخه بتا رسیده است. این ویژگی برای ترجمه افزونه های ذخیره سازی موجود حیاتی است (در درخت) به یک رابط مدرن (CSI، خارج از درخت) برای کاربران نهایی Kubernetes نامرئی است. مدیران خوشه فقط باید CSI Migration را فعال کنند، پس از آن منابع و بارهای کاری موجود به حالت "فقط کار می کنند"... اما از آخرین درایورهای CSI به جای درایورهای قدیمی موجود در هسته Kubernetes استفاده می کنند.
در حال حاضر، انتقال برای درایورهای AWS EBS در نسخه بتا آماده است (kubernetes.io/aws-ebs) و GCE PD (kubernetes.io/gce-pd). پیش بینی سایر تاسیسات ذخیره سازی به شرح زیر است:
ما در مورد اینکه چگونه پشتیبانی از حافظه سنتی در K8 به CSI آمد صحبت کردیم این مقاله. و انتقال CSI به وضعیت بتا اختصاص داده شده است انتشار جداگانه در وبلاگ پروژه
علاوه بر این، یکی دیگر از عملکردهای قابل توجه در زمینه CSI، که منشا آن (پیاده سازی آلفا) در K1.17s 8 است، در نسخه Kubernetes 1.12 به وضعیت بتا (یعنی به طور پیش فرض فعال شده است) رسیده است - ایجاد عکس های فوری و بهبودی از آنها. از جمله تغییرات ایجاد شده در Kubernetes Volume Snapshot در راه انتشار بتا:
تقسیم کردن دوربین عکاسی خارجی CSI به دو کنترلر،
راز اضافه شده برای حذف (راز حذف) به عنوان یک حاشیه نویسی برای محتوای یک عکس فوری حجم،
نهایی کننده جدید (نهایی کننده) برای جلوگیری از حذف شی API snapshot در صورت باقی ماندن اتصالات.
در زمان انتشار 1.17، این ویژگی توسط سه درایور CSI پشتیبانی میشود: GCE Persistent Disk CSI Driver، Portworx CSI Driver و NetApp Trident CSI Driver. جزئیات بیشتر در مورد پیاده سازی و استفاده از آن را می توان در اینجا یافت این انتشارات در وبلاگ
برچسب های ارائه دهنده ابر
برچسب هایی که به صورت خودکار بسته به ارائه دهنده ابر استفاده شده به گره ها و حجم های ایجاد شده اختصاص داده می شود، برای مدت طولانی - از زمان انتشار K8s 1.2 - در Kubernetes به عنوان یک نسخه بتا در دسترس بوده است. (آوریل 2016!). با توجه به استفاده گسترده آنها برای مدت طولانی، توسعه دهندگان تصمیم گرفت، که زمان آن است که ویژگی را ثابت (GA) اعلام کنیم.
بنابراین، همه آنها بر این اساس (بر اساس توپولوژی) نامگذاری شدند:
... اما هنوز با نام های قدیمی خود (برای سازگاری با عقب) در دسترس هستند. با این حال، به همه مدیران توصیه میشود که به برچسبهای فعلی سوئیچ کنند. مستندات مرتبط K8s آپدیت شد.
انگیزه اجرای این ویژگی (با توجه به کلاه لبه دار) است:
در حالی که Kubernetes را می توان به صورت دستی مستقر کرد، استاندارد عملی (اگر غیر قانونی) برای این عملیات استفاده از kubeadm است. ابزارهای محبوب مدیریت سیستم مانند Terraform برای استقرار Kubernetes به kubeadm متکی هستند. بهبودهای برنامه ریزی شده برای Cluster API شامل یک بسته قابل ترکیب برای بوت استرپینگ Kubernetes با kubeadm و cloud-init است.
بدون خروجی ساختاریافته، حتی بی ضررترین تغییرات در نگاه اول می تواند Terraform، Cluster API و سایر نرم افزارهایی را که از نتایج kubeadm استفاده می کنند، خراب کند.
برنامه های فوری ما شامل پشتیبانی (به شکل خروجی ساختاریافته) برای دستورات kubeadm زیر است:
alpha certs
config images list
init
token create
token list
upgrade plan
version
تصویری از پاسخ JSON به یک فرمان kubeadm init -o json:
به طور کلی، انتشار Kubernetes 1.17 با شعار " انجام شد.ثبات" این با این واقعیت تسهیل شد که بسیاری از ویژگی های موجود در آن (تعداد کل آنها است 14) وضعیت GA را دریافت کرد. از جمله:
"حفاظت نهایی کننده" (محافظت نهایی ساز) برای متعادل کننده های بار (بررسی منابع سرویس مربوطه قبل از حذف منابع LoadBalancer)؛
بهینه سازی kube-apiserver در عملکرد هنگام کار با ساعتهای متعدد نظارت بر مجموعههای یکسان از اشیاء - با اجتناب از سریالسازی مکرر اشیاء مشابه برای هر تماشاگر به دست میآید.
تغییرات دیگر
البته لیست کامل نوآوری های Kubernetes 1.17 به موارد ذکر شده در بالا محدود نمی شود. در اینجا چند مورد دیگر وجود دارد (و برای فهرست کامل تر، نگاه کنید تغییر دهید):
تغییر مشابه اتفاق افتاد EndpointSlice API (همچنین از K8s 1.16)، اما در حال حاضر این راه حل برای بهبود عملکرد/ مقیاس پذیری Endpoint API به طور پیش فرض فعال نیست.