أفضل ممارسات Kubernetes. منظمة Kubernetes مع مساحة الاسم

أفضل ممارسات Kubernetes. إنشاء حاويات صغيرة

عندما تبدأ في إنشاء المزيد والمزيد من خدمات Kubernetes ، تصبح المهام سهلة البدء أكثر تعقيدًا. على سبيل المثال ، لا يمكن لفرق التطوير إنشاء خدمات أو عمليات نشر تحت نفس الاسم. إذا كان لديك الآلاف من المداخن ، فإن قائمة بسيطة منها ستستغرق الكثير من الوقت ، ناهيك عن تزويدها بالإدارة العادية. وهذا مجرد غيض من فيض.

دعونا نلقي نظرة على كيفية جعل مساحة الاسم مساحة الاسم إدارة موارد Kubernetes أسهل. إذن ما هي مساحة الاسم بالضبط؟ يمكن اعتبار مساحة الاسم كمجموعة افتراضية داخل مجموعة Kubernetes. يمكنك عزل العديد من مساحات الأسماء عن بعضها البعض داخل نفس مجموعة Kubernetes. يمكنهم حقًا مساعدتك أنت وفرقك في التنظيم والأمان وحتى أداء النظام.



في معظم توزيعات Kubernetes ، تكون الكتلة "خارج الصندوق" مع مساحة اسم تسمى "افتراضي". يوجد في الواقع ثلاثة مساحات أسماء تتعامل معها Kubernetes: الافتراضية ، ونظام kube ، و kube-public. حاليًا ، لا يتم استخدام Kube-public في كثير من الأحيان.



يعد عدم لمس مساحة الاسم kube فكرة جيدة ، خاصة على نظام مُدار مثل Google Kubernetes Engine. ويستخدم مساحة الاسم الافتراضية كمكان لإنشاء خدماتك وتطبيقاتك. لا يوجد شيء خاص به على الإطلاق ، باستثناء أن Kubernetes خارج الصندوق الذي تم تكوينه لاستخدامه ، ولا يمكنك إزالته. يعد هذا أمرًا رائعًا لبدء العمل والأنظمة ذات الأداء المنخفض ، لكنني لا أوصي باستخدام مساحة الاسم الافتراضية في أنظمة الإنتاج الكبيرة. في الحالة الأخيرة ، يمكن لأي فريق تطوير بسهولة إعادة كتابة رمز شخص آخر وتعطيل عمل فريق آخر دون حتى إدراكه.

لذلك ، يجب عليك إنشاء العديد من مساحات الأسماء واستخدامها لتقسيم خدماتك إلى روابط قابلة للإدارة. يمكن إنشاء مساحة اسم باستخدام أمر واحد. إذا كنت تريد إنشاء مساحة اسم تسمى اختبار ، فاستخدم الأمر $ kubectl إنشاء اختبار مساحة اسم أو فقط قم بإنشاء ملف YAML واستخدمه مثل أي مورد Kubernetes آخر.



يمكنك عرض جميع مساحات الأسماء باستخدام الأمر $ kubectl get namespace.



بعد تنفيذه ، سترى ثلاثة مساحات اسم مدمجة ومساحة اسم جديدة تسمى "اختبار". دعونا نلقي نظرة على ملف YAML بسيط لإنشاء القرون. قد تلاحظ أنه لا يوجد ذكر لمساحة الاسم فيه.



إذا كنت تستخدم kubectl لتشغيل هذا الملف ، فسيقوم بإنشاء وحدة mypod في مساحة الاسم النشطة الحالية. ستكون هذه هي مساحة الاسم الافتراضية حتى تقوم بتغييرها. هناك طريقتان لإخبار Kubernetes بمساحة الاسم التي تريد إنشاء المورد الخاص بك. الطريقة الأولى هي استخدام علامة مساحة الاسم عند إنشاء المورد.



الطريقة الثانية هي تحديد مساحة الاسم في إعلان YAML.



إذا حددت مساحة اسم في YAML ، فسيتم دائمًا إنشاء المورد في هذه المساحة. إذا حاولت استخدام مساحة اسم مختلفة عند استخدام علامة مساحة الاسم ، فسوف يفشل الأمر. الآن ، إذا حاولت العثور على جرابك ، فلا يمكنك فعل ذلك.



