‫هناك نوعان من البيانات الوصفية في YAML هذا ربما
‫تكون قد رأيته في الأمثلة وفكرت فيهما ،
‫وتتساءل عن ماهية التسميات والتعليقات التوضيحية الموجودة
‫بالفعل.
‫ربما لم تدرك أهميتها.
‫إنها عنصر أساسي في Kubernetes وكيفية اتصال الأشياء
‫ببعضها البعض.
‫أكثر بكثير من سرب.
‫الأول هو التسميات. تندرج التسميات أسفل مفتاح
‫البيانات الوصفية في جذر الملف ، لذا فهي اختيارية
‫هناك. لست مضطرًا لوضعها ولكنها
‫تمثل قيمة أساسية ، أو قائمة من القيم الأساسية ، أسفل عنوان
‫التسميات.
‫هؤلاء موجودون لأسباب متعددة.
‫إنها ليست مطلوبة دائمًا ، ولكن قد تحتاج
‫إليها لتحديد الكائنات وتجميعها وحتى
‫تصفيتها لاحقًا.
‫يمكن أن يكون هذا أي شيء يصف الكائن
‫أو المورد.
‫يمكن أن يكون زوج قيمة مفتاح أن القيمة ببساطة صحيحة
‫أو خاطئة.
‫يمكن أن تكون المفاتيح ما تريد.
‫لا يمكن أن يكون هناك أكثر من مفتاح واحد في كل كائن
‫، لذلك لا يمكنك الحصول على مفتاحين متتاليين
‫في YAML لنفس الكائن الذي يحمل اسم مفتاح ، دعنا
‫نقول التطبيق ، صحيح. هذه تستخدم حقًا لوصف
‫الكائن. هذه الموارد التي نقوم بإنشائها
‫لها خصائص مختلفة.
‫ربما تكون البيئة مثل prod أو dev أو test.
‫ربما يكون الموقع مثل dmz أو الواجهة الخلفية
‫أو الواجهة الأمامية. ربما يكون اسم التطبيق ، أو ربما
‫يكون اسم العميل ، إذا كنت تستضيف مواقع عملاء أو شيء
‫من هذا القبيل. يمكن أن يكون ما تريده فقط
‫وليس هناك الكثير من المعايير.
‫تعطيك وثائق Kubernetes المدرجة في الموارد
‫هنا بعض الأمثلة ، لكن هذه مجرد أمثلة.
‫لا يوجد الكثير من المعايير في الصناعة.
‫الأمر متروك حقًا لفريقك وشركتك حول الكيفية
‫التي تريد بها وصف هذا الشيء.
‫لدينا أيضًا تعليقات توضيحية. إنهما نوع من الين واليانغ.
‫الملصقات بسيطة للغاية.
‫إنها محدودة الحجم للغاية وما هي الشخصيات التي
‫يمكنك وضعها فيها. من المفترض أن يصفوا المورد.
‫مع التعليقات التوضيحية ، هذا مخصص للبيانات الأكثر تعقيدًا
‫والبيانات متعددة القيم ، أشياء من هذا القبيل.
‫سترى عادةً التعليقات التوضيحية المستخدمة عند إضافة
‫أشياء مخصصة إلى Kubernetes يمكنها التحدث إلى Kubernetes
‫واستخراج البيانات منها.
‫ربما تكون التعليقات التوضيحية موجودة لتخزين بيانات التهيئة
‫، مثل الخوادم الوكيلة وعناصر الإدخال التي يمكنها في كثير من الأحيان
‫تخزين تكوينات مختلفة ، داخل تعليقات توضيحية مختلفة.
‫لذا ، فهذه ليست موجودة بالضرورة
‫لوصفها ولكن أكثر للتكوين.
‫دعنا نعود إلى التسميات لمدة دقيقة ، لأن هناك
‫الكثير مما هو مفتاح لفهم كيفية عمل كل هذه الأشياء
‫في Kubernetes.
‫أول شيء هو أنه يمكننا عمل مرشحات بسيطة عن طريق
‫قصر التسميات من سطر الأوامر.
‫يمكننا الحصول على كبسولات ونقول فقط ، أرني الكبسولات
‫التي تحمل هذا الملصق.
‫يمكنك حتى استخدام فاصلة لإضافة تصنيفات متعددة.
‫في الواقع ، هناك مستوى كامل من بناء الجملة لهذا الشيء
‫حيث يمكنك القيام بأنواع مختلفة من التركيبات ، مختلفة
‫أو مختلفة.
‫حقًا ، إنها واحدة من تلك الأشياء
‫التي لا أريد أن أعلمك كل ذلك لأنها ستكون مثل
‫تعلم Regex. إنه شيء لن تتعلمه حقًا بمجرد
‫تجربته مرة واحدة.
‫فقط عندما تحتاجها ستفهمها
‫حقًا. التوثيق من Kubernetes
‫رائع حقًا. لديهم روابط متعددة قمت بوضعها
‫في الموارد التي ستأخذك عبر مسار جميع الطرق المختلفة التي
‫قد تحتاج إلى تسمياتها.
‫بصراحة ، لا تحتاج حقًا إلى تعلم ذلك حتى
‫تعرف أنك بحاجة إليه لحل مشكلة ما.
‫يمكنك حتى استخدامه لتطبيق الأوامر.
‫إذا كان لديك مجموعة كاملة من العناصر في ملف YAML واحد
‫كبير وكنت تريد فقط تطبيق أجزاء معينة من ملف
‫YAML هذا.
‫لا أفعل هذا كثيرًا ، ولكن هناك حيث
‫يمكنك قصره على القول ، فقط قم بتطبيق التغييرات
‫أو المعلومات التي وضعتها في YAML لتسميات
‫معينة.
‫بالطبع ، مرة أخرى مع هذا ، يمكنك
‫وضع نفس الصيغة. يمكنك فقط الحصول على تسمية واحدة.
‫يمكنك وضع الفواصل ، ولديك عدة تصنيفات
‫وقيم هناك. الأمر متروك لك.
‫هناك شيء آخر تفعله الملصقات وهو مهم لكيفية
‫عمل Kubernetes.
‫يتعلق الأمر بوجود موارد معينة تتحدث
‫إلى موارد أخرى ، أو تتصل بها
‫، أو مرتبطة بها.
‫ومع ذلك تريد أن تقول ذلك. وخير مثال على ذلك هو أن الخدمات
‫تحتاج إلى معرفة البودات التي ترسل حركة المرور الخاصة
‫بها إليها. قد تتساءل كيف تعرف؟
‫أعني ، عندما تكتبه ، إذا كنت تقوم بأمر خدمة kubectl
‫وتوجهه إلى النشر ، فما الذي يستخدمه
‫بالضبط لتحديد هذا النشر؟
‫حسنًا ، في CLI ، قد تعتقد أنه يشير بالفعل
‫إلى كائن النشر.
‫لكن في الحقيقة ، تحتاج الخدمة إلى التحدث إلى البودات
‫، وليس النشر نفسه.
‫إنه يستخدم شيئًا يسمى محددات التسمية.
‫هذا شائع في الكثير من الموارد المختلفة التي تعد
‫مستويات أعلى من تجريد القرون.
‫بالنسبة لهم لربط البودات ، أو لمعرفة القرون الموجودة لديهم ،
‫فإنهم يستخدمون محددات الملصقات. سترى ذلك في YAML داخل
‫الريبو الذي كنت تستخدمه في المحاضرات
‫القليلة الماضية.
‫إذا نظرت في التطبيق. yml ، ستلاحظ أنه طوال الوقت
‫، كان لدينا بعض الأشياء التي لم
‫نتحدث عنها. الأول موجود في الجزء
‫العلوي مع الخدمة ، لدينا محددًا وفقًا للمواصفات.
‫يجب أن يكون هناك.
‫نحن نخبرها بالمفتاح والقيمة لملصق البودات التي
‫تحتاجها لتوجيه حركة المرور إليها.
‫هذه مجرد مباراة بسيطة.
‫يحتاج إلى إيجاد القرون مع ذلك.
‫ثم في الأسفل في النشر أدناه ، سترى أن المواصفات
‫الخاصة بنا لها محددها الخاص ، matchLabels
‫، app ، app-nginx.
‫ما يحدث هناك هو أن كلا هذين الكائنين يختار
‫القرون بناءً على تلك المطابقة.
‫هذا يعني أنه في القالب تحت المواصفات الخاصة
‫بنا ، حيث نقوم بصياغة القوالب ، يجب أن يكون هناك هذا
‫الملصق فيه حتى تتمكن هذه الموارد من العثور على كبسولاتها.
‫الشيء الجميل في الإصدارات الأحدث من Kubernetes
‫، هو أنه على الأقل مع نشر واحد فقط ، يجب أن تكون
‫متزامنة. ستفشل بالفعل في النشر
‫إذا وجدت أن تسميات تطابق المحدد لا تتطابق مع تسميات
‫البيانات الوصفية للقالب لأنه يتعين عليها ذلك
‫حتى تتمكن من نشر البودات والقدرة على
‫التحكم فيها.
‫إنه موجود لمنعك من القيام بذلك عن طريق الخطأ
‫بطريقة خاطئة. ستتوقع أن يكون لديك
‫هذه القطع هناك. في الإصدارات القديمة ، كانت هناك
‫طريقة يتم من خلالها إنشاؤها تلقائيًا ، افتراضيًا ، بحيث يمكنك
‫ترك الأشياء خارجها. لقد توقفوا عن فعل ذلك الآن
‫، وأجبروك على وضع هذا هناك. أعتقد أن هذا أمر
‫جيد ، لا سيما مدى أهمية محددات
‫التسميات هذه. من الناحية الفنية ، إذا عدت إلى Swarm
‫، فإن Swarm يعمل قليلاً من هذا خارج الصندوق حيث يحتوي على
‫ملصقات تتطابق مع الأشياء من الأكوام إلى الخدمات ، والمكدسات
‫إلى أحجامها ، وأشياء من هذا القبيل.
‫لا يمكننا حقًا التحكم فيه ، ولا نراه كثيرًا
‫في الواجهة. يتم ذلك نوعًا ما في الخلفية
‫بالنسبة لنا في Swarm.
‫لكنها أيضًا محدودة للغاية.
‫لا يمكنك تغيير الأشياء بسرعة.
‫لا يمكنك بالضرورة تخصيص تلك الإعدادات لتناسب إعدادات
‫فريدة حقًا.
‫هنا ، يمكن أن يكون لدينا حديث خدمة إلى عمليات
‫نشر متعددة إذا أردنا تغيير
‫تلك المحددات.
‫المحددات لا تتعلق فقط بربط الموارد معًا.
‫يتعلق الأمر أيضًا بالتحكم في المكان الذي يذهبون إليه.
‫في العقد ، يمكنك استخدام التسميات والمحددات للتحكم في المكان
‫الذي ينتقلون إليه.
‫يمكنك استخدام المزيد من التخصيص مع أشياء تسمى التلطيخ
‫والتسامح والتي تعتبر نوعًا من عكس ذلك حيث
‫تخبر العقد بأنها لا تستطيع القيام بأشياء معينة حتى يعرف
‫Kubernetes أين يتحكم بشكل أساسي في المكان
‫الذي تذهب إليه البودات.
‫تصبح هذه الأشياء مخصصة حقًا وتتقدم
‫بسرعة كبيرة. يمكن أن يؤدي القيام بها جميعًا معًا إلى
‫الحصول على القليل من الشعر والجنون.
‫أوصي بالتأكيد أن تأخذ الأمر معهم ببطء.
‫اجعل كل شيء بسيطًا خارج الصندوق.
‫تجنب العيوب والتسامح حتى تحتاج حقًا إلى
‫النظر فيها.
‫حسنا. دعونا ننظف هذا القسم بأكمله.
‫إذا كان لديك أي شيء يتم تشغيله في مساحة اسم افتراضية لمجموعتك
‫، وإذا قمت فقط بعمل kubectl لتحصل على كل شيء ، ورأيت
‫أشياء هناك خارج Kubernetes API نفسها ، فتابع وحذف جميع
‫هذه الموارد لأننا سننتقل .
‫لن نحتاج هؤلاء.