‫حسنا. تبدأ هذه المحاضرة حيث انتهت المحاضرة
‫الأخيرة. لذا ، إذا كنت تقفز
‫إلى هذا واحد وتخطيت آخر واحد ، فارجع
‫إلى ذلك لأنك ستحتاج إلى النشر الذي أنشأناه في ذلك
‫لبدء هذا.
‫عندما أحصل على kubectl كل شيء ، يجب
‫أن أرى هنا أن لدي عملية نشر واحدة تحتوي على مجموعة
‫متماثلة من خمسة.
‫سترى القرون الخمس.
‫ثم ستحصل على خدمة Kubernetes الافتراضية ، والتي
‫تكون موجودة دائمًا. ثم خدمة IP للكتلة
‫httpenv.
‫قد يكون لديك ، بالطبع ، عناوين IP مختلفة وأسماء
‫جراب مختلفة. هذا هو المكان الذي نحتاج أن نكون فيه.
‫لدينا هذا الانتشار.
‫لقد أنشأنا عنوان IP داخل الكتلة للآخرين للوصول
‫إليه بالاسم المألوف httpenv لأن هذا
‫هو اسم الخدمة.
‫لنقم بإنشاء واحد يتم عرضه خارجيًا
‫على IP المضيف. سيكون هذا ، إذا كنت ربما في
‫مركز بيانات أو في مكان ما لم يكن لديك فيه موازن
‫تحميل ، يمكنك التحكم في خدمة موازن التحميل ، والتي سنتحدث
‫عنها لمدة دقيقة.
‫أنت في الأساس ، في هذه الحالة ، تريد إجراء NodePort
‫حيث تحصل على منافذ في مكان ما في النطاق العالي لمجموعة
‫Kubernetes التي يمكنك استخدامها للتحدث
‫من الخارج إلى الداخل.
‫لذلك سيكون قادرًا على الوصول إليه من بعض الخدمات
‫الخارجية ، صحيح. لن يكون على المنفذ 80 افتراضيًا.
‫يُقصد من NodePorts أن تكون منافذ عالية ،
‫لذا فأنت عادةً تضع شيئًا أمام ذلك ، مثل موازن
‫التحميل الخارجي أو بعض الخدمات الآلية التي ستدير
‫ذلك نيابةً عنك. في هذه الحالة ، يمكنني القيام
‫بفضح kubectl مرة أخرى.
‫سيبدو مثل آخر واحد فعلناه.
‫نشر httpenv.
‫هذا هو ما نحتاج إلى كشفه.
‫سنقوم بوضع المنفذ 8888 مرة أخرى.
‫لكننا سنمنحه اسمًا جديدًا لأن لدينا
‫بالفعل اسمًا يسمى httpenv.
‫إذن ، هذا الذي سنسميه
‫httpenv-np بدون منفذ.
‫بهذه الطريقة ، ستعمل جنبًا إلى جنب مع مجموعة IP
‫واحد الموجودة بالفعل.
‫ثم سنقوم بتغيير النوع إلى NodePort.
‫ستلاحظ هذا النوع من NodePort ، لأنه النوع الافتراضي
‫، والذي يمكننا تحديده يدويًا إذا كنت تريد ذلك.
‫النوع الافتراضي هو IP للكتلة.
‫إذا عدت وحصلت على خدمات kubectl ، فسترى واحدة
‫جديدة هناك من النوع
‫NodePort.
‫دعنا نتحدث عن المنافذ على اليمين.
‫هذه المنافذ ، عندما يكون لديهم القولون في المنتصف
‫، تكون عكس ما تراه في Docker و Swarm.
‫المنفذ الموجود على اليسار ، في هذه الحالة
‫، هو المنفذ الموجود داخل الكتلة ، داخل الحاوية نفسها التي
‫يتم سردها.
‫ثم المنفذ الموجود على اليمين هو المنفذ الموجود
‫على عقدك المكشوفة للعالم الخارجي.
‫قد تتساءل من أين جاء المنفذ الموجود على اليمين.
‫هذا المنفذ من النطاق الافتراضي لمنافذ NodePorts التي
‫تم إعدادها مسبقًا داخل مجموعة الحاوية
‫الخاصة بك.
‫إنها مجموعة عالية. الأمل هنا هو أنه لا توجد صراعات
‫، صحيح. أنه لا يوجد شيء آخر على
‫نظامك ، افتراضيًا ، يعمل على تلك المنافذ.
‫لأنه غالبًا ما تكون المنافذ المنخفضة ، مثل 8888 ، شائعة بدرجة كافية بحيث يمكن استخدامها
‫بواسطة شيء آخر. ثم لا يمكن الوصول
‫إلى أي منافذ في النطاق المنخفض حقًا
‫إلا عن طريق الجذر. منافذ 1024 وأقل.
‫هناك بعض الأشياء التي يجب ملاحظتها هنا.
‫الأول هو أن ترى عنوان IP العنقودي.
‫على الرغم من أننا عندما أنشأنا خدمة NodePort
‫هذه ، لم نقول IP للكتلة.
‫قلنا NodePort.
‫هذه الخدمات مضافة.
‫ما يعنيه هذا هو أنه يبدأ بـ IP للكتلة ، ثم ينتقل
‫إلى NodePort ، ثم إلى خدمة موازن التحميل
‫الاختيارية. سيقوم كل واحد منهم بإنشاء الخدمات
‫أعلاه في هذه القائمة.
‫مما يعني أنه عندما أقوم بإنشاء NodePort ، فإنه يقوم بإنشاء
‫نقطة نهاية IP للكتلة بالنسبة لي لأن هذه هي الطريقة
‫التي يتم بها الاتصال. يأخذ الاتصال القادم إلى
‫هذا المنفذ على المنفذ العالي للعقدة ثم يعيد
‫توجيهه إلى عنوان IP للكتلة لتلك الخدمة.
‫بالطبع ، مثل معظم الأشياء في Kubernetes ، كل هذا قابل
‫للتغيير والتخصيص.
‫أحد الأشياء التي يمكنك تغييرها هو نطاق المنفذ.
‫واحد منهم هو أنه يمكنك تجنب IP العنقودية.
‫يمكنك القيام بالكثير من هذه الأشياء ، ولكن يمكنك القيام
‫بمعظمها فقط في YAML ، والتي سنصل إليها لاحقًا.
‫عندما تقوم بأشياء في سطر الأوامر مثل هذا ،
‫فإننا مقيدون بعدد الخيارات التي يمكننا استخدامها.
‫إذا تجاوزت ما تسمح به هذه الخيارات ، فستحتاج إلى
‫البدء في عمل YAML. سنتحدث عن ذلك لاحقًا
‫في الدورة. نعم. إذا كنت تستخدم نظام Linux ، فيمكن
‫الوصول إلى NodePort هذا على المضيف المحلي الآن.
‫لذلك ، يمكنك استخدام المضيف المحلي ، أو عنوان IP للمضيف نفسه
‫، لعزل هذا المنفذ. أي منفذ لديك.
‫من المحتمل ألا يكون نفس المنفذ الخاص بي منذ
‫32334 الخاص بي.
‫إذا كنت تستخدم Docker Desktop
‫، فستوفر طبقة ملائمة مع شيء
‫يسمى vpnkit والذي تم إنشاؤه للتو في Docker Desktop
‫حيث سيتم توصيل هذا بالمضيف المحلي على جهاز Windows أو Mac.
‫يمكنني الجلوس هنا على جهاز Mac الخاص بي والمضيف
‫المحلي cURL 32334.
‫أحصل على نفس الاستجابة كما لو أنني قمت بربط عنوان
‫IP للكتلة مباشرة. السبب في وجود هذا هنا على
‫Docker Desktop هو أنه لا يتعين عليك القفز
‫إلى تلك البودات كما فعلنا سابقًا حتى تتمكن
‫من الوصول إلى الخدمة. هذه طريقة واحدة لعرض خدمات Kubernetes
‫الخاصة بك على أجهزتك حتى تتمكن من اختبار الأشياء ، بشكل
‫صحيح. لذلك ، إذا كنت تقوم
‫بالتطوير أو الاختبار داخل Kubernetes ، فيمكنك حينئذٍ عمل
‫NodePort والانتقال إلى هذا المنفذ ، والذي سيكون عشوائيًا
‫قليلاً على مضيفك.
‫مرة أخرى ، يمكنك تحديد منفذ دقيق هناك ، ولكن عليك القيام
‫بذلك في YAML ، وهو ما سنفعله لاحقًا.
‫الخيار الآخر ، إذا كنت تستخدم Docker Desktop
‫، فهو يأتي مع خدمة موازن تحميل مضمنة.
‫تتذكرني تحدثت سابقًا عندما كنا نتحدث عن هذه الأنواع
‫الأربعة من الخدمات ، هو أن موازن التحميل لم يكن مدمجًا
‫، افتراضيًا ، والطريقة الوحيدة التي يمكنك استخدامها
‫كانت من خلال خدمة خارجية ، عادةً في خدمة سحابية
‫، حقا.
‫مع Amazon ، سيكون هذا هو ELBs و ALBs.
‫مع DigitalOcean ، سيكون ذلك مع موازين التحميل الخاصة بهم.
‫ستحتاج إلى إضافة هذا المكون الإضافي في Kubernetes الخاص بك
‫حتى يعمل مع موازنات التحميل الخارجية.
‫بشكل أساسي ، تتحدث واجهة برمجة تطبيقات kube إلى واجهة برمجة التطبيقات الخاصة بهم
‫للتحكم في موازن التحميل هذا.
‫إذا كنت تستخدم Docker Desktop ، فيمكنك تجربة هذا الأمر.
‫سنسميها httpenv-lb
‫لهذه الخدمة ، وسنقوم بتغيير النوع لتحميل الموازن.
‫إذا قمنا بعمل kubectl للحصول على الخدمة ، فسنرى ثلاثة
‫موازين تحميل لهذا النشر.
‫مرة أخرى ، إذا كنت تستخدم Docker Desktop
‫، فستتمكن من رؤية الثلاثة. إذا كنت تستخدم Linux ، أو تستخدم
‫Minikube ، أو شيء من هذا القبيل ، فسترى اثنين فقط.
‫كل موازن تحميل ، نظرًا لأنه يشبه من الناحية الفنية مكونًا
‫إضافيًا أو خدمة تابعة لجهة خارجية وهي عبارة عن واجهة برمجة
‫تطبيقات بعيدة ، ستحتوي جميع موازنات التحميل على ميزات مختلفة
‫وأشياء مدعومة. يمكنك نوعًا من إلقاء نظرة على وثائقهم
‫لمعرفة ما سيفعلونه.
‫في هذه الحالة ، مع Docker Desktop ، كل ما فعلناه
‫هو أن المنفذ 8888 كان جزءًا من Deployment
‫، وسيقوم المكون الإضافي لخدمة موازن
‫التحميل من Docker بنشره على
‫المنفذ 8888.
‫الشيء الجميل هنا هو أن هذه هي الطريقة الوحيدة
‫لجعل Kubernetes الخاص بك على منفذ معين خارج
‫المجموعة الافتراضية ، أليس كذلك.
‫لذلك ، عندما قمنا بعمل NodePort ، تم تعريفنا أو
‫تقييدنا لتلك المجموعة في النطاق 30000.
‫إذا
‫كنت تريد أن تفعل شيئًا كما تفعل مع Compose أو Swarm أو Docker
‫، يمكنك تشغيله محليًا حيث تريد فقط تشغيله على منفذ مثل 80
‫أو أيًا كان ، يمكنك الآن باستخدام Docker Desktop ، باستخدام
‫Kubernetes المدمج ، يمكنك قم بعمل موازن التحميل هذا واكتب فقط في هذا
‫المنفذ هناك ، وسيكون مستجيبًا هناك.
‫الآن على نظام التشغيل Mac أو Windows
‫، يمكنني كتابة cURL localhost 8888 واستعادة
‫هذا الرد. ستلاحظ وجود موازن
‫التحميل أنه لا يزال يحتوي على هذا المنفذ الآخر.
‫مرة أخرى ، هذا لأن النطاق 32 هناك ، بالنسبة
‫لي على الأقل ، هو المدمج في NodePort الذي يتم
‫إنشاؤه. من الناحية الفنية في
‫الخلفية ، تذكر أن هذه ثلاث طبقات مختلفة ، لذا
‫فإن موازن التحميل يقبل الحزمة الخاصة بي ، ثم يمررها
‫إلى NodePort ، ثم يقوم NodePort بتمريرها إلى
‫عنوان IP للكتلة. سيكون هناك دائمًا NodePort
‫معروضًا هناك بجانب الأربعة 8 موازن تحميل ،
‫على الرغم من أن هذا ليس المنفذ الذي يستخدمه
‫موازن التحميل على مضيفي المحلي.
‫قبل الذهاب إلى المحاضرة التالية ، دعنا ننظف
‫كل ما فعلناه للتو. لقد صنعنا الكثير من الاشياء
‫توضح لك هذه الأوامر أنه يمكنك استخدام أمر الحذف
‫مع كائنات متعددة في نفس الوقت.
‫لا يجب أن تكون كائنات ذات صلة.
‫في الواقع ، يمكنك فقط عمل قائمة كبيرة
‫منهم إذا أردت بأمر واحد.