وذلك لأن جميع الأوامر يتم تنفيذها خارج مساحة الاسم النشطة الحالية. للعثور على جرابك ، تحتاج إلى استخدام علامة مساحة الاسم ، ولكن هذا الأمر ممل بسرعة ، خاصة إذا كنت تعمل كمطور في مجموعة تستخدم مساحة الاسم الخاصة بها ولا تريد استخدام مثل هذه العلامة لكل أمر فردي. دعونا نرى كيف يمكن إصلاح هذا.



خارج الصندوق ، تسمى مساحة الاسم النشطة الافتراضية. إذا لم تحدد مساحة الاسم في YAML للمورد ، فستستخدم جميع أوامر Kubernetes مساحة الاسم الافتراضية النشطة هذه. للأسف ، قد تفشل محاولة إدارة مساحة الاسم النشطة باستخدام kubectl. ومع ذلك ، هناك أداة جيدة جدًا تسمى Kubens ، والتي تبسط هذه العملية إلى حد كبير. عندما تقوم بتشغيل الأمر kubens ، سترى كل مساحات الأسماء مع مساحة الاسم النشطة المميزة.



لتبديل مساحة الاسم النشطة إلى مساحة اسم الاختبار ، ما عليك سوى تشغيل الأمر $ kubens test. إذا قمت بعد ذلك بإدخال الأمر $ kubens مرة أخرى ، يمكنك رؤية تخصيص مساحة اسم نشطة جديدة الآن - اختبار.



هذا يعني أنك لا تحتاج إلى علامة مساحة الاسم لرؤية الجراب في مساحة اسم الاختبار.



لذلك ، يتم إخفاء مساحات الأسماء عن بعضها البعض ، ولكن لا يتم عزلها عن بعضها البعض. يمكن أن تتواصل خدمة من مساحة اسم واحدة بسهولة تامة مع خدمة في مساحة اسم أخرى ، والتي غالبًا ما تكون مفيدة جدًا. تعني القدرة على التواصل بين مساحات الأسماء المختلفة أن خدمة المطورين لديك يمكن أن تتفاعل مع خدمة dev-command أخرى في مساحة اسم مختلفة.

عادة ، عندما يرغب تطبيقك في الوصول إلى خدمة Kubernetes ، فإنك تستخدم خدمة اكتشاف DNS المضمنة وتضفي على التطبيق اسم الخدمة. ومع ذلك ، يمكنك إنشاء خدمة تحت نفس الاسم في عدة مساحات أسماء ، وهي غير صالحة.



لحسن الحظ ، يمكن التحايل على هذا بسهولة باستخدام الشكل الموسع لعنوان DNS. تكشف الخدمات في Kubernetes نقاط النهاية الخاصة بها باستخدام نمط DNS شائع. يبدو الأمر كالتالي:



كقاعدة ، تحتاج فقط إلى اسم الخدمة ، وسيحدد DNS العنوان الكامل تلقائيًا.



ومع ذلك ، إذا كنت بحاجة إلى الوصول إلى الخدمة في مساحة اسم مختلفة ، فما عليك سوى استخدام اسم الخدمة بالإضافة إلى اسم مساحة الاسم:



على سبيل المثال ، إذا كنت ترغب في الاتصال بقاعدة بيانات الخدمة في مساحة اسم الاختبار ، فيمكنك استخدام قاعدة بيانات عنوان قاعدة البيانات. اختبار



إذا كنت ترغب في الاتصال إلى قاعدة بيانات الخدمة في مساحة اسم المنتج ، أنت تستخدم database.prod.



إذا كنت تريد حقًا عزل وتقييد الوصول إلى مساحة الاسم ، يتيح لك Kubernetes القيام بذلك باستخدام سياسات شبكة Kubernetes. سأتحدث عن هذا في السلسلة التالية.

غالبًا ما يُسأل عن عدد مساحات الأسماء التي يجب إنشاؤها ولأي أغراض؟ ما هو جزء البيانات المدارة؟

