أمس 9 ديسمبر وقع الإصدار التالي من Kubernetes - 1.17. وفقا للتقليد الذي تم تطويره لمدونتنا، نتحدث عن أهم التغييرات في الإصدار الجديد.
المعلومات المستخدمة لإعداد هذه المادة مأخوذة من الإعلان الرسمي، تحسينات Kubernetes لجداول التتبع, سجل التغيير-1.17 والمشكلات ذات الصلة وطلبات السحب ومقترحات تحسين Kubernetes (KEP). إذا ما الجديد؟..
التوجيه المدرك للطوبولوجيا
لقد كان مجتمع Kubernetes ينتظر هذه الميزة لفترة طويلة - توجيه الخدمة المدرك للطوبولوجيا. إذا KEP يعود تاريخه إلى أكتوبر 2018، والمسؤول زيادة — منذ عامين، القضايا المعتادة (يحب هو) - وأكبر ببضع سنوات أخرى...
الفكرة العامة هي توفير القدرة على تنفيذ التوجيه "المحلي" للخدمات الموجودة في Kubernetes. "المحلية" في هذه الحالة تعني "نفس المستوى الطوبولوجي" (مستوى الطوبولوجيا)، والتي قد تكون:
عقدة متطابقة للخدمات،
نفس رف الخادم،
نفس المنطقة
نفس مزود السحابة،
...
أمثلة على استخدام هذه الميزة:
التوفير في حركة المرور في عمليات التثبيت السحابية مع مناطق توفر متعددة (مناطق توافر خدمات متعددة) - راجع. رسم توضيحي جديد باستخدام مثال حركة المرور من نفس المنطقة، ولكن مناطق توافر خدمات مختلفة في AWS؛
زمن وصول أقل للأداء/إنتاجية أفضل؛
خدمة مقسمة تحتوي على معلومات محلية حول العقدة في كل جزء؛
وضع Fluentd (أو نظائرها) على نفس العقدة مع التطبيقات التي يتم جمع سجلاتها؛
للحصول على تفاصيل حول كيفية عمل الميزة وكيف يمكنك استخدامها بالفعل، اقرأ هذا المقال من أحد المؤلفين.
دعم IPv4/IPv6 المزدوج
تقدم ملحوظ مُثَبَّت في ميزة أخرى للشبكة: الدعم المتزامن لمكدسات IP، والتي تم تقديمها لأول مرة في K8s 1.16. وعلى وجه الخصوص، جلب الإصدار الجديد التغييرات التالية:
في وكيل kube مُنفّذ إمكانية التشغيل المتزامن في كلا الوضعين (IPv4 وIPv6)؛
в Pod.Status.PodIPsظهر دعم واجهة برمجة التطبيقات (API) الهبوطية (في نفس الوقت كما في /etc/hosts والآن يطلبون من المضيف إضافة عنوان IPv6)؛
مبادرة ل ترحيل المكونات الإضافية للحجم إلى CSI - الهجرة CSI - وصلت إلى النسخة التجريبية. تعتبر هذه الميزة ضرورية لترجمة المكونات الإضافية للتخزين الموجودة (في الشجرة) إلى واجهة حديثة (CSI، خارج الشجرة) غير مرئية لمستخدمي Kubernetes النهائيين. سيحتاج مسؤولو المجموعة فقط إلى تمكين CSI Migration، وبعد ذلك ستستمر الموارد وأحمال العمل الحالية في "العمل فقط"... ولكن باستخدام أحدث برامج تشغيل CSI بدلاً من تلك القديمة المضمنة في جوهر Kubernetes.
في الوقت الحالي، أصبح الترحيل لبرامج تشغيل AWS EBS جاهزًا في الإصدار التجريبي (kubernetes.io/aws-ebs) والحملة العالمية للتعليم PD (kubernetes.io/gce-pd). التوقعات لمرافق التخزين الأخرى هي كما يلي:
تحدثنا عن كيفية وصول دعم التخزين "التقليدي" في K8 إلى CSI هذا المقال. وقد تم تخصيص انتقال ترحيل CSI إلى الحالة التجريبية منشور منفصل على مدونة المشروع.
بالإضافة إلى ذلك، وصلت وظيفة مهمة أخرى في سياق CSI، والتي تنشأ (تنفيذ ألفا) في K1.17s 8، إلى حالة تجريبية (أي تم تمكينها افتراضيًا) في إصدار Kubernetes 1.12 - إنشاء لقطات والتعافي منهم. من بين التغييرات التي تم إجراؤها على Kubernetes Volume Snapshot في الطريق إلى الإصدار التجريبي:
تقسيم السيارة الجانبية لكاميرا اللقطات الخارجية CSI إلى وحدتي تحكم،
سر مضاف للحذف (سر الحذف) كتعليق توضيحي لمحتويات لقطة وحدة التخزين،
اللمسات النهائية الجديدة (المنهي) لمنع حذف كائن API لقطة إذا كانت هناك اتصالات متبقية.
في وقت الإصدار 1.17، كانت الميزة مدعومة بثلاثة برامج تشغيل CSI: GCE Persistent Disk CSI Driver وPortworx CSI Driver وNetApp Trident CSI Driver. يمكن العثور على مزيد من التفاصيل حول تنفيذه واستخدامه في هذا المنشور على المدونة.
تسميات موفر السحابة
التسميات التي تلقائيا المخصصة للعقد ووحدات التخزين التي تم إنشاؤها اعتمادًا على موفر السحابة المستخدم، كانت متاحة في Kubernetes كإصدار تجريبي لفترة طويلة جدًا - منذ إصدار K8s 1.2 (أبريل 2016!). نظرا لاستخدامها على نطاق واسع لفترة طويلة، المطورين решили، لقد حان الوقت للإعلان عن استقرار الميزة (GA).
ولذلك، تمت إعادة تسميتها جميعًا وفقًا لذلك (حسب الطوبولوجيا):
... ولكنها لا تزال متاحة بأسمائها القديمة (للتوافق مع الإصدارات السابقة). ومع ذلك، يوصى كافة المسؤولين بالتبديل إلى التصنيفات الحالية. الوثائق ذات الصلة تم تحديث K8s.
بينما يمكن نشر Kubernetes يدويًا، فإن المعيار الفعلي (إن لم يكن قانونيًا) لهذه العملية هو استخدام kubeadm. تعتمد أدوات إدارة الأنظمة الشائعة مثل Terraform على kubeadm لنشر Kubernetes. تتضمن التحسينات المخططة لـ Cluster API حزمة قابلة للتركيب لـ Kubernetes bootstrapping باستخدام 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. فيما بينها:
مشاهدة الإشارات المرجعية - نوع جديد من الأحداث التي تحمل علامة أن جميع الكائنات تصل إلى إصدار معين (resourceVersion) تمت معالجتها بالفعل بواسطة المراقبة؛
"حماية اللمسات النهائية" (حماية اللمسات النهائية) لموازنات التحميل (التحقق من موارد الخدمة المقابلة قبل حذف موارد LoadBalancer)؛
تحسين kube-apiserver في الأداء عند العمل مع ساعات متعددة لمراقبة مجموعات متطابقة من الكائنات - يتم تحقيق ذلك عن طريق تجنب التسلسل المتكرر لنفس الكائنات لكل مراقب.
تغييرات أخرى
القائمة الكاملة للابتكارات في Kubernetes 1.17، بالطبع، لا تقتصر على تلك المذكورة أعلاه. وهنا بعض الآخرين (وللحصول على قائمة أكثر اكتمالا، راجع التغيير):