كوبيرنيتيس
{{بطاقة برمجية}}

'''كوبيرنيتيس''' (عادة تكتب '''k8s''' <ref name=":2" />) نظام [[توزيع أوركسترالي (حوسبة)|تزامن]] [[محاكاة افتراضية بمستوى نظام التشغيل|حاويات]] [[برمجيات مفتوحة المصدر|مفتوح المصدر]] [[تشغيل ذاتي|لأتمتة]] نشر [[برمجيات تطبيقية|التطبيقات]]، وتوسيع '''نطاقها''' وإدارتها.<ref>{{استشهاد ويب
| مسار = https://github.com/kubernetes/kubernetes/
| عنوان = kubernetes/kubernetes
| موقع = GitHub
| لغة = en
| مسار أرشيف = https://web.archive.org/web/20170421035413/https://github.com/kubernetes/kubernetes
| تاريخ أرشيف = 2017-04-21
| تاريخ الوصول = 2017-03-28
|حالة المسار=live}}</ref> تم تصميمه في الأصل من قِبل جوجل، وتقوم الآن [[مؤسسة لينكس|بإدارته مؤسسة Cloud Native Computing Foundation]]. يهدف إلى توفير «نظام أساسي لأتمتة نشر حاويات التطبيقات وتوسيع نطاقها وتشغيلها عبر مجموعات المضيفين».<ref name=":2">{{استشهاد ويب
| مسار = https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
| عنوان = What is Kubernetes?
| موقع = Kubernetes
| تاريخ الوصول = 2017-03-31
| مسار أرشيف = https://web.archive.org/web/20190530141916/https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ | تاريخ أرشيف = 30 مايو 2019 }}</ref> يعمل مع مجموعة من أدوات الحاوية، بما في ذلك [[دوكر (برمجية)|Docker]].<ref>[https://kubernetes.io/blog/2018/10/10/kubernetes-v1.12-introducing-runtimeclass/ Kubernetes v1.12: Introducing RuntimeClass - Kubernetes<!-- عنوان مولد بالبوت -->] {{Webarchive|url=https://web.archive.org/web/20190331122008/https://kubernetes.io/blog/2018/10/10/kubernetes-v1.12-introducing-runtimeclass/ |date=31 مارس 2019}}</ref> العديد من الخدمات [[حوسبة سحابية|السحابية]] توفر [[المنصة كخدمة|منصة خدمية]] مبنية على كوبيرنيتيس أو [[البنية التحتية كخدمة|بنية تحتية كخدمة]] والتي تمكن من نشر كوبيرنيتيس كمنصة توفير خدمة. كما يوفر العديد من البائعين أيضًا توزيعات كوبيرنيتيس الخاصة بهم.
[[ملف:Kubernetes talk at Google Cloud Summit.jpg|تصغير|جوجل Container Engine يتحدث في جوجل Cloud Summit]]
تأسست كوبيرنيتيس ([[wiktionary:κυβερνήτης|κυβερνήτης]] ، اليونانية لـ «حاكم»، " helmsman " أو «كابتن») <ref name=":2" /> على يد جو بيدا وبريندان بيرنز وكريج ماكلوكي، <ref>{{استشهاد ويب
| مسار = https://www.wired.com/2015/06/google-kubernetes-says-future-cloud-computing/
| عنوان = Google Made Its Secret Blueprint Public to Boost Its Cloud
| لغة = en-US
| مسار أرشيف = https://web.archive.org/web/20160701040235/http://www.wired.com/2015/06/google-kubernetes-says-future-cloud-computing/
| تاريخ أرشيف = 2016-07-01
| تاريخ الوصول = 2016-06-27
|حالة المسار=live}}</ref> الذين انضموا بسرعة إلى المهندسين الآخرين في جوجل بما في ذلك بريان غرانت وتيم هوكين، وأعلن لأول مرة من قبل جوجل في منتصف عام 2014.<ref>{{استشهاد ويب
| مسار = https://www.wired.com/2014/06/google-kubernetes/
| عنوان = Google Open Sources Its Secret Weapon in Cloud Computing
| موقع = Wired
| مسار أرشيف = https://web.archive.org/web/20150910171929/http://www.wired.com/2014/06/google-kubernetes
| تاريخ أرشيف = 10 September 2015
| تاريخ الوصول = 24 September 2015
|حالة المسار=live}}</ref> يتأثر تطويره وتصميمه بشدة بنظام Borg من جوجل، <ref name="borg_paper">{{استشهاد بدورية محكمة|الأخير=Abhishek Verma|الأخير2=Luis Pedrosa|الأخير3=Madhukar R. Korupolu|الأخير4=David Oppenheimer|الأخير5=Eric Tune|الأخير6=John Wilkes|عنوان=Large-scale cluster management at Google with Borg|صحيفة=Proceedings of the European Conference on Computer Systems (EuroSys)|تاريخ=April 21–24, 2015|مسار=https://research.google/pubs/pub43438/|مسار أرشيف=https://web.archive.org/web/20170727090712/https://research.google.com/pubs/pub43438.html|تاريخ أرشيف=2017-07-27|حالة المسار=live}}</ref><ref>{{استشهاد ويب
| مسار = https://queue.acm.org/detail.cfm?id=2898444
| عنوان = Borg, Omega, and Kubernetes - ACM Queue
| موقع = queue.acm.org
| مسار أرشيف = https://web.archive.org/web/20160709023750/http://queue.acm.org/detail.cfm?id=2898444
| تاريخ أرشيف = 2016-07-09
| تاريخ الوصول = 2016-06-27
|حالة المسار=live}}</ref> والعديد من كبار المساهمين في المشروع الذين سبق لهم العمل في Borg. كان الاسم الأصلي لـ كوبيرنيتيس في جوجل هو Project Seven ، في إشارة إلى شخصية [[ستار تريك|Star Trek]] Seven of Nine التي تعد Borg «صديقة».<ref>{{استشهاد بخبر
| مسار = https://www.eweek.com/cloud/early-stage-startup-heptio-aims-to-make-kubernetes-friendly
| عنوان = Early Stage Startup Heptio Aims to Make Kubernetes Friendly
| تاريخ الوصول = 2016-12-06
|مسار أرشيف= https://web.archive.org/web/20230718053920/https://www.eweek.com/cloud/early-stage-startup-heptio-aims-to-make-kubernetes-friendly/|تاريخ أرشيف=2023-07-18|حالة المسار=live}}</ref> المتحدثون السبعة على عجلة شعار كوبيرنيتيس هم إشارة إلى هذا الاسم الرمزي. تمت كتابة مشروع Borg الأصلي بالكامل في C ++ <ref name="borg_paper" /> ، لكن نظام كوبيرنيتيس المعاد كتابته تم تطبيقه في [[غو (لغة برمجة)|Go]] .

تم إصدار كوبيرنيتيس v1.0 في 21 يوليو 2015.<ref>{{استشهاد ويب
| مسار = https://techcrunch.com/2015/07/21/as-kubernetes-hits-1-0-google-donates-technology-to-newly-formed-cloud-native-computing-foundation-with-ibm-intel-twitter-and-others/
| عنوان = As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation
| موقع = TechCrunch
| مسار أرشيف = https://web.archive.org/web/20150923060338/http://techcrunch.com/2015/07/21/as-kubernetes-hits-1-0-google-donates-technology-to-newly-formed-cloud-native-computing-foundation-with-ibm-intel-twitter-and-others/
| تاريخ أرشيف = 23 September 2015
| تاريخ الوصول = 24 September 2015
|حالة المسار=live}}</ref> إلى جانب إصدار كوبيرنيتيس v1.0، دخلت جوجل في شراكة مع [[مؤسسة لينكس|Linux Foundation]] لتشكيل [[مؤسسة لينكس|Cloud Native Computing Foundation]] (CNCF) <ref>{{استشهاد ويب
| مسار = https://cncf.io/
| عنوان = Cloud Native Computing Foundation
| مسار أرشيف = https://web.archive.org/web/20170703085502/https://www.cncf.io/
| تاريخ أرشيف = 2017-07-03
|حالة المسار=live}}</ref> وعرضت كوبيرنيتيس كتقنية أساسية. في 6 مارس، 2018، وصل كوبيرنيتيس Project إلى المركز التاسع في الدعاوى في جيثب، والمركز الثاني في المؤلفين وقضايا [[نواة لينكس]].<ref>{{استشهاد ويب
| مسار = https://www.cncf.io/blog/2018/03/06/kubernetes-first-cncf-project-graduate/
| عنوان = Kubernetes Is First CNCF Project To Graduate
| موقع = [[مؤسسة لينكس]]
| لغة = en
| صيغة = html
| مسار أرشيف = https://web.archive.org/web/20181029081848/https://www.cncf.io/blog/2018/03/06/kubernetes-first-cncf-project-graduate/
| تاريخ أرشيف = 29 October 2018
| تاريخ الوصول = 3 December 2018
| اقتباس = Compared to the 1.5 million projects on GitHub, Kubernetes is No. 9 for commits and No. 2 for authors/issues, second only to Linux.
| الأخير = Conway
| الأول = Sarah
|حالة المسار=live}}</ref>

== كائنات كوبيرنيتيس ==

يعرّف كوبيرنيتيس مجموعة من الكتل البرمجية الإنشائية («البدائية»)، والتي توفر مجتمعة الآليات التي تنشر وتحافظ على نطاق التطبيقات على أساس وحدة المعالجة المركزية والذاكرة <ref>{{استشهاد ويب
| مسار = https://blog.powerupcloud.com/autoscaling-based-on-cpu-memory-in-kubernetes-part-ii-fe2e495bddd4
| عنوان = Autoscaling based on CPU/Memory in Kubernetes—Part II
| تاريخ = 13 April 2017
| موقع = Powerupcloud Tech Blog
| ناشر = Medium
| تاريخ الوصول = 27 December 2018
| الأخير = Sharma
| الأول = Priyanka
|مسار أرشيف= https://web.archive.org/web/20191017165844/https://blog.powerupcloud.com/autoscaling-based-on-cpu-memory-in-kubernetes-part-ii-fe2e495bddd4|تاريخ أرشيف=2019-10-17}}</ref> أو المقاييس المخصصة.<ref>{{استشهاد ويب
| مسار = https://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/
| عنوان = Configure Kubernetes Autoscaling With Custom Metrics
| تاريخ = 15 November 2018
| موقع = Bitnami
| ناشر = BitRock
| تاريخ الوصول = 27 December 2018
| مسار أرشيف = https://web.archive.org/web/20190327101233/https://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/ | تاريخ أرشيف = 27 مارس 2019 |حالة المسار=dead}}</ref> كوبيرنيتيس مقترن بشكل فضفاض وقابل للامتداد لتلبية أعباء العمل المختلفة. يتم توفير هذه القابلية للتوسعة في جزء كبير منها بواسطة كوبيرنيتيس API ، والذي يستخدم من قبل المكونات الداخلية وكذلك الامتدادات والحاويات التي تعمل على كوبيرنيتيس.<ref name="do-intro">{{استشهاد ويب
| مسار = https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes
| عنوان = An Introduction to Kubernetes
| موقع = DigitalOcean
| مسار أرشيف = https://web.archive.org/web/20151001183617/https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes
| تاريخ أرشيف = 1 October 2015
| تاريخ الوصول = 24 September 2015
|حالة المسار=live}}</ref> يمارس النظام الأساسي سيطرته على موارد الحوسبة والتخزين عن طريق تحديد الموارد على أنها كائنات، والتي يمكن إدارتها على هذا النحو. الكائنات الرئيسية هي:

=== القرون ===

وحدة الجدولة الأساسية في كوبيرنيتيس هي ''جراب'' .<ref>[https://kubernetes.io/docs/concepts/workloads/pods/ Pods - Kubernetes<!-- عنوان مولد بالبوت -->] {{Webarchive|url=https://web.archive.org/web/20190508114418/https://kubernetes.io/docs/concepts/workloads/pods/pod/ |date=08 مايو 2019}}</ref> ويضيف مستوى أعلى من التجريد من خلال تجميع المكونات في حاويات. يتكون الجراب من حاوية واحدة أو أكثر مضمونة أن تكون موجودة في الجهاز المضيف ويمكنها مشاركة الموارد.<ref name="do-intro" />

يتم تعيين ''[[عنوان بروتوكول الإنترنت|عنوان]] Pod Pod'' فريد لكل كتلة في كوبيرنيتيس داخل المجموعة، مما يسمح للتطبيقات باستخدام المنافذ دون التعرض لخطر التعارض.<ref name="kubernetes-101-networking">{{استشهاد ويب
| مسار = http://www.dasblinkenlichten.com/kubernetes-101-networking/
| عنوان = Kubernetes 101 – Networking
| تاريخ = 2015-02-11
| موقع = Das Blinken Lichten
| مسار أرشيف = https://web.archive.org/web/20151025035709/http://www.dasblinkenlichten.com/kubernetes-101-networking/
| تاريخ أرشيف = 2015-10-25
| تاريخ الوصول = 2015-11-02
| الأخير = Langemak
| الأول = Jon
|حالة المسار=live}}</ref> داخل الحاوية، يمكن لجميع الحاويات أن تشير إلى بعضها البعض على المضيف المحلي، ولكن الحاوية داخل الحافظة لا تملك أي وسيلة للتعامل مباشرة مع حاوية أخرى داخل حافظة أخرى؛ لذلك، يجب عليه استخدام عنوان IP Pod. يجب على مطور التطبيق ألا يستخدم عنوان بروتوكول الإنترنت (Pod IP) أبدًا للإشارة إلى / استدعاء قدرة في جراب آخر، لأن عناوين بروتوكول الإنترنت (بروتوكول الإنترنت) هي سريعة الزوال - قد يتم تعيين جراب معين يشيرون إليه إلى عنوان IP آخر لجهاز iPod عند إعادة التشغيل. بدلاً من ذلك، يجب عليهم استخدام إشارة إلى الخدمة، التي تحتوي على إشارة إلى جراب الهدف على عنوان IP Pod.

يمكن للقرنة تحديد وحدة تخزين، مثل دليل القرص المحلي أو قرص الشبكة، وتعريضها للحاويات الموجودة في الجراب.<ref name="kubernetes-for-developers">{{استشهاد ويب
| مسار = https://blog.fabric8.io/kubernetes-for-developers-2a9c7202fcd3?gi=a891b048d5b4#.b6u76jxar
| عنوان = Kubernetes for Developers
| تاريخ = 2015-05-21
| موقع = [[ميديام|ميديوم]]
| مسار أرشيف = https://web.archive.org/web/20150907030556/https://medium.com/fabric8-io/kubernetes-for-developers-2a9c7202fcd3#.b6u76jxar
| تاريخ أرشيف = 2015-09-07
| تاريخ الوصول = 2015-11-02
| الأخير = Strachan
| الأول = James
|حالة المسار=live}}</ref> يمكن إدارة السنفات يدويًا من خلال كوبيرنيتيس [[واجهة برمجة التطبيقات|API]] ، أو يمكن تفويض إدارتها إلى وحدة تحكم.<ref name="do-intro" /> تعد هذه المجلدات أيضًا أساسًا لميزات كوبيرنيتيس الخاصة بـ ConfigMaps (لتوفير الوصول إلى التكوين من خلال نظام الملفات المرئي للحاوية) والأسرار (لتوفير الوصول إلى بيانات الاعتماد اللازمة للوصول إلى الموارد البعيدة بشكل آمن، من خلال توفير بيانات الاعتماد هذه على نظام الملفات المرئي فقط إلى الحاويات المصرح بها).

=== خدمات ===

[[ملف:Pod-networking.png|تصغير|700x700بك|Simplified view showing how Services interact with Pod networking in a كوبيرنيتيس cluster]]

خدمة كوبيرنيتيس هي مجموعة من القرون التي تعمل معًا، مثل طبقة واحدة من تطبيق [[عمارة متعددة الطبقات|متعدد المستويات]]. يتم تحديد مجموعة القرون التي تشكل خدمة بواسطة محدد التسمية.<ref name="do-intro" /> يوفر كوبيرنيتيس وضعين لاكتشاف الخدمة، باستخدام المتغيرات البيئية أو استخدام كوبيرنيتيس DNS.<ref>[https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services Services - Kubernetes<!-- عنوان مولد بالبوت -->] {{Webarchive|url=https://web.archive.org/web/20190508113526/https://kubernetes.io/docs/concepts/services-networking/service/ |date=08 مايو 2019}}</ref> يعرّف اكتشاف الخدمة عنوان IP ثابتًا [[نظام أسماء النطاقات|واسم DNS]] للخدمة، ويقوم بتحميل أرصدة الحركة بطريقة متقاربة إلى اتصالات الشبكة لعنوان IP هذا بين القرون التي تتطابق مع المحدد (حتى عندما تتسبب الأعطال في انتقال القرون من آلة إلى أخرى).<ref name="kubernetes-101-networking" /> بشكل افتراضي، يتم الكشف عن الخدمة داخل مجموعة (على سبيل المثال، قد يتم تجميع قرون [[جهة البرنامج|النهاية الخلفية]] في خدمة، مع وجود طلبات من قرون الواجهة الأمامية متوازنة من بينها)، ولكن يمكن أيضًا كشف خدمة خارج كتلة (مثل للعملاء للوصول إلى القرون الواجهة الأمامية).<ref name="kubernetes-101-external-access">{{استشهاد ويب
| مسار = http://www.dasblinkenlichten.com/kubernetes-101-external-access-into-the-cluster/
| عنوان = Kubernetes 101 – External Access Into The Cluster
| تاريخ = 2015-02-15
| موقع = Das Blinken Lichten
| مسار أرشيف = https://web.archive.org/web/20151026035212/http://www.dasblinkenlichten.com/kubernetes-101-external-access-into-the-cluster/
| تاريخ أرشيف = 2015-10-26
| تاريخ الوصول = 2015-11-02
| الأخير = Langemak
| الأول = Jon
|حالة المسار=live}}</ref>

=== أحجام ===

توفر أنظمة الملفات الموجودة في حاوية كوبيرنيتيس تخزينًا مؤقتًا بشكل افتراضي. هذا يعني أن إعادة تشغيل الحاوية ستؤدي إلى مسح أي بيانات على هذه الحاويات، وبالتالي فإن هذا النوع من التخزين يحد بشكل كبير من أي شيء باستثناء التطبيقات البسيطة. توفر وحدة تخزين كوبيرنيتيس تخزينًا ثابتًا طوال فترة تشغيل الجهاز نفسه. يمكن أيضًا استخدام وحدة التخزين هذه كمساحة مشتركة على القرص للحاويات الموجودة داخل الحافظة. يتم تثبيت وحدات التخزين في نقاط تحميل محددة داخل الحاوية، والتي يتم تعريفها من خلال تكوين pod ، ولا يمكن تركيبها على وحدات تخزين أخرى أو ارتباط بوحدات تخزين أخرى. يمكن تركيب نفس وحدة التخزين في نقاط مختلفة في شجرة نظام الملفات بواسطة حاويات مختلفة.

=== مساحات ===

يوفر كوبيرنيتيس تقسيم الموارد التي يديرها إلى مجموعات غير متداخلة تسمى مساحات الأسماء. وهي مخصصة للاستخدام في البيئات التي ينتشر فيها العديد من المستخدمين عبر فرق أو مشاريع متعددة أو حتى تفصل بين البيئات مثل التطوير والاختبار والإنتاج.

== إدارة كائنات كوبيرنيتيس ==

يوفر كوبيرنيتيس بعض الآليات التي تسمح للمرء بإدارة كائناته أو تحديدها أو معالجتها.

=== التسميات والمحددات ===

يُمكّن كوبيرنيتيس العملاء (المستخدمين أو المكونات الداخلية) من إرفاق أزواج قيمة المفتاح تسمى «ملصقات» إلى أي كائن API في النظام، مثل القرون والعقد. في المقابل، «محددات التسمية» عبارة عن استعلامات مقابل التصنيفات التي تعمل على حل الكائنات المتطابقة.<ref name="do-intro" /> عندما يتم تعريف الخدمة، يمكن للمرء تحديد محددات الملصقات التي سيتم استخدامها من قبل جهاز توجيه / موازن التحميل لتحديد حالات pod التي سيتم توجيه حركة المرور إليها. وبالتالي، يمكن ببساطة تغيير بطاقات العنونة أو تغيير محددات الملصقات الموجودة على الخدمة للتحكم في أي من الرموز تحصل على حركة المرور وأيها لا يمكن استخدامها والتي يمكن استخدامها لدعم أنماط النشر المختلفة مثل عمليات النشر ذات اللون الأزرق والأخضر أو اختبار AB . توفر هذه القدرة على التحكم الديناميكي في كيفية استخدام الخدمات لموارد التنفيذ اقترانًا فضفاضًا داخل البنية التحتية.

على سبيل المثال، إذا كانت القرون الخاصة بالتطبيق تحتوي على تسميات <code>tier</code> نظام (مع قيم مثل <code>front-end</code> <code>back-end</code> ، على سبيل المثال) و <code>release_track</code> (مع قيم مثل <code>canary</code> <code>production</code> على سبيل المثال)، ثم عملية على الكل يمكن للعقد <code>back-end</code> <code>canary</code> استخدام محدد التسمية، مثل:<ref name="redhat-docker-and-kubernetes-training-labels-examples">{{استشهاد ويب
| مسار = http://christianposta.com/slides/docker/generated/day2.html#/label-examples
| عنوان = Intro: Docker and Kubernetes training - Day 2
| تاريخ = 2015-10-20
| ناشر = [[ريد هات]]
| مسار أرشيف = https://web.archive.org/web/20151029210659/http://christianposta.com/slides/docker/generated/day2.html#/label-examples
| تاريخ أرشيف = 2015-10-29
| تاريخ الوصول = 2015-11-02
|حالة المسار=dead}}</ref> <blockquote><code>tier=back-end AND release_track=canary</code></blockquote>

=== محددات المجال ===

تمامًا مثل التسميات، يتيح لك محددات الحقل أيضًا تحديد موارد كوبيرنيتيس. بخلاف التصنيفات، يعتمد التحديد على قيم السمة الملازمة للمورد الذي يتم تحديده، بدلاً من التصنيف الذي يحدده المستخدم. <code>metadata.name</code> و <code>metadata.namespace</code> هما محددات الحقول التي ستكون موجودة على جميع كائنات كوبيرنيتيس. تعتمد المحددات الأخرى التي يمكن استخدامها على نوع الكائن / المورد.

== هندسة ==

[[ملف:Kubernetes.png|تصغير|660x660بك|كوبيرنيتيس architecture diagram]]

يتبع كوبيرنيتيس البنية [[تابع ومتبوع|الأساسية / النسخة المتماثلة]]. يمكن تقسيم مكونات كوبيرنيتيس إلى تلك التي تدير [[عقدة (شبكات)|عقدة]] فردية وتلك التي تعد جزءًا من مستوى التحكم.<ref name="do-intro" /><ref name=":0">{{استشهاد ويب
| مسار = https://docs.okd.io/latest/architecture/infrastructure_components/kubernetes_infrastructure.html
| عنوان = Kubernetes Infrastructure
| موقع = OpenShift Community Documentation
| ناشر = OpenShift
| مسار أرشيف = https://web.archive.org/web/20150706121423/https://docs.openshift.org/latest/architecture/infrastructure_components/kubernetes_infrastructure.html
| تاريخ أرشيف = 6 July 2015
| تاريخ الوصول = 24 September 2015
|حالة المسار=live}}</ref>

=== طائرة التحكم كوبيرنيتيس (الابتدائي) ===

كوبيرنيتيس الأساسي هو وحدة التحكم الرئيسية في المجموعة، وإدارة عبء العمل وتوجيه الاتصالات عبر النظام. تتكون طائرة التحكم كوبيرنيتيس من مكونات مختلفة، كل عملية خاصة بها، يمكن تشغيلها على عقدة رئيسية واحدة أو على عدة انتخابات تمهيدية تدعم مجموعات توفر عالية.<ref name=":0" /> المكونات المختلفة لطائرة التحكم كوبيرنيتيس هي كما يلي:

* etcd: etcd <ref>[[كونتينر لينكس]]</ref> عبارة عن مخزن بيانات مستمر وخفيف الوزن وموزع وذات قيمة كبيرة تم تطويره بواسطة CoreOS ويقوم بتخزين بيانات التكوين الخاصة بالكتلة بشكل موثوق، وهو ما يمثل الحالة الكلية للمجموعة في أي نقطة زمنية محددة. تمامًا مثل Apache ZooKeeper ، etcd هو نظام يدعم الاتساق على التوفر في حالة وجود قسم للشبكة (انظر نظرية CAP). هذا الاتساق أمر بالغ الأهمية لجدولة وخدمات التشغيل بشكل صحيح. يستخدم كوبيرنيتيس API Server واجهة برمجة التطبيقات الخاصة بمراقبة etcd لمراقبة الكتلة وطرح تغييرات التكوين المهمة أو ببساطة استعادة أي اختلافات في حالة الكتلة، والعودة إلى ما تم إعلانه من قبل الناشر. على سبيل المثال، إذا حدد الناشر أن هناك ثلاث حالات لقرنة معينة يجب تشغيلها، يتم تخزين هذه الحقيقة في etcd. إذا تبين أن حالتين فقط قيد التشغيل، سيتم الكشف عن هذه الدلتا مقارنة ببيانات الخ، وسوف تستخدم كوبيرنيتيس هذا لجدولة إنشاء مثيل إضافي من هذا الملف.<ref name=":0" />
* خادم API: يعد خادم API مكونًا رئيسيًا ويخدم [[واجهة برمجة التطبيقات|واجهة برمجة تطبيقات]] كوبيرنيتيس باستخدام [[جسون|JSON]] عبر [[بروتوكول نقل النص الفائق|HTTP]] ، والذي يوفر كلاً من الواجهة الداخلية والخارجية لـ كوبيرنيتيس.<ref name="do-intro" /><ref name=":1">{{استشهاد ويب
| مسار = http://kamalmarhubi.com/blog/2015/09/06/kubernetes-from-the-ground-up-the-api-server/
| عنوان = Kubernetes from the ground up: API server
| تاريخ = 2015-09-26
| ناشر = kamalmarhubi.com
| مسار أرشيف = https://web.archive.org/web/20151029131948/http://kamalmarhubi.com/blog/2015/09/06/kubernetes-from-the-ground-up-the-api-server/
| تاريخ أرشيف = 2015-10-29
| تاريخ الوصول = 2015-11-02
| الأخير = Marhubi
| الأول = Kamal
|حالة المسار=live}}</ref> يقوم خادم API بمعالجة والتحقق من طلبات [[رست (إنترنت)|REST]] وتحديث حالة كائنات [[واجهة برمجة التطبيقات|API]] في [[etcd]] ، وبالتالي السماح للعملاء بتكوين عبء العمل والحاويات عبر عقد Worker.<ref>{{استشهاد ويب
| مسار = https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes
| عنوان = An Introduction to Kubernetes
| تاريخ = 2 May 2018
| موقع = [[ديجيتال أوشن]]
| لغة = en
| مسار أرشيف = https://web.archive.org/web/20180705232851/https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes
| تاريخ أرشيف = 5 July 2018
| تاريخ الوصول = 20 July 2018
| اقتباس = One of the most important primary services is an API server. This is the main management point of the entire cluster as it allows a user to configure Kubernetes' workloads and organizational units. It is also responsible for making sure that the etcd store and the service details of deployed containers are in agreement. It acts as the bridge between various components to maintain cluster health and disseminate information and commands.
| الأخير = Ellingwood
| الأول = Justin
}}</ref>

* المجدول: المجدول هو المكون القابل للتوصيل والذي يحدد العقدة التي يتم تشغيل جراب غير مجدولة (الكيان الأساسي الذي يديره المجدول)، بناءً على توفر الموارد. يتعقب المجدول استخدام الموارد على كل عقدة لضمان عدم جدولة عبء العمل عن الموارد المتاحة. لهذا الغرض، يجب أن يعرف المجدول متطلبات الموارد، وتوافر الموارد، وغيرها من القيود التي يوفرها المستخدم وتوجيهات السياسة مثل جودة الخدمة، ومتطلبات التقارب / مكافحة التقارب، ومكان البيانات، وما إلى ذلك. في جوهرها، يتمثل دور المجدول في مطابقة «عرض» المورد مع عبء العمل «الطلب».<ref>{{استشهاد ويب
| مسار = https://rancher.com/three-pillars-kubernetes-container-orchestration/
| عنوان = The Three Pillars of Kubernetes Container Orchestration - Rancher Labs
| تاريخ = 18 May 2017
| موقع = rancher.com
| مسار أرشيف = https://web.archive.org/web/20170624022635/http://rancher.com/three-pillars-kubernetes-container-orchestration/
| تاريخ أرشيف = 24 June 2017
| تاريخ الوصول = 22 May 2017
|حالة المسار=live}}</ref>

* مدير وحدة التحكم: وحدة التحكم عبارة عن حلقة مصالحة تدفع حالة الكتلة الفعلية نحو حالة الكتلة المطلوبة.<ref name="coreos-replication-controller">{{استشهاد ويب
| مسار = https://coreos.com/kubernetes/docs/latest/replication-controller.html
| عنوان = Overview of a Replication Controller
| موقع = Documentation
| ناشر = [[CoreOS]]
| مسار أرشيف = https://web.archive.org/web/20150922010433/https://coreos.com/kubernetes/docs/latest/replication-controller.html
| تاريخ أرشيف = 2015-09-22
| تاريخ الوصول = 2015-11-02
|حالة المسار=live}}</ref> يفعل هذا عن طريق إدارة مجموعة من وحدات التحكم. نوع واحد من وحدة تحكم هو وحدة تحكم ''النسخ المتماثل،'' الذي يعالج النسخ المتماثل والتحجيم عن طريق تشغيل عدد محدد من نسخ جراب عبر الكتلة. يتعامل أيضًا مع إنشاء قرون بديلة في حالة فشل العقدة الأساسية.<ref name="coreos-replication-controller" /> تشتمل وحدات التحكم الأخرى التي تشكل جزءًا من نظام كوبيرنيتيس الأساسي على "DaemonSet Controller" لتشغيل جراب واحد تمامًا على كل جهاز (أو بعض مجموعات فرعية من الأجهزة)، و "Controller Job" لتشغيل الأكواد التي تعمل حتى الاكتمال، على سبيل المثال وظيفة دفعة.<ref name="exciting-experimental-features">{{استشهاد ويب
| مسار = https://livewyer.io/blog/2015/10/02/kubernetes-exciting-experimental-features/
| عنوان = Kubernetes: Exciting Experimental Features
| تاريخ = 2015-10-02
| موقع = Livewyer
| مسار أرشيف = https://web.archive.org/web/20151020071601/http://www.livewyer.com/blog/2015/10/02/kubernetes-exciting-experimental-features
| تاريخ أرشيف = 2015-10-20
| تاريخ الوصول = 2015-11-02
| الأخير = Sanders
| الأول = Jake
|حالة المسار=live}}</ref> يتم تحديد مجموعة القرون التي تديرها وحدة التحكم بواسطة محددات الملصقات التي تعد جزءًا من تعريف وحدة التحكم.<ref name="redhat-docker-and-kubernetes-training-labels-examples" />

: إدارة وحدة التحكم هي عملية تدير وحدات تحكم كوبيرنيتيس الأساسية مثل DaemonSet Controller و Replication Controller. تتصل وحدات التحكم بخادم واجهة برمجة التطبيقات لإنشاء وتحديث وحذف الموارد التي تديرها (السنفات ونقاط نهاية الخدمة، إلخ)).<ref name=":1" />

=== عقدة كوبيرنيتيس ===

تعد Node ، المعروفة أيضًا باسم Worker أو Minion ، عبارة عن آلة يتم نشر حاويات بها (أعباء العمل). كل عقدة في الكتلة يجب تشغيل حاوية [[نظام تنفيذ البرامج|وقت التشغيل]] مثل [[دوكر (برمجية)|عامل الميناء]]، فضلا عن المكونات المذكورة أدناه، للتواصل مع الابتدائي لتكوين شبكة من هذه الحاويات.

* Kubelet: Kubelet مسؤول عن حالة التشغيل لكل عقدة، مما يضمن أن جميع الحاويات الموجودة على العقدة صحية. إنه يعتني ببدء ووقف وصيانة حاويات التطبيقات المنظمة في حاضن حسب توجيهات طائرة التحكم.<ref name="do-intro" /><ref>{{استشهاد ويب
| مسار = http://kamalmarhubi.com/blog/2015/08/27/what-even-is-a-kubelet/
| عنوان = What [..] is a Kubelet?
| تاريخ = 2015-08-27
| ناشر = kamalmarhubi.com
| مسار أرشيف = https://web.archive.org/web/20151113064016/http://kamalmarhubi.com/blog/2015/08/27/what-even-is-a-kubelet/
| تاريخ أرشيف = 2015-11-13
| تاريخ الوصول = 2015-11-02
| الأخير = Marhubi
| الأول = Kamal
|حالة المسار=live}}</ref>

: يراقب Kubelet حالة جراب، وإذا لم يكن في الحالة المرغوبة، فإن الجراب يعاد نشره على نفس العقدة. يتم ترحيل حالة العقدة كل بضع ثوان عبر رسائل نبضات إلى الأساسي. بمجرد أن يكتشف الجهاز الأساسي فشل العقد، يلاحظ وحدة التحكم في النسخ المتماثل هذا التغيير في الحالة وتطلق القرون على عقد صحية أخرى.  

* Kube-proxy: Kube-proxy هو تطبيق [[وكيل (حوسبة)|لبروكسي الشبكة]] وموازن التحميل، وهو يدعم تجريد الخدمة إلى جانب تشغيل الشبكات الأخرى.<ref name="do-intro" /> وهي مسؤولة عن توجيه حركة المرور إلى الحاوية المناسبة بناءً على عنوان IP ورقم المنفذ للطلب الوارد.
* وقت تشغيل الحاوية: توجد حاوية داخل حاوية. الحاوية هي أدنى مستوى من الخدمة المصغرة التي تحتوي على التطبيق قيد التشغيل والمكتبات وتوابعها. يمكن أن تتعرض الحاويات للعالم من خلال عنوان IP خارجي. تدعم كوبيرنيتيس حاويات Docker منذ إصدارها الأول، وفي يوليو 2016 تمت إضافة محرك حاويات rkt .<ref>[https://kubernetes.io/blog/2016/07/rktnetes-brings-rkt-container-engine-to-kubernetes/ rktnetes brings rkt container engine to Kubernetes - Kubernetes<!-- عنوان مولد بالبوت -->] {{Webarchive|url=https://web.archive.org/web/20190331214108/https://kubernetes.io/blog/2016/07/rktnetes-brings-rkt-container-engine-to-kubernetes/ |date=31 مارس 2019}}</ref>

=== إضافات ===

تعمل الوظائف الإضافية تمامًا مثل أي تطبيق آخر يتم تشغيله داخل المجموعة: يتم تنفيذها من خلال أجهزة الكمبيوتر والخدمات، وهي تختلف فقط من حيث أنها تقوم بتنفيذ ميزات مجموعة كوبيرنيتيس. قد تتم إدارة القرون بواسطة عمليات النشر و ReplicationControllers وما إلى ذلك. هناك العديد من الوظائف الإضافية، والقائمة تنمو. بعض من أهم:

* DNS: يجب أن يكون لدى كافة مجموعات كوبيرنيتيس DNS الكتلة؛ إنها ميزة إلزامية. Cluster DNS هو خادم DNS ، بالإضافة إلى خادم (خوادم) DNS الأخرى في بيئتك، والذي يقدم سجلات DNS لخدمات كوبيرنيتيس. تتضمن الحاويات التي بدأتها كوبيرنيتيس خادم DNS هذا تلقائيًا في عمليات البحث عن DNS الخاصة بهم.
* واجهة المستخدم على الويب: هذا هو الغرض العام، واجهة المستخدم على شبكة الإنترنت لمجموعات كوبيرنيتيس. يسمح للمستخدمين بإدارة واستكشاف الأخطاء وإصلاحها التطبيقات التي تعمل في الكتلة، وكذلك الكتلة نفسها.
* مراقبة موارد الحاوية: توفير وقت تشغيل موثوق للتطبيق، والقدرة على زيادته أو خفضه استجابة لأحمال العمل، يعني القدرة على مراقبة أداء عبء العمل بشكل مستمر وفعال. توفر مراقبة موارد الحاوية هذه الإمكانية من خلال تسجيل مقاييس حول الحاويات في قاعدة بيانات مركزية، وتوفر واجهة مستخدم لتصفح تلك البيانات. يعد cAdvisor مكونًا على عقدة الرقيق يوفر إمكانية محدودة لرصد القياس المتري. هناك خطوط أنابيب كاملة للقياسات، مثل بروميثيوس، يمكنها تلبية معظم احتياجات المراقبة.
* التسجيل على مستوى الكتلة: يجب أن يكون للسجلات تخزين منفصل ودورة حياة مستقلة عن العقد أو القرون أو الحاويات. خلاف ذلك، يمكن أن يسبب فشل العقدة أو جراب فقدان بيانات الحدث. تسمى القدرة على القيام بذلك التسجيل على مستوى الكتلة، وهذه الآليات مسؤولة عن حفظ سجلات الحاوية في مخزن سجل مركزي بواجهة بحث / تصفح. لا توفر كوبيرنيتيس أي حل تخزين محلي لبيانات السجل، ولكن يمكن للمرء دمج العديد من حلول التسجيل الموجودة في نظام كوبيرنيتيس.

== Microservices ==

يستخدم كوبيرنيتيس بشكل شائع كوسيلة لاستضافة تطبيق قائم على الخدمات المصغرة، لأنه ونظامه الإيكولوجي المرتبط به من الأدوات يوفران جميع الإمكانيات اللازمة لمعالجة الشواغل الرئيسية لأي {{Ill-WD2|بنية من خدمات microservice|id=Q18344624}}.

== انظر أيضًا ==

* [[جنكينز (برمجية)|جنكينز]]

== المراجع ==

{{مراجع}}

== وصلات خارجية ==

* {{موقع رسمي}}
* {{روابط برمجيات}}
* {{غيت هاب|https://github.com/kubernetes/kubernetes|Source code on GitHub}}
{{روابط شقيقة}}
{{مواقع التواصل الاجتماعي}}
{{ضبط استنادي}}
{{شريط بوابات|برمجيات|برمجيات حرة|تقانة المعلومات|علم الحاسوب}}

[[تصنيف:برمجيات حرة بلغة غو]]
[[تصنيف:مشاريع مؤسسة لينكس]]
[[تصنيف:حاويات لينكس]]
[[تصنيف:برمجيات محاكاة افتراضية للينكس]]
[[تصنيف:برمجيات 2014]]
[[تصنيف:برمجيات تستخدم رخصة أباتشي]]
[[تصنيف:برمجيات حاويات]]
[[تصنيف:بنية تحتية سحابية]]
كوبيرنيتيس (عادة تكتب k8s ) نظام تزامن حاويات مفتوح المصدر لأتمتة نشر التطبيقات، وتوسيع نطاقها وإدارتها. تم تصميمه في الأصل من قِبل جوجل، وتقوم الآن بإدارته مؤسسة Cloud Native Computing Foundation. يهدف إلى توفير «نظام أساسي لأتمتة نشر حاويات التطبيقات وتوسيع نطاقها وتشغيلها عبر مجموعات المضيفين». يعمل مع مجموعة من أدوات الحاوية، بما في ذلك Docker.Kubernetes v1.12: Introducing RuntimeClass - Kubernetes  العديد من الخدمات السحابية توفر منصة خدمية مبنية على كوبيرنيتيس أو بنية تحتية كخدمة والتي تمكن من نشر كوبيرنيتيس كمنصة توفير خدمة. كما يوفر العديد من البائعين أيضًا توزيعات كوبيرنيتيس الخاصة بهم.
تصغير|جوجل Container Engine يتحدث في جوجل Cloud Summit
تأسست كوبيرنيتيس (κυβερνήτης ، اليونانية لـ «حاكم»، " helmsman " أو «كابتن»)  على يد جو بيدا وبريندان بيرنز وكريج ماكلوكي،  الذين انضموا بسرعة إلى المهندسين الآخرين في جوجل بما في ذلك بريان غرانت وتيم هوكين، وأعلن لأول مرة من قبل جوجل في منتصف عام 2014. يتأثر تطويره وتصميمه بشدة بنظام Borg من جوجل،  والعديد من كبار المساهمين في المشروع الذين سبق لهم العمل في Borg. كان الاسم الأصلي لـ كوبيرنيتيس في جوجل هو Project Seven ، في إشارة إلى شخصية Star Trek Seven of Nine التي تعد Borg «صديقة». المتحدثون السبعة على عجلة شعار كوبيرنيتيس هم إشارة إلى هذا الاسم الرمزي. تمت كتابة مشروع Borg الأصلي بالكامل في C ++  ، لكن نظام كوبيرنيتيس المعاد كتابته تم تطبيقه في Go .

تم إصدار كوبيرنيتيس v1.0 في 21 يوليو 2015. إلى جانب إصدار كوبيرنيتيس v1.0، دخلت جوجل في شراكة مع Linux Foundation لتشكيل Cloud Native Computing Foundation (CNCF)  وعرضت كوبيرنيتيس كتقنية أساسية. في 6 مارس، 2018، وصل كوبيرنيتيس Project إلى المركز التاسع في الدعاوى في جيثب، والمركز الثاني في المؤلفين وقضايا نواة لينكس.

 كائنات كوبيرنيتيس 

يعرّف كوبيرنيتيس مجموعة من الكتل البرمجية الإنشائية («البدائية»)، والتي توفر مجتمعة الآليات التي تنشر وتحافظ على نطاق التطبيقات على أساس وحدة المعالجة المركزية والذاكرة  أو المقاييس المخصصة. كوبيرنيتيس مقترن بشكل فضفاض وقابل للامتداد لتلبية أعباء العمل المختلفة. يتم توفير هذه القابلية للتوسعة في جزء كبير منها بواسطة كوبيرنيتيس API ، والذي يستخدم من قبل المكونات الداخلية وكذلك الامتدادات والحاويات التي تعمل على كوبيرنيتيس. يمارس النظام الأساسي سيطرته على موارد الحوسبة والتخزين عن طريق تحديد الموارد على أنها كائنات، والتي يمكن إدارتها على هذا النحو. الكائنات الرئيسية هي:

 القرون 

وحدة الجدولة الأساسية في كوبيرنيتيس هي جراب .Pods - Kubernetes  ويضيف مستوى أعلى من التجريد من خلال تجميع المكونات في حاويات. يتكون الجراب من حاوية واحدة أو أكثر مضمونة أن تكون موجودة في الجهاز المضيف ويمكنها مشاركة الموارد.

يتم تعيين عنوان Pod Pod فريد لكل كتلة في كوبيرنيتيس داخل المجموعة، مما يسمح للتطبيقات باستخدام المنافذ دون التعرض لخطر التعارض. داخل الحاوية، يمكن لجميع الحاويات أن تشير إلى بعضها البعض على المضيف المحلي، ولكن الحاوية داخل الحافظة لا تملك أي وسيلة للتعامل مباشرة مع حاوية أخرى داخل حافظة أخرى؛ لذلك، يجب عليه استخدام عنوان IP Pod. يجب على مطور التطبيق ألا يستخدم عنوان بروتوكول الإنترنت (Pod IP) أبدًا للإشارة إلى / استدعاء قدرة في جراب آخر، لأن عناوين بروتوكول الإنترنت (بروتوكول الإنترنت) هي سريعة الزوال - قد يتم تعيين جراب معين يشيرون إليه إلى عنوان IP آخر لجهاز iPod عند إعادة التشغيل. بدلاً من ذلك، يجب عليهم استخدام إشارة إلى الخدمة، التي تحتوي على إشارة إلى جراب الهدف على عنوان IP Pod.

يمكن للقرنة تحديد وحدة تخزين، مثل دليل القرص المحلي أو قرص الشبكة، وتعريضها للحاويات الموجودة في الجراب. يمكن إدارة السنفات يدويًا من خلال كوبيرنيتيس API ، أو يمكن تفويض إدارتها إلى وحدة تحكم. تعد هذه المجلدات أيضًا أساسًا لميزات كوبيرنيتيس الخاصة بـ ConfigMaps (لتوفير الوصول إلى التكوين من خلال نظام الملفات المرئي للحاوية) والأسرار (لتوفير الوصول إلى بيانات الاعتماد اللازمة للوصول إلى الموارد البعيدة بشكل آمن، من خلال توفير بيانات الاعتماد هذه على نظام الملفات المرئي فقط إلى الحاويات المصرح بها).

 خدمات 

تصغير|700x700بك|Simplified view showing how Services interact with Pod networking in a كوبيرنيتيس cluster

خدمة كوبيرنيتيس هي مجموعة من القرون التي تعمل معًا، مثل طبقة واحدة من تطبيق متعدد المستويات. يتم تحديد مجموعة القرون التي تشكل خدمة بواسطة محدد التسمية. يوفر كوبيرنيتيس وضعين لاكتشاف الخدمة، باستخدام المتغيرات البيئية أو استخدام كوبيرنيتيس DNS.Services - Kubernetes  يعرّف اكتشاف الخدمة عنوان IP ثابتًا واسم DNS للخدمة، ويقوم بتحميل أرصدة الحركة بطريقة متقاربة إلى اتصالات الشبكة لعنوان IP هذا بين القرون التي تتطابق مع المحدد (حتى عندما تتسبب الأعطال في انتقال القرون من آلة إلى أخرى). بشكل افتراضي، يتم الكشف عن الخدمة داخل مجموعة (على سبيل المثال، قد يتم تجميع قرون النهاية الخلفية في خدمة، مع وجود طلبات من قرون الواجهة الأمامية متوازنة من بينها)، ولكن يمكن أيضًا كشف خدمة خارج كتلة (مثل للعملاء للوصول إلى القرون الواجهة الأمامية).

 أحجام 

توفر أنظمة الملفات الموجودة في حاوية كوبيرنيتيس تخزينًا مؤقتًا بشكل افتراضي. هذا يعني أن إعادة تشغيل الحاوية ستؤدي إلى مسح أي بيانات على هذه الحاويات، وبالتالي فإن هذا النوع من التخزين يحد بشكل كبير من أي شيء باستثناء التطبيقات البسيطة. توفر وحدة تخزين كوبيرنيتيس تخزينًا ثابتًا طوال فترة تشغيل الجهاز نفسه. يمكن أيضًا استخدام وحدة التخزين هذه كمساحة مشتركة على القرص للحاويات الموجودة داخل الحافظة. يتم تثبيت وحدات التخزين في نقاط تحميل محددة داخل الحاوية، والتي يتم تعريفها من خلال تكوين pod ، ولا يمكن تركيبها على وحدات تخزين أخرى أو ارتباط بوحدات تخزين أخرى. يمكن تركيب نفس وحدة التخزين في نقاط مختلفة في شجرة نظام الملفات بواسطة حاويات مختلفة.

 مساحات 

يوفر كوبيرنيتيس تقسيم الموارد التي يديرها إلى مجموعات غير متداخلة تسمى مساحات الأسماء. وهي مخصصة للاستخدام في البيئات التي ينتشر فيها العديد من المستخدمين عبر فرق أو مشاريع متعددة أو حتى تفصل بين البيئات مثل التطوير والاختبار والإنتاج.

 إدارة كائنات كوبيرنيتيس 

يوفر كوبيرنيتيس بعض الآليات التي تسمح للمرء بإدارة كائناته أو تحديدها أو معالجتها.

 التسميات والمحددات 

يُمكّن كوبيرنيتيس العملاء (المستخدمين أو المكونات الداخلية) من إرفاق أزواج قيمة المفتاح تسمى «ملصقات» إلى أي كائن API في النظام، مثل القرون والعقد. في المقابل، «محددات التسمية» عبارة عن استعلامات مقابل التصنيفات التي تعمل على حل الكائنات المتطابقة. عندما يتم تعريف الخدمة، يمكن للمرء تحديد محددات الملصقات التي سيتم استخدامها من قبل جهاز توجيه / موازن التحميل لتحديد حالات pod التي سيتم توجيه حركة المرور إليها. وبالتالي، يمكن ببساطة تغيير بطاقات العنونة أو تغيير محددات الملصقات الموجودة على الخدمة للتحكم في أي من الرموز تحصل على حركة المرور وأيها لا يمكن استخدامها والتي يمكن استخدامها لدعم أنماط النشر المختلفة مثل عمليات النشر ذات اللون الأزرق والأخضر أو اختبار AB . توفر هذه القدرة على التحكم الديناميكي في كيفية استخدام الخدمات لموارد التنفيذ اقترانًا فضفاضًا داخل البنية التحتية.

على سبيل المثال، إذا كانت القرون الخاصة بالتطبيق تحتوي على تسميات tier نظام (مع قيم مثل front-end back-end ، على سبيل المثال) و release_track (مع قيم مثل canary production على سبيل المثال)، ثم عملية على الكل يمكن للعقد back-end canary استخدام محدد التسمية، مثل: tier=back-end AND release_track=canary

 محددات المجال 

تمامًا مثل التسميات، يتيح لك محددات الحقل أيضًا تحديد موارد كوبيرنيتيس. بخلاف التصنيفات، يعتمد التحديد على قيم السمة الملازمة للمورد الذي يتم تحديده، بدلاً من التصنيف الذي يحدده المستخدم. metadata.name و metadata.namespace هما محددات الحقول التي ستكون موجودة على جميع كائنات كوبيرنيتيس. تعتمد المحددات الأخرى التي يمكن استخدامها على نوع الكائن / المورد.

 هندسة 

تصغير|660x660بك|كوبيرنيتيس architecture diagram

يتبع كوبيرنيتيس البنية الأساسية / النسخة المتماثلة. يمكن تقسيم مكونات كوبيرنيتيس إلى تلك التي تدير عقدة فردية وتلك التي تعد جزءًا من مستوى التحكم.

 طائرة التحكم كوبيرنيتيس (الابتدائي) 

كوبيرنيتيس الأساسي هو وحدة التحكم الرئيسية في المجموعة، وإدارة عبء العمل وتوجيه الاتصالات عبر النظام. تتكون طائرة التحكم كوبيرنيتيس من مكونات مختلفة، كل عملية خاصة بها، يمكن تشغيلها على عقدة رئيسية واحدة أو على عدة انتخابات تمهيدية تدعم مجموعات توفر عالية. المكونات المختلفة لطائرة التحكم كوبيرنيتيس هي كما يلي:

 etcd: etcd كونتينر لينكس عبارة عن مخزن بيانات مستمر وخفيف الوزن وموزع وذات قيمة كبيرة تم تطويره بواسطة CoreOS ويقوم بتخزين بيانات التكوين الخاصة بالكتلة بشكل موثوق، وهو ما يمثل الحالة الكلية للمجموعة في أي نقطة زمنية محددة. تمامًا مثل Apache ZooKeeper ، etcd هو نظام يدعم الاتساق على التوفر في حالة وجود قسم للشبكة (انظر نظرية CAP). هذا الاتساق أمر بالغ الأهمية لجدولة وخدمات التشغيل بشكل صحيح. يستخدم كوبيرنيتيس API Server واجهة برمجة التطبيقات الخاصة بمراقبة etcd لمراقبة الكتلة وطرح تغييرات التكوين المهمة أو ببساطة استعادة أي اختلافات في حالة الكتلة، والعودة إلى ما تم إعلانه من قبل الناشر. على سبيل المثال، إذا حدد الناشر أن هناك ثلاث حالات لقرنة معينة يجب تشغيلها، يتم تخزين هذه الحقيقة في etcd. إذا تبين أن حالتين فقط قيد التشغيل، سيتم الكشف عن هذه الدلتا مقارنة ببيانات الخ، وسوف تستخدم كوبيرنيتيس هذا لجدولة إنشاء مثيل إضافي من هذا الملف.
 خادم API: يعد خادم API مكونًا رئيسيًا ويخدم واجهة برمجة تطبيقات كوبيرنيتيس باستخدام JSON عبر HTTP ، والذي يوفر كلاً من الواجهة الداخلية والخارجية لـ كوبيرنيتيس. يقوم خادم API بمعالجة والتحقق من طلبات REST وتحديث حالة كائنات API في etcd ، وبالتالي السماح للعملاء بتكوين عبء العمل والحاويات عبر عقد Worker.

 المجدول: المجدول هو المكون القابل للتوصيل والذي يحدد العقدة التي يتم تشغيل جراب غير مجدولة (الكيان الأساسي الذي يديره المجدول)، بناءً على توفر الموارد. يتعقب المجدول استخدام الموارد على كل عقدة لضمان عدم جدولة عبء العمل عن الموارد المتاحة. لهذا الغرض، يجب أن يعرف المجدول متطلبات الموارد، وتوافر الموارد، وغيرها من القيود التي يوفرها المستخدم وتوجيهات السياسة مثل جودة الخدمة، ومتطلبات التقارب / مكافحة التقارب، ومكان البيانات، وما إلى ذلك. في جوهرها، يتمثل دور المجدول في مطابقة «عرض» المورد مع عبء العمل «الطلب».

 مدير وحدة التحكم: وحدة التحكم عبارة عن حلقة مصالحة تدفع حالة الكتلة الفعلية نحو حالة الكتلة المطلوبة. يفعل هذا عن طريق إدارة مجموعة من وحدات التحكم. نوع واحد من وحدة تحكم هو وحدة تحكم النسخ المتماثل، الذي يعالج النسخ المتماثل والتحجيم عن طريق تشغيل عدد محدد من نسخ جراب عبر الكتلة. يتعامل أيضًا مع إنشاء قرون بديلة في حالة فشل العقدة الأساسية. تشتمل وحدات التحكم الأخرى التي تشكل جزءًا من نظام كوبيرنيتيس الأساسي على "DaemonSet Controller" لتشغيل جراب واحد تمامًا على كل جهاز (أو بعض مجموعات فرعية من الأجهزة)، و "Controller Job" لتشغيل الأكواد التي تعمل حتى الاكتمال، على سبيل المثال وظيفة دفعة. يتم تحديد مجموعة القرون التي تديرها وحدة التحكم بواسطة محددات الملصقات التي تعد جزءًا من تعريف وحدة التحكم.

 إدارة وحدة التحكم هي عملية تدير وحدات تحكم كوبيرنيتيس الأساسية مثل DaemonSet Controller و Replication Controller. تتصل وحدات التحكم بخادم واجهة برمجة التطبيقات لإنشاء وتحديث وحذف الموارد التي تديرها (السنفات ونقاط نهاية الخدمة، إلخ)).

 عقدة كوبيرنيتيس 

تعد Node ، المعروفة أيضًا باسم Worker أو Minion ، عبارة عن آلة يتم نشر حاويات بها (أعباء العمل). كل عقدة في الكتلة يجب تشغيل حاوية وقت التشغيل مثل عامل الميناء، فضلا عن المكونات المذكورة أدناه، للتواصل مع الابتدائي لتكوين شبكة من هذه الحاويات.

 Kubelet: Kubelet مسؤول عن حالة التشغيل لكل عقدة، مما يضمن أن جميع الحاويات الموجودة على العقدة صحية. إنه يعتني ببدء ووقف وصيانة حاويات التطبيقات المنظمة في حاضن حسب توجيهات طائرة التحكم.

 يراقب Kubelet حالة جراب، وإذا لم يكن في الحالة المرغوبة، فإن الجراب يعاد نشره على نفس العقدة. يتم ترحيل حالة العقدة كل بضع ثوان عبر رسائل نبضات إلى الأساسي. بمجرد أن يكتشف الجهاز الأساسي فشل العقد، يلاحظ وحدة التحكم في النسخ المتماثل هذا التغيير في الحالة وتطلق القرون على عقد صحية أخرى.  

 Kube-proxy: Kube-proxy هو تطبيق لبروكسي الشبكة وموازن التحميل، وهو يدعم تجريد الخدمة إلى جانب تشغيل الشبكات الأخرى. وهي مسؤولة عن توجيه حركة المرور إلى الحاوية المناسبة بناءً على عنوان IP ورقم المنفذ للطلب الوارد.
 وقت تشغيل الحاوية: توجد حاوية داخل حاوية. الحاوية هي أدنى مستوى من الخدمة المصغرة التي تحتوي على التطبيق قيد التشغيل والمكتبات وتوابعها. يمكن أن تتعرض الحاويات للعالم من خلال عنوان IP خارجي. تدعم كوبيرنيتيس حاويات Docker منذ إصدارها الأول، وفي يوليو 2016 تمت إضافة محرك حاويات rkt .rktnetes brings rkt container engine to Kubernetes - Kubernetes 

 إضافات 

تعمل الوظائف الإضافية تمامًا مثل أي تطبيق آخر يتم تشغيله داخل المجموعة: يتم تنفيذها من خلال أجهزة الكمبيوتر والخدمات، وهي تختلف فقط من حيث أنها تقوم بتنفيذ ميزات مجموعة كوبيرنيتيس. قد تتم إدارة القرون بواسطة عمليات النشر و ReplicationControllers وما إلى ذلك. هناك العديد من الوظائف الإضافية، والقائمة تنمو. بعض من أهم:

 DNS: يجب أن يكون لدى كافة مجموعات كوبيرنيتيس DNS الكتلة؛ إنها ميزة إلزامية. Cluster DNS هو خادم DNS ، بالإضافة إلى خادم (خوادم) DNS الأخرى في بيئتك، والذي يقدم سجلات DNS لخدمات كوبيرنيتيس. تتضمن الحاويات التي بدأتها كوبيرنيتيس خادم DNS هذا تلقائيًا في عمليات البحث عن DNS الخاصة بهم.
 واجهة المستخدم على الويب: هذا هو الغرض العام، واجهة المستخدم على شبكة الإنترنت لمجموعات كوبيرنيتيس. يسمح للمستخدمين بإدارة واستكشاف الأخطاء وإصلاحها التطبيقات التي تعمل في الكتلة، وكذلك الكتلة نفسها.
 مراقبة موارد الحاوية: توفير وقت تشغيل موثوق للتطبيق، والقدرة على زيادته أو خفضه استجابة لأحمال العمل، يعني القدرة على مراقبة أداء عبء العمل بشكل مستمر وفعال. توفر مراقبة موارد الحاوية هذه الإمكانية من خلال تسجيل مقاييس حول الحاويات في قاعدة بيانات مركزية، وتوفر واجهة مستخدم لتصفح تلك البيانات. يعد cAdvisor مكونًا على عقدة الرقيق يوفر إمكانية محدودة لرصد القياس المتري. هناك خطوط أنابيب كاملة للقياسات، مثل بروميثيوس، يمكنها تلبية معظم احتياجات المراقبة.
 التسجيل على مستوى الكتلة: يجب أن يكون للسجلات تخزين منفصل ودورة حياة مستقلة عن العقد أو القرون أو الحاويات. خلاف ذلك، يمكن أن يسبب فشل العقدة أو جراب فقدان بيانات الحدث. تسمى القدرة على القيام بذلك التسجيل على مستوى الكتلة، وهذه الآليات مسؤولة عن حفظ سجلات الحاوية في مخزن سجل مركزي بواجهة بحث / تصفح. لا توفر كوبيرنيتيس أي حل تخزين محلي لبيانات السجل، ولكن يمكن للمرء دمج العديد من حلول التسجيل الموجودة في نظام كوبيرنيتيس.

 Microservices 

يستخدم كوبيرنيتيس بشكل شائع كوسيلة لاستضافة تطبيق قائم على الخدمات المصغرة، لأنه ونظامه الإيكولوجي المرتبط به من الأدوات يوفران جميع الإمكانيات اللازمة لمعالجة الشواغل الرئيسية لأي .

 انظر أيضًا 

 جنكينز

 المراجع 

 وصلات خارجية 

 
 
 

تصنيف:برمجيات حرة بلغة غو
تصنيف:مشاريع مؤسسة لينكس
تصنيف:حاويات لينكس
تصنيف:برمجيات محاكاة افتراضية للينكس
تصنيف:برمجيات 2014
تصنيف:برمجيات تستخدم رخصة أباتشي
تصنيف:برمجيات حاويات
تصنيف:بنية تحتية سحابية