‫Kubernetes هي أشياء كثيرة.
‫أريد بالتأكيد تفصيل بعض الهيكل الأساسي
‫وأجزاء من النظام قبل
‫أن نبدأ في تثبيت تطبيق على Kubernetes.
‫الأول هو Kubernetes نفسه.
‫هذا هو في الأساس ما أتحدث عنه.
‫النظام بأكمله.
‫إما إعداد خادم واحد أو خادم متعدد مع
‫جميع الأجزاء الموجودة معًا لتشغيل تطبيقاتك.
‫نختصر ذلك أحيانًا باسم K8s.
‫عادةً عندما أتحدث عن Kubernetes ، سأقول فقط Kubernetes
‫، ولكن غالبًا في الكتابة ، أو حتى في الوثائق
‫، سترى K8s ، وهي في الأساس نسخة قصيرة
‫ومختصرة من Kubernetes.
‫إذا
‫نظرت إليه بالفعل ، فإن الرقم 8 يعني الأحرف الثمانية بين الحرفين K و S.
‫لهذا السبب فعلوا ذلك. الحرف K ، ثمانية أحرف ، ثم S.
‫هذا هو اختصارهم.
‫في بعض الأحيان قد يسميها الناس Kube.
‫لكن ، هنا بشكل أساسي سنتحدث عن نفس الشيء عندما
‫نقول Kubernetes و K8s.
‫الآن kubectl هي أداة سطر الأوامر التي ستستخدمها
‫للتحدث إلى Kubernetes API.
‫الطريقة الرئيسية التي نتحدث بها مع Kubernetes هي من خلال واجهة برمجة التطبيقات الخاصة بها.
‫هناك العديد من الأدوات التي يمكنها القيام بذلك.
‫في الواقع ، هناك الكثير من الأدوات التي يمكنهم التحدث بها إلى API.
‫الشخص الذي يأتي رسميًا من المشروع والذي سنستخدمه
‫معظم الوقت هو kubectl.
‫الآن قد ترى هذا يُشار إليه في مقاطع فيديو أخرى
‫، أو محادثات ، مثل cube cuddle
‫، أو kube cuddle ، أو kube control ، وجميع أنواع
‫الأنواع الأخرى أو ربما kubectl ، لكن هذه كلها نفس الشيء.
‫إنهم في الأساس أشخاص مختلفون يقولون ذلك
‫بطريقة مختلفة. في الواقع ، قبل حوالي عام
‫تقريبًا أو نحو ذلك قرروا تسمية هذه الأداة رسميًا
‫kubectl في الوثائق.
‫لكن ، لا توجد طريقة خاطئة لقول ذلك.
‫تمامًا كما هو الحال مع Swarm ، حيث نطلق على العقد الخوادم
‫الموجودة داخل تلك المجموعة ، يشير Kubernetes أيضًا
‫إلى الأشياء كعقد أيضًا.
‫لذا ، فإن هذه المصطلحات هي نفسها على الأقل بين الاثنين.
‫Kubelet هي الحاوية التي ستشغل وكيلًا صغيرًا
‫صغيرًا على كل عقدة للسماح لتلك العقدة بالتحدث
‫مرة أخرى إلى مدير Kubernetes.
‫تذكر ، نظرًا لأن Docker كان لديه Swarm مدمج ، فإنه
‫لا يحتاج حقًا إلى وكيل منفصل.
‫تم دمج كل ذلك في محرك Docker.
‫الآن مع تشغيل Kubernetes فوق ذلك ، فإنه يحتاج إلى واجهة
‫برمجة تطبيقات المحرك الخاصة به والتي تتحدث إلى Docker المحلي ، أو
‫وقت التشغيل المحلي ، أيهما قد يكون.
‫ثم يتحدث احتياطيًا إلى مستوى التحكم ، أو الرئيسي
‫، المسؤول عن تشغيل مجموعة Kubernetes.
‫مستوى التحكم ، الذي يطلق عليه أحيانًا المستوى الرئيسي
‫، هو المسؤول عن الكتلة.
‫إذا كنت معتادًا على Swarm.
‫في Swarm ، كان لدينا المدير.
‫يمكن أن يكون هناك مدير واحد أو أكثر.
‫أردنا عددًا فرديًا من المديرين.
‫ثم كان هناك عمال يقومون بكل العمل.
‫إذا كنت تتذكر من Swarm ، فقد يكون المديرون أيضًا عمالًا
‫لأنهم يمكنهم أيضًا تشغيل الحاويات
‫بأنفسهم. لذلك يمكنك تقنيًا الحصول
‫على خادم واحد فقط. يمكن أن يكون لديك العديد من
‫الخوادم وتقسيم الدورين. الكثير من ذلك مشابه جدًا في Kubernetes.
‫لدينا فقط أسماء مختلفة قليلاً عن ذلك.
‫طائرة التحكم ، وهي أيضًا شيء
‫قمنا بتشغيله في Swarm ، هي الجزء الذي تعمل
‫فيه الخوادم على تشغيل جميع العناصر المسؤولة بشكل أساسي.
‫إنها أكثر من حاوية واحدة. إنها مجموعة من الحاويات.
‫يديرون أشياء فردية.
‫يأخذون مبدأ لينكس بفعل شيء واحد ويفعلونه
‫بشكل جيد ، ويأخذون ذلك ويقسمون
‫كل شيء. لذلك ، يقوم كل جزء من هذه
‫الأجزاء بشكل أساسي بعمل شيء واحد ويقوم به بشكل جيد ، وهو يبسط
‫التصميم من حيث التطوير.
‫ولكن عندما يتعين عليك إنشاء هذا وتشغيله
‫، فإنه يجعل إعداد الأشياء أصعب قليلاً
‫لأن هناك المزيد. يتضمن مستوى التحكم هذا الحاويات
‫التي ستقوم بتشغيل واجهة برمجة التطبيقات (API) ، المجدول ، فأنت في
‫الواقع بحاجة إلى خلفية قاعدة البيانات التي ستكون شيئًا
‫يسمى إلخ.
‫ثم لديك مدير تحكم.
‫ربما ستحتاج إلى شيء يسمى coreDNS للتعامل مع DNS
‫الخاص بك ، وما إلى ذلك.
‫لدينا الكثير من الأجزاء هنا ، لكن دعنا نضعها
‫في رسم تخطيطي ونرى ما إذا كان هذا مفيدًا.
‫سأقارنه بـ Swarm لأنك تعلمت ذلك بالفعل
‫في هذه الدورة.
‫إذا كان لديك جهاز واحد فقط ، مثلما سنفعل
‫خلال دقيقة واحدة للتعلم ، فإن كل الأشياء التي أشرت إليها
‫سابقًا ستكون جميعها في نفس الخادم.
‫سيكون هناك مجموعة من الحاويات قيد التشغيل. هذا ما ستراه على أشياء
‫مثل minikube و Docker Desktop عندما تقوم بتشغيل
‫عقدة Kubernetes واحدة.
‫في العالم الحقيقي عندما تدخل إلى الخوادم ، ستفكك
‫هذه الأشياء. ظننت أنني سأريكم
‫سريعًا حقًا ، على مخطط الشبكة ، كيف يمكن أن يبدو هذا
‫وأشرح الأجزاء المختلفة.
‫أولاً ، لنفترض أن لديك سيدًا.
‫في إعداد متعدد الماجستير ، سيكون لديك
‫ثلاثة من هؤلاء. تمامًا كما هو الحال مع Swarm ، فأنت
‫بحاجة إلى أرقام فردية لأنه يستخدم نفس بروتوكول RAFT للحفاظ على الإجماع تمامًا
‫كما فعل Swarm.
‫في التوثيق ، تُعرف هذه جميعها باسم Master.
‫ولكن ، يصبح الأمر محيرًا بعض الشيء عندما يكون لديك أكثر
‫من سيد واحد لأنه نفس الإعداد حيث يمكنك فقط الحصول على
‫واحد فقط يقوم بعمل كتابة وما إلى ذلك.
‫تُعرف هذه أيضًا باسم مستوى التحكم.
‫ستتعرف على هذا المصطلح من Swarm ، والذي كان
‫يشير على وجه التحديد في Swarm إلى البروتوكولات
‫عبر الشبكة التي كانت تسمح للماجستير والعقد بالتحدث
‫بأمان لإعطاء الأوامر.
‫لكن الأمر مختلف قليلاً هنا.
‫يتحدث مستوى التحكم عن العقد الرئيسية التي تتخذ
‫جميعها القرارات.
‫تمامًا كما هو الحال مع Swarm ، لدينا عقد عاملة.
‫في الوثائق ، سيشار إليها
‫حقًا كعقد. في بعض الأحيان ، ترى كلمة عامل مذكورة.
‫سنقوم باستدعاء هذه العقد هنا فقط لتكون متسقة.
‫مرة أخرى ، كما كان من قبل ، يمكن لكل هذه الأجهزة
‫تشغيل الحاويات ، لكنك عمومًا ستحتفظ
‫بتطبيقاتك في العقد وأنظمة إدارة Kubernetes
‫للسادة.
‫كل هذه تعمل أعلى Docker أو
‫بعض وقت تشغيل الحاوية الأخرى مثل containerd
‫أو crio.
‫داخل كل سيد ، سنحتاج إلى تشغيل عدة
‫حاويات للحفاظ على التحكم
‫في النظام. أول ذلك هو إلخ.
‫Etcd هو نظام تخزين موزع للقيم
‫الأساسية.
‫إنه مشابه جدًا لكيفية عمل Swarm مع
‫نظام خوارزمية RAFT.
‫إنه مشابه لـ etcd ، لكن etcd هو منتج منفصل وهو
‫شيء يمكنك تثبيته بدون Kubernetes فقط لتخزين
‫بيانات التكوين.
‫يستخدم نفس بروتوكول RAFT ، لذلك يتم تطبيق الكثير
‫من نفس القواعد. أنت بحاجة إلى أرقام فردية.
‫يمكنك أن تبدأ بواحد ، ولكن إذا كنت تريد تسامحًا حقيقيًا مع
‫الخطأ ، فأنت بحاجة إلى ثلاثة.
‫وهلم جرا. علاوة على ذلك ، ستحتاج
‫إلى تشغيل العديد من حاويات Kubernetes التي ستخزن
‫البيانات داخل etcd وتدير المجموعة.
‫الأول هو واجهة برمجة التطبيقات (API) ، والتي ستكون الطريقة
‫التي نتحدث بها إلى هذه المجموعة ونصدر الأوامر إليها.
‫التالي هو حاوية الجدولة ، والتي ستتحكم في كيفية
‫ومكان وضع الحاويات الخاصة بك على العقد في كائنات
‫تسمى القرون.
‫التالي هو مدير وحدة التحكم ، الذي ينظر في حالة المجموعة بأكملها
‫، وكل ما يتم تشغيله فيه ، ويستخدم واجهة برمجة
‫التطبيقات للقيام بذلك.
‫إنها تأخذ الأوامر التي تقدمها ، أو المواصفات
‫، وتحدد الفرق بين ما تطلبه أن تفعله وما
‫يحدث بالفعل.
‫إنها في الأساس حلقة ترى
‫النظام بأكمله وتكتشف كيفية جعل كل
‫ما يحدث حاليًا هو نفسه الذي طلبت
‫منه القيام به. ثم ستحتاج إلى شيء ما للتحكم في DNS
‫، وهو غير مدمج ، وبشكل افتراضي ، هذا هو coreDNS.
‫اعتمادًا على الوظائف الإضافية الأخرى التي تحصل عليها
‫لاحقًا ، مثل الشبكات أو التخزين والويب والميزات الأخرى
‫، سيكون لديك المزيد من الحاويات قيد التشغيل
‫هنا أيضًا.
‫في جميع العقد ، سيحتاجون إلى وكيل يعمل.
‫هذا معروف باسم kubelet.
‫لتبدأ ، ستحتاج إلى kube-proxy للتحكم
‫في الشبكة.
‫تمامًا كما هو الحال مع Docker ، سيتم تكرار
‫كل هذه لدورها. إذا كنت ستقوم بعمل ماجستير
‫متعدد ، فسيكون لديك كل تلك الحاويات التي تم إعدادها.
‫كل عقدة تقوم بتعيينها للعقد العاملة ستحتوي
‫أيضًا على حاويتين على الأقل هناك
‫للإدارة. تم تصميم Kubernetes لحل الكثير
‫من المشكلات بعدة طرق.
‫ستجد نفسك من المحتمل أن تضيف المزيد من الأشياء إلى الماجستير
‫، والمزيد من الأشياء إلى العقد ، مثل الشبكات.
‫على الجانب الرئيسي ، هناك الكثير من الأدوات الاختيارية الأخرى التي
‫يمكنك إضافتها إليها أيضًا.
‫دعنا نثبت هذا على نظامك المحلي للتعلم.