إذا قمت بإنشاء العديد من مساحات الأسماء ، فإنها تعترض طريقك. إذا كان هناك عدد قليل جدًا منهم ، فستفقد جميع مزايا هذا الحل. أعتقد أن هناك أربع مراحل رئيسية تمر بها كل شركة في عملية إنشاء هيكلها التنظيمي الخاص. اعتمادًا على مرحلة التطوير التي يقع فيها مشروعك أو شركتك ، يمكنك اعتماد الاستراتيجية المناسبة لإنشاء مساحة الاسم.

تخيل أنك جزء من فريق صغير يعمل على تطوير 5-10 خدمات دقيقة ويمكنك بسهولة تجميع جميع المطورين في غرفة واحدة. في هذه الحالة ، من المنطقي تشغيل جميع خدمات المنتج في مساحة الاسم الافتراضية. بالطبع ، للحصول على نطاق أكبر للعمل ، يمكنك استخدام مساحات أسماء - بشكل منفصل للمنتج و dev. وعلى الأرجح ، أنت تختبر تطويرك على جهاز كمبيوتر محلي باستخدام شيء مثل Minikube.

لنفترض أن الظروف تغيرت والآن لديك فريق سريع النمو يعمل في الوقت نفسه على أكثر من 10 خدمات دقيقة. يأتي وقت تحتاج فيه إلى استخدام مجموعات أو مساحات أسماء متعددة ، بشكل منفصل للحث والتطور. يمكنك تقسيم فريق إلى عدة مجموعات فرعية بحيث يكون لكل منها خدماتها الدقيقة الخاصة بها ويمكن لكل فريق من هذه الفرق اختيار مساحة الاسم الخاصة به لتسهيل عملية إدارة تطوير البرامج وإصدارها.



نظرًا لأن كل عضو في الفريق لديه فكرة عن كيفية عمل النظام ككل ، يصبح تنسيق كل تغيير مع جميع المطورين الآخرين أكثر صعوبة. إن محاولة تدوير مجموعة كاملة على جهاز الكمبيوتر المحلي الخاص بك تزداد صعوبة كل يوم.

في الشركات الكبيرة ، لا يعرف المطورون على الإطلاق من يعمل بالضبط على ماذا. تتواصل الفرق باستخدام عقود الخدمة أو تستخدم تقنية شبكة الخدمة ، التي تضيف طبقة تجريد عبر الشبكة ، مثل أداة تكوين Istio. إن محاولة تشغيل المكدس بأكمله محليًا أمر غير ممكن ببساطة ، أوصي بشدة باستخدام منصة تسليم مستمر (CD) مثل Spinnaker على Kubernetes. لذا ، تأتي اللحظة التي يحتاج فيها كل فريق بالتأكيد إلى مساحة الاسم الخاصة به. يمكن لكل أمر تحديد مساحات أسماء متعددة لبيئة التطوير وبيئة الإنتاج.

وأخيرًا ، هناك شركات ريادية كبيرة لا تدرك فيها مجموعة تطوير واحدة وجود مجموعات أخرى. يمكن لهذه الشركة بشكل عام توظيف مطورين من أطراف ثالثة يتفاعلون من خلال واجهات برمجة التطبيقات الموثقة جيدًا. يوجد في كل مجموعة عدة فرق والعديد من الخدمات الصغيرة. في هذه الحالة ، يجب عليك استخدام جميع الأدوات التي ذكرتها سابقًا.



لا يجب على المبرمجين نشر الخدمات يدويًا كما يجب ألا يكون لديهم حق الوصول إلى مساحات الأسماء التي لا تهمهم. في هذه المرحلة ، من المستحسن أن يكون لديك عدة مجموعات لتقليل "نصف قطر الانفجار" للتطبيقات ضعيفة التكوين ، لتبسيط عمليات الفوترة وإدارة الموارد.

وبالتالي ، فإن استخدام مساحات أسماء مؤسستك بشكل صحيح يجعل Kubernetes أكثر قابلية للإدارة ، وأكثر أمانًا ومرونة.

أفضل ممارسات Kubernetes. اختبار الجدوى Kubernetes مع اختبارات الجاهزية والحيوية


القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك VPS القائم على السحابة للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة عن VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ فقط لدينا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV من 199 دولارًا في هولندا!Dell R420 - 2x E5-2430 2.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles