‫أريد أن أستغرق دقيقة سريعة للحديث عن
‫DNS و Kubernetes. في بعض الأحيان نعتبر ذلك أمرًا مفروغًا
‫منه في Docker و Swarm و Kubernetes ، DNS مجرد نوع من الأعمال.
‫أريد أن أقدم لكم بعض التفاصيل بسرعة حقيقية حول ما يجري
‫في الخلفية قبل أن نواصل المضي قدمًا.
‫ما جربته حتى الآن هو أنك إذا كنت في حاوية ، وقمت
‫باستخدام عنوان URL أو ping على اسم خدمة ، فستستعيد
‫الاستجابة.
‫لذلك ، من الواضح أن هناك خادم
‫DNS هناك يفعل شيئًا لمطابقة الخدمات
‫بأسماء DNS. صدق أو لا تصدق ، DNS اختياري كخدمة
‫، أو إضافة ، داخل مجموعة Kubernetes الخاصة بك.
‫لكن الجميع يضع واحدًا هناك.
‫في الواقع ، عند تثبيته ، سواء كان kubeadm ، أو Docker
‫Desktop ، أو أيًا كان ما تستخدمه ، سيكون هناك
‫خادم DNS هناك.
‫بدءًا من 1. 11 الإصدار ، CoreDNS
‫هو الافتراضي. إنه نوع من المعيار.
‫هناك واحدة سابقة تسمى KubeDNS ، والتي تم إهمالها في هذه
‫المرحلة ، ويجب علينا جميعًا استخدام CoreDNS الآن.
‫ما يُعرف باسم اكتشاف الخدمة المستندة إلى DNS.
‫كان لديك في Docker. كان لديك في Swarm.
‫في الأساس ، يعمل بنفس الطريقة في Kubernetes
‫حيث عند إنشاء خدمة ، تحصل على اسم المضيف الذي يطابق
‫الخدمة. لكن اسم المضيف هذا هو جزء
‫من اسم أكبر ، اسم المجال المؤهل بالكامل.
‫لم نحصل على ذلك في Docker أو Swarm.
‫لقد كانوا يركزون فقط على أسماء المضيف.
‫مع Kubernetes ، نحصل على المزيد من الخيارات ، أليس كذلك.
‫لذا ، من خارج الصندوق ، ستتحدث فقط من خدمة
‫إلى أخرى باستخدام اسم المضيف.
‫إذا بدأت في استخدام مساحات الأسماء ، فسنستعرض
‫ذلك لاحقًا.
‫فكر في مساحات الأسماء كطريقة لتقسيم جميع الأجزاء
‫المختلفة للتطبيقات المختلفة إلى هذه المناطق
‫داخل نفس المجموعة ، والتي لن تتعارض مع بعضها البعض.
‫لا يمكنك إنشاء نفس المجموعة من الناحية الفنية
‫، أو نفس الخدمة ، أو نفس النشر ، بنفس الأسماء
‫، في نفس مساحة الاسم.
‫إذا قمت بإنشاء مساحات أسماء أخرى
‫، وهو ما يمكنك القيام به كلما تقدمت أكثر ، يمكنك
‫حينئذٍ تسمية نفس الأشياء في مساحات أسماء مختلفة
‫ولن تتعارض. يتضمن DNS.
‫في الواقع ، عندما تنظر إلى معيار اسم النطاق المؤهل
‫بالكامل هنا ، سترى أنه يحتوي على اسم المضيف ، الذي كنا نستخدمه
‫حتى الآن.
‫ثم اسم مساحة الاسم.
‫إذا كنت تريد كتابة هذا الاسم بالكامل ، فسيتعين عليك
‫تحديد مساحة الاسم.
‫بشكل افتراضي ، كنت تعمل بشكل افتراضي.
‫هذه هي مساحة الاسم الافتراضية للتطبيقات.
‫إذا قمت بإجراء أمر سريع في سطر الأوامر
‫الخاص بـ kubectl get namespace
‫، فسترى قائمة هنا.
‫أنا على Docker Desktop ، لذلك أحصل على واحد إضافي هناك يقول
‫Docker ، لذلك سيكون مجرد جزء من Docker Desktop
‫الذي يدير بعض خدمات Docker الخاصة التي تقوم ببعض السحر
‫الذي يوفره Docker في مجموعة Kubernetes.
‫الافتراضي
‫هو الذي يتم إغراقك فيه في مجموعة أساسية. ثم تكون العناصر الأخرى قياسية تخرج
‫من الصندوق مع Kubernetes.
‫من الواضح أن النظام الأول يدير مستوى التحكم.
‫هذا هو النظام هناك.
‫الجمهور ، نحن لا نستخدم الكثير حقًا.
‫إنه يحتوي على بضعة أشياء فقط.
‫إذن ، فإن عقد الإيجار هو عقد جديد في بيئات Kubernetes
‫الأحدث.
‫هذه موضوعات متقدمة حقًا لن تحتاجها
‫حقًا للبدء. يمكنك تشغيل مجموعاتك
‫دون العبث كثيرًا مع مساحات الأسماء
‫تلك. عادة ، ما ستتعامل معه
‫هو مساحة الاسم الافتراضية وكلما أصبحت أكبر
‫، من المحتمل أن تقوم بإنشاء مساحات أسماء متعددة
‫لتطبيقات مختلفة ربما تحمل نفس الاسم.
‫أو ربما ترغب في نشر نفس الشيء عدة مرات ، مع نفس أسماء الخدمة
‫، وأسماء حواجز التخزين ، وأسماء النشر ، ولا ترغب
‫في تعارضها ، لذلك ستنشئ مساحات أسماء مختلفة
‫لهؤلاء.
‫إنها تشبه إلى حد ما Swarm Stacks ، ولكن هناك فرق
‫كبير بين طريقة عمل مساحات الأسماء
‫وعمل المكدس لدرجة أنني لا أريدك حقًا أن تفكر
‫في أنها متماثلة تمامًا.
‫Namespaces هي في الحقيقة مجرد معلمة تنظيمية ، وهي
‫لا تتحكم ، خارج الصندوق ، في تقسيم الشبكات أو
‫أي شيء من هذا القبيل.
‫يصبح هذا أكثر تقدمًا. يمكنك القلق بشأن
‫هذه الأشياء لاحقًا. دعنا نعود إلى اسم المجال
‫المؤهل بالكامل هناك. الآن بعد أن عرفت اسم المضيف
‫وجزء مساحة الاسم ، ثم هو. svc للخدمة لأن هذا
‫ما نبحث عنه هنا.
‫تلك الكتلة. المحلي الذي تراه في النهاية
‫هو اسم DNS الافتراضي للخدمة المعطى لمجموعتك عند إنشائه
‫أو تدويره.
‫إذا كنت تستخدم شيئًا مثل kubeadm لبناء مجموعتك
‫، فيمكنك تغيير هذا الاسم قبل إنشاء المجموعة
‫الخاصة بك. هذا هو ، بشكل افتراضي.
‫ستعرف ما إذا كنت بحاجة إلى تغييره بناءً على ربما إنشاء
‫مجموعات Kubernetes متعددة ، أو إذا كان لديك
‫نوع من المتطلبات الخارجية لكيفية عثور تطبيقاتك
‫على بعضها البعض. مرة أخرى ، كل هذا DNS موجود
‫داخل مجموعتك فقط.
‫إنها ليست بعض خدمات DNS التي ستتمكن الخدمات الخارجية
‫من رؤيتها أو استخدامها ، إلا إذا كانوا يتحدثون إلى
‫Kubernetes API عن بُعد.