شبكات Kubernetes: دليل كامل لفهم نموذج الشبكة
نشرت: 2020-02-18تعد إدارة الحاويات جانبًا حيويًا من الشبكات. مع متطلبات حركة المرور المتغيرة اليوم ، زادت أهمية Kubernetes عشرة أضعاف. وإذا كنت مهتمًا بالتعرف على الشبكات ، فسيتعين عليك التعرف على Kubernetes أولاً. سيساعدك التعرف على Kubernetes في التعامل مع إدارة الحاويات بشكل فعال. Kubernetes هي أيضًا واحدة من أفضل أدوات DevOps في السوق لعام 2020.
لكن لا تقلق لأننا سنناقش الأمر نفسه في هذا الدليل التفصيلي. Kubernetes هي أداة لإدارة الحاويات ، وفي هذه المقالة ، ستتعرف على سبب استخدامها ، وما هي مكونات شبكتها ، وكيف تقوم بتوجيه حركة المرور.
تعلم هندسة البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.
دعنا نتعمق.
جدول المحتويات
ما هو Kubernetes؟
قبل أن نبدأ مناقشة الشبكات في Kubernetes ، يجب أن نأخذ في الاعتبار المفاهيم الأساسية لهذه الأداة. بهذه الطريقة ، لن تواجه أي ارتباك لاحقًا في المقالة ويكون لديك فهم أساسي لكل ما هو مذكور هنا.
Kubernetes هي أداة تنسيق حاوية مفتوحة المصدر. يساعدك في إدارة الحاويات ، والتي أصبحت أهم جانب من جوانب التواصل هذه الأيام. يحتوي Kubernetes على العديد من الوظائف ، بما في ذلك توسيع الحاويات ، ونشر الحاويات ، وإزالة الترسبات من الحاويات ، وما إلى ذلك.

بينما يساعد Docker المحترفين في إنشاء الحاويات ، يساعدهم Kubernetes في إدارتها. هذا هو السبب في أن كلاهما مهم للغاية. يدير Kubernetes نظامًا موزعًا عبر مجموعة. سيسمح لك فهم هيكلها وشبكاتها بتجنب الأخطاء وإدارة الحاويات دون أخطاء.
لماذا يتم استخدام Kubernetes؟
زادت متطلبات الشركات من الحاويات بشكل كبير في السنوات القليلة الماضية. ما لم تكن صغيرة جدًا ، لا يمكنهم الاعتماد على حاوية أو حاويتين. سيحتاجون إلى مجموعة كبيرة من الحاويات لموازنة الحمل. يمكن أن يكون المتطلب بالمئات للحفاظ على توافر عالي وتحقيق التوازن في حركة المرور.
عندما تزداد حركة المرور ، سيحتاجون إلى المزيد من الحاويات للتعامل مع الطلبات. وبالمثل ، عندما تكون حركة المرور أقل ، سيحتاجون إلى تقليص عدد الحاويات. قد تكون إدارة الحاويات وفقًا للطلب أمرًا صعبًا ، خاصة إذا قمت بذلك يدويًا.
يمكن أن يستغرق تنظيم الحاويات يدويًا الكثير من الوقت والموارد ، والتي كان من السهل إنفاقها في مكان آخر. أتمتة هذه المهمة تجعل الأمور أكثر بساطة. إذًا لا داعي للقلق بشأن تحجيم الحاويات وإزالة الترسبات منها. هذا ما يفعله Kubernetes. اقرأ كيفية إنشاء مشاريع DevOps للمبتدئين بمساعدة Kubernetes في مقالة أهم مشروعات DevOps للمبتدئين.
تقوم بأتمتة تنظيم وإدارة الحاويات. إنه شائع على نطاق واسع بسبب وظائفه. إنه أحد منتجات Google ، ويساعد أدائه المؤسسات بشكل كبير في أتمتة توسيع نطاق الحاويات.
مكونات Kubernetes
الآن بعد أن عرفت ما هو Kubernetes وما هي وظائفه ، يمكننا البدء في مناقشة مكوناته المتعددة. لا يمكنك فهم الشبكات في هذه الأداة إلا بعد التعرف على أجزائها المختلفة. ومع ذلك ، ليس هناك الكثير مما يدعو للقلق. هذا لأننا هنا للمساعدة. فيما يلي وصف موجز لمكوناته المختلفة. على الرغم من أن الوصف موجز ، إلا أنه يجب أن يكون كافيًا لإعطائك فكرة عامة.
القرون
تذكر الذرات في الكيمياء ، أصغر كائنات المادة المستقلة؟ حسنًا ، القرون هي ذرات Kubernetes. قرنة واحدة هي عبء عمل في كتلة. يمكن أن تحتوي على حاوية واحدة أو عدة حاويات مع التخزين. يحتوي كل Pod على عنوان IP فريد يعمل بمثابة هويته عندما يتفاعل مع المكونات الأخرى لـ Kubernetes. تمت جدولة جميع حاويات الكبسولة ووضعها داخل نفس الجهاز.
تحكم
يبني المتحكمون Kubernetes. يراقب المتحكمون حالة خادم API للتأكد من أن حالته الحالية تطابق الحالة التي حددتها. إذا تغيرت حالة خادم API لسبب ما ، فإنه يتفاعل وفقًا لذلك. تستخدم أجهزة التحكم حلقة لفحص حالات المجموعات ولمقارنتها بالحالات المطلوبة. يمكنه أيضًا أداء مهام لتغيير الحالة الحالية إلى الحالة الضرورية.
العقد
إذا كانت القرون هي الذرات ، فإن العقد هي تروس Kubernetes. يديرون الكتلة. الأجهزة الافتراضية هي عُقد يمكن الوصول إليها في مجموعات Kubernetes. يميل العديد من الأشخاص إلى استخدام كلمة "مضيف" بدلاً من "عقدة". لقد حاولنا استخدام مصطلح العقد باستمرار في هذه المقالة.
خادم API
خادم API هو المدخل إلى مخزن البيانات في Kubernetes. يتيح لك تحديد الحالة التي تريدها للمجموعات. سيتعين عليك إجراء مكالمات API إذا كنت تريد تغيير حالة مجموعة Kubernetes الخاصة بك ووصف حالتك المطلوبة.
نظرًا لأنك على دراية بمكونات شبكة Kubernetes ، يمكننا البدء بنموذج الشبكة الخاص بها وكيف يعمل.
شرح شبكات Kubernetes
تتبع شبكات Kubernetes نموذجًا محددًا يحتوي على القيود التالية:
- تتواصل البودات مع جميع البودات الأخرى بدون ترجمة عنوان الشبكة
- يمكن لـ Nods التواصل مع Pods بدون ترجمة عنوان الشبكة
- IP الخاص بجهاز الكمبيوتر الذي تراه القرون الأخرى هو نفس عنوان IP الذي تراه لنفسها
نظرًا لهذه القيود ، لا يوجد في Kubernetes سوى عدد قليل من أقسام الشبكات. هم انهم:
- نقل الحاويات إلى الحاويات
- جراب إلى جراب النقل
- قرنة لنقل الخدمة
- الإنترنت لخدمة النقل
من الحاوية إلى الحاوية
قد تعتقد أنه في الشبكات ، يتفاعل الجهاز الظاهري مع جهاز إيثرنت مباشرةً ، ولكن هناك ما هو أكثر من ذلك.
إذا كنت تستخدم Linux ، فستمنحك مساحة اسم الشبكة مكدس شبكات يحتوي على أجهزة الشبكة ومساراتها وقواعد جدار الحماية. ستتواصل كل عملية قيد التشغيل في Linux مع مساحة اسم الشبكة هذه.
يمتلك Pod مجموعة من الحاويات داخل مساحة اسم الشبكة. تحتوي هذه الحاويات على نفس مساحة المنفذ وعنوان IP الذي يتم تعيينه لها من خلال مساحة اسم الشبكة. تجد هذه الحاويات بعضها البعض من خلال المضيف المحلي لأنها تقع في نفس مساحة الاسم. إذا كانت تطبيقاتك داخل حجرة ، فيمكنها الوصول إلى وحدات التخزين المشتركة أيضًا.

جراب إلى جراب
تتواصل البودات مع بعضها البعض من خلال عناوين IP الخاصة بها. لكل Pod عنوان IP حقيقي ومميز في Kubernetes. أنت تعرف بالفعل ماهية السنفات ، لذلك لا نحتاج إلى لمس هذا الموضوع. نحن نعلم أن Kubernetes يستخدم عناوين IP لتسهيل الاتصال بين القرون ؛ دعونا نناقش كيف يفعل ذلك.
تتواصل البودات من خلال عقدها. لهذا السبب لفهم Pod to pod Communication ، وستحتاج إلى فهم التفاعل بين العقد.
- الاتصال بين العقدة
- الاتصالات داخل العقدة
سنناقش كل واحد منهم بالتفصيل:
الاتصال بين العقدة
عندما تقع العقد في حجرات مختلفة ، فإنها ستتواصل من خلال هذه الطريقة. يمكننا فهم طريقة الاتصال هذه من خلال مثال سهل. افترض أن هناك أربع شبكات جراب مختلفة ، وهي البود 1 والجراب 2 والجراب 3 وما إلى ذلك. توجد السدادات 1 و 2 في شبكة جذر Node 1 ، بينما تقع الجرابان 3 و 4 في الشبكة الثانية.
تحتاج إلى نقل حزمة من الجراب 1 إلى الجراب 4.
يجب أن تغادر الحزمة أولاً شبكة pod 1 وتنتقل إلى شبكة الجذر من خلال veth0. يمر عبر جسر Linux ، مما يساعده في العثور على وجهته. نظرًا لأن العقدة ليس لديها هدف داخل Pod الخاص بها ، يتم إرسالها مرة أخرى إلى الواجهة eth0. الآن يترك العقدة الأولى لجدول التوجيه. يقوم جدول التوجيه بتوجيه الحزمة إلى العقدة المطلوبة ، والتي تقع في pod4. تصل الحزمة أولاً إلى العقدة 2 ، ثم تصل إلى الجسر الذي يوجهها إلى وجهتها.
الاتصالات داخل العقدة
يحدث اتصال Intra Node عندما تقع العقد في نفس Pod. يمكننا شرح الاتصال داخل العقدة بنفس الطريقة التي شرحنا بها الاتصال بين العقدة. في هذه الحالات ، تنتقل الحزمة من أول قرص في eth0. يذهب إلى شبكة الجذر من خلال veth0. ثم يجب أن تمر على الجسر وبعد ذلك تذهب إلى عنوان IP المعين.
هذه هي الطريقة التي تتواصل بها البودات مع بعضها البعض في Kubernetes. دعنا ننتقل إلى القسم التالي.
قرنة للخدمة
لقد رأيت بالفعل في القسم السابق كيفية توجيه حركة المرور بين عناوين IP الخاصة بالقرص. ومع ذلك ، هناك مشكلة تتعلق بعناوين IP. يمكن أن تختفي عناوين IP الخاصة بالقرص وتعاود الظهور وفقًا لمقياس الحاويات. لذلك ، إذا تم تحجيم الحاويات ، سيزيد عدد pod IPs والعكس صحيح أيضًا.
تساعد الخدمات في إدارة هذا الوضع. فيما يلي شرح موجز للخدمات المتوفرة في Kubernetes ، حتى لا يكون لديك أي ارتباك.
ما هي الخدمات في Kubernetes؟
تعمل الخدمات في Kubernetes على تهيئة الوكلاء الذين يتعين عليهم نقل الطلبات إلى مجموعة من البودات. تحصل هذه البودات على حركة مرور ، ويتولى المحدد هذه المهمة. بعد إنشاء الخدمة ، تتلقى عنوان IP الذي يعالج طلباتها. هناك أنواع متعددة من الخدمات ، ويجب أن نناقشها قبل الانتقال إلى Pod إلى خدمة الاتصال.
يوجد إجمالي 4 أنواع من الخدمات في Kubernetes. هم انهم:
- ClusterIP
- NodePort
- LoadBalancer
- الاسم الخارجي
ClusterIP هو نوع الخدمة الافتراضي. في هذا النوع ، يمكن الوصول إلى الخدمة فقط في الكتلة. في NodePort ، تتعرض الخدمة لعنوان IP الخاص بكل عقدة. يقوم NodePort بالتوجيه إلى خدمة ClusterIP حيث يقوم النظام بإنشائها مسبقًا. بخلاف ClusterIP ، يمكنك الاتصال بهذه الخدمة خارج الكتلة.
يستخدم LoadBalancer موازن التحميل الخاص بالسحابة لعرض الخدمة على الشبكات الخارجية. يتم إنشاء NodePort و ClusterIP تلقائيًا بسبب ذلك ، وتنقله خدمة ExternalName لأنه يعكس سجل CNAME.
الآن بعد أن عرفت ما هي الخدمات وعدد أنواع الخدمة المتوفرة ، فلنناقش كيفية إجراء اتصال Pod to service.
كيف تعمل؟
في هذا السيناريو ، تترك الحزمة Pod خلال eth0. يذهب إلى الجسر عبر جهاز Ethernet حيث يتم نقله إلى المسار الافتراضي لـ eth0. ومع ذلك ، يجب أن يمر عبر iptables قبل أن يتم قبوله في eth0. تحدد iptables وجهة الحزمة باستخدام القواعد المحددة لها ، وترسل الحزمة إلى Pod المطلوب. بمجرد القيام بذلك ، تنتقل الحزمة إلى IP الحقيقي للحجرة بدلاً من IP الظاهري للخدمة.
خارجي للخدمة
كانت الطرق الثلاثة السابقة لتوجيه حركة المرور معنية بـ Kubernetes فقط. ولكن في الحالات الواقعية ، هناك احتمالات ، سيتعين عليك توصيل شبكة Kubernetes الخاصة بك بشبكة طرف ثالث لتوجيه حركة المرور. وهذا القسم هو نفسه تقريبا.
عند الاتصال بشبكة خارجية ، يمكن لـ Kubernetes أداء وظيفتين:
- قم بتوجيه حركة المرور من الإنترنت إلى شبكتها
- قم بتوجيه حركة المرور من شبكتها إلى الإنترنت
الأول يتطلب شبكة دخول ، والأخيرة تتطلب شبكة خروج. دعونا نلقي نظرة عليهم.
دخول
يعد توجيه حركة المرور الخاصة بك من شبكة عامة إلى نظام Kubernetes الخاص بك أمرًا صعبًا للغاية. يتطلب LoadBalancer وجهاز التحكم للتعامل مع الحزم. هذا مثال على كيفية عملها.
أولاً ، ستقوم بنشر خدمة ، وسيقوم موفر السحابة الخاص بك بإنشاء موازن تحميل جديد. سيوزع موازن التحميل حركة المرور عبر الأجهزة الافتراضية داخل نظام المجموعة الخاص بك باستخدام المنفذ المعين لخدمتك. هنا ، ينقل iptables حركة المرور التي يحصلون عليها من موازن التحميل إلى Pod المطلوب. سوف يستجيب Pod للعميل بعنوان IP الخاص به ، ويساعد conntrack في إعادة كتابة عناوين IP بالطريقة الصحيحة.
تستطيع موازنات تحميل الطبقة 7 الموجودة في الشبكة تقسيم حركة المرور الواردة وفقًا لعناوين URL والمسارات. هذا مفيد للغاية عندما تعمل مع شبكة Ingress.
الخروج
عندما تقوم بتوجيه حركة المرور من عقدة شبكة Kubernetes الخاصة بك إلى الإنترنت ، فإن ذلك يعتمد كثيرًا على تكوينات الشبكة الخاصة بك فيما يتعلق بكيفية عمل كل شيء. سنناقش مثالًا عامًا هنا للمس الموضوع.
تبدأ الحزمة من مساحة اسم Pod وتنتقل إلى مساحة اسم الجذر من خلال veth. ثم ينتقل إلى الجسر من حيث ينتقل إلى الخدمة الافتراضية لأن عنوان IP الذي يحتاج إلى الانتقال إليه لا يرتبط بالجسر. يمر عبر iptables أثناء الانتقال إلى مساحة اسم الجذر.

قراءة: المتطلبات المسبقة لـ DevOps: ليس الأمر كما تعتقد
تقبل بوابات الإنترنت الآن عناوين IP المتصلة بالأجهزة الافتراضية فقط. وجراب مصدر الجيب الخاص بنا غير متصل بجهاز افتراضي. لذا فإن iptables تقوم بعمل NAT المصدر وتغير مصدر الحزمة. الآن يصل إلى بوابة الإنترنت حيث يمر عبر NAT آخر ثم يدخل إلى الإنترنت العام (وجهته).
وهذا هو. أنت الآن تعرف كل شيء عن شبكات Kubernetes ومكوناتها المختلفة.
خاتمة
Kubernetes هي بلا شك واحدة من الأدوات الأساسية التي يجب أن تتعلمها إذا كنت مهتمًا بالشبكات. أولئك الذين ليسوا على دراية بهذا المجال لن يعرفوا مدى أهميته. يمكن أن تساعدك إدارة الحاويات وتوجيه حركة المرور وفقًا لمتطلبات المرور هذه بشكل كبير. لقد حاولنا أن نجعل هذا الدليل واضحًا قدر الإمكان لمساعدتك على فهم كل شيء.
إذا كنت ترغب في تعلم وإتقان Kubernetes و DevOps والمزيد ، فراجع برنامج IIIT-B & upGrad التنفيذي PG في تطوير البرمجيات - التخصص في تطوير المكدس الكامل.