K8s / Kubernetes: AWS مقابل GCP مقابل Azure
نشرت: 2022-03-11فازت Kubernetes (غالبًا ما تكون "K8s") في معركة أدوات تنسيق الحاويات منذ سنوات. ومع ذلك ، لا يزال هناك العديد من الطرق لتطبيق Kubernetes اليوم وجعلها تعمل مع العديد من البنى التحتية والعديد من الأدوات - بعضها يتم صيانته بشكل أفضل من البعض الآخر. ربما كان التطور الأكثر إثارة للاهتمام على هذا الصعيد هو أن كبار مزودي الخدمات السحابية قرروا إصدار إصدارات Kubernetes الخاصة بهم:
- يقدم Microsoft Azure خدمة Azure Kubernetes (AKS)
- تقدم AWS خدمة Amazon Elastic Kubernetes (EKS)
- تقدم Google Cloud محرك Google Kubernetes (GKE)
من منظور DevOps ، ماذا تقدم هذه المنصات؟ هل يفيون بوعودهم؟ كيف يقارن وقت إنشائها والمعايير الأخرى؟ إلى أي مدى يتكاملون مع الأنظمة الأساسية الخاصة بهم ، وخاصة أدوات CLI الخاصة بهم؟ ما هو شكل الصيانة والعمل معهم؟ أدناه ، سنتعمق في هذه الأسئلة والمزيد.
ملاحظة: بالنسبة للقراء الذين يرغبون في شرح مفاهيم مجموعة Kubernetes قبل القراءة ، يقدم Dmitriy Kononov مقدمة ممتازة.
AKS مقابل EKS مقابل GKE: الميزات المعلن عنها
لقد قررنا تجميع الميزات المختلفة المتاحة لكل إصدار من إصدارات Kubernetes المُدارة في مستودعات:
- نظرة عامة عالمية
- الشبكات
- قابلية التوسع والأداء
- الأمن والمراقبة
- النظام البيئي
- التسعير
ملاحظة: قد تتغير هذه التفاصيل بمرور الوقت حيث يقوم موفرو السحابة بتحديث منتجاتهم بانتظام.
نظرة عامة عالمية
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| صدر عام | 2017 | 2018 | 2014 |
| احدث اصدار | 1.15.11 (افتراضي) - 1.18.2 (معاينة) | 1.16.8 (افتراضي) | 1.14.10 (افتراضي) - 1.16.9 |
| مكونات محددة | وكيل oms، tunnelfront | عقدة AWS | بطلاقة ، بطلاقة ، gcp-scaler ، مصدر الحدث ، l7-default-backend |
| ترقية Kubernetes Control Plane | يدوي | يدوي | آلي (افتراضي) أو يدوي |
| ترقيات العمال | يدوي | نعم (سهل مع مجموعات العقد المُدارة) | نعم: آلي ويدوي ، يمكن إجراء الضبط الدقيق |
| جيش تحرير السودان | 99.95 في المائة مع منطقة توافر ، و 99.9 في المائة بدون | 99.9 بالمائة لـ EKS (رئيسي) ، 99.99 بالمائة لـ EC2 (العقد) | 99.95 في المائة داخل منطقة ، و 99.5 في المائة داخل منطقة |
| دعم Knative | رقم | رقم | لا (ولكن تثبيت Istio الأصلي) |
| سعر طائرة التحكم Kubernetes | حر | 0.10 دولار / ساعة | 0.10 دولار / ساعة |
كان Kubernetes نفسه مشروعًا لشركة Google ، لذلك فمن المنطقي أنهم كانوا أول من اقترح إصدارًا مستضافًا في عام 2014.
من بين الثلاثة التي تمت مقارنتها هنا ، كان Azure هو التالي مع AKS وكان لديه بعض الوقت للتحسين: إذا كنت تتذكر محرك acs ، الذي تم استخدامه لتوفير Kubernetes على Azure قبل بضع سنوات ، فستقدر جهود Microsoft في استبداله ، محرك aks.
كانت AWS هي آخر شركة تطرح نسختها الخاصة ، EKS ، لذلك قد يبدو أحيانًا أنها متأخرة في مقدمة الميزات ، لكنها تلحق بالركب.
فيما يتعلق بالتسعير ، بالطبع ، تتحرك الأشياء دائمًا ، وقد قررت Google الانضمام إلى AWS بسعر 0.10 دولار / ساعة ، اعتبارًا من يونيو 2020. Azure هو الطرف الخارجي هنا من خلال تقديم خدمة AKS مجانًا ، لكن من غير الواضح كيف لفترة طويلة قد تستمر.
يكمن الاختلاف الرئيسي الآخر في ميزة ترقية الكتلة. توجد معظم الترقيات التلقائية في GKE ، ويتم تشغيلها افتراضيًا. ومع ذلك ، فإن AKS مقابل EKS متشابهان مع بعضهما البعض هنا ، بمعنى أن كلاهما يتطلب طلبات يدوية لتتمكن من ترقية العقد الرئيسية أو العامل.
الشبكات
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| سياسات الشبكة | نعم: سياسات شبكة Azure أو Calico | تحتاج إلى تثبيت كاليكو | نعم: أصلي عبر Calico |
| توزيع الحمل | موازن تحميل SKU الأساسي أو القياسي | موازن التحميل الكلاسيكي والشبكة | موازن الحمولة الأصلية للحاوية |
| شبكة الخدمة | لا شيء من خارج منطقة الجزاء | AWS App Mesh (بناءً على Envoy) | Istio (خارج الصندوق ، لكن تجريبي) |
| دعم DNS | تخصيص CoreDNS | CoreDNS + Route53 داخل VPC | CoreDNS + Google Cloud DNS |
على جانب الشبكة للأشياء ، فإن موفري السحابة الثلاثة قريبون جدًا من بعضهم البعض. كلهم يسمحون للعملاء بتنفيذ سياسات الشبكة مع Calico ، على سبيل المثال. فيما يتعلق بموازنة الحمل ، فإنهم جميعًا ينفذون تكاملهم مع موارد موازن التحميل الخاصة بهم ويمنحون المهندسين اختيار ما يجب استخدامه.
يستند الاختلاف الرئيسي الموجود هنا إلى القيمة المضافة لشبكة الخدمة. لا تدعم AKS أي شبكة خدمة خارج الصندوق (على الرغم من أن المهندسين يمكنهم تثبيت Istio يدويًا). طورت AWS شبكة خدمات خاصة بها تسمى App Mesh. أخيرًا ، أصدرت Google تكاملها الخاص مع Istio (على الرغم من أنه لا يزال في مرحلة تجريبية) والذي يمكن للعملاء إضافته مباشرةً عند إنشاء المجموعة.
أفضل رهان: GKE
قابلية التوسع والأداء
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| العقد المعدنية العارية | رقم | نعم | رقم |
| الحد الأقصى للعقد لكل مجموعة | 1،000 | 1،000 | 5000 |
| كتلة عالية الإتاحة | رقم | نعم لخطة التحكم ، دليل عبر AZ للعمال | نعم عن طريق الكتلة الإقليمية ، يتم نسخ الرئيسي والعامل |
| تحجيم تلقائي | نعم عبر جهاز القياس التلقائي العنقودي | نعم عبر جهاز القياس التلقائي العنقودي | نعم عبر جهاز القياس التلقائي العنقودي |
| جهاز قياس الوزن العمودي | رقم | نعم | نعم |
| تجمعات العقدة | نعم | نعم | نعم |
| عقد GPU | نعم | نعم | نعم |
| داخلي | متاح عبر Azure ARC (تجريبي) | رقم | GKE on-prem عبر Anthos GKE |
فيما يتعلق بأداء GKE مقابل AKS وقابلية التوسع ، يبدو أن GKE في المقدمة. في الواقع ، فهو يدعم أكبر عدد من العقد (5000) ويقدم توثيقًا شاملاً حول كيفية قياس الكتلة بشكل صحيح. تتوفر جميع ميزات التوافر العالي ويسهل ضبطها. علاوة على ذلك ، أصدرت GKE مؤخرًا Anthos ، وهو مشروع لإنشاء نظام بيئي حول GKE ووظائفه ؛ مع Anthos ، يمكنك نشر GKE في مكان العمل.
بالرغم من ذلك ، تتمتع AWS بميزة رئيسية: فهي الوحيدة التي تسمح للعقد المعدنية بتشغيل مجموعة Kubernetes الخاصة بك.
اعتبارًا من يونيو 2020 ، تفتقر AKS إلى التوافر الكبير للسيد ، وهو جانب مهم يجب مراعاته. ولكن ، كما هو الحال دائمًا ، قد يتغير ذلك قريبًا.
أفضل رهان: GKE
الأمن والمراقبة
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| تشفير أسرار التطبيق | رقم | نعم ، ممكن عبر AWS KMS | نعم ، ممكن عبر Cloud KMS |
| امتثال | HIPAA ، SOC ، ISO ، PCI DSS | HIPAA ، SOC ، ISO ، PCI DSS | HIPAA ، SOC ، ISO ، PCI DSS |
| RBAC | نعم | نعم ، وتكامل قوي مع IAM | نعم |
| يراقب | ميزة صحة حاوية Azure Monitor | مراقبة مستوى التحكم Kubernetes المتصلة بـ Cloudwatch ، مقاييس Container Insights للعقد | مراقبة محرك Kubernetes والتكامل مع بروميثيوس |
من حيث الامتثال ، جميع موفري السحابة الثلاثة متساوون. ومع ذلك ، فيما يتعلق بالأمان ، توفر EKS و GKE طبقة أخرى من الأمان مع خدمات إدارة المفاتيح المضمنة.
بالنسبة للمراقبة ، يوفر Azure و Google Cloud نظام المراقبة البيئي الخاص بهما حول Kubernetes. تجدر الإشارة إلى أنه تم تحديث التطبيق من Google مؤخرًا لاستخدام Kubernetes Engine Monitoring ، المصمم خصيصًا لـ Kubernetes.
يوفر Azure نظام مراقبة الحاويات الخاص به ، والذي تم إنشاؤه في الأصل لنظام بيئي أساسي للحاويات غير Kubernetes. لقد أضافوا مراقبة لبعض المقاييس والموارد الخاصة بـ Kubernetes (صحة المجموعة ، عمليات النشر) —في وضع المعاينة ، اعتبارًا من يونيو 2020.
تقدم AWS مراقبة خفيفة الوزن لمستوى التحكم مباشرة في Cloudwatch. لمراقبة العمال ، يمكنك استخدام مقاييس Kubernetes Container Insights المقدمة عبر وكيل CloudWatch محدد يمكنك تثبيته في المجموعة.
أفضل رهان: GKE
النظام البيئي
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| المتجر | Azure Marketplace (ولكن لا يوجد تكامل واضح لـ AKS) | AWS Marketplace (أكثر من 250 تطبيقًا) | Google Marketplace (أكثر من 90 تطبيقًا) |
| دعم البنية التحتية كرمز (IaC) | وحدة Terraform وحدة أنسبل | وحدة Terraform وحدة أنسبل | وحدة Terraform وحدة أنسبل |
| توثيق | مجتمع ضعيف ولكنه كامل وقوي (أكثر من 2000 مشاركة في Stack Overflow) | ليس مجتمعًا شاملاً للغاية ولكنه قوي (1500+ مشاركات Stack Overflow) | وثائق رسمية واسعة النطاق ومجتمع قوي للغاية (أكثر من 4000 منشور في Stack Overflow) |
| دعم CLI | اكتمال | كاملة ، بالإضافة إلى أداة منفصلة خاصة eksctl (مغطاة أدناه) | اكتمال |
فيما يتعلق بالنظم البيئية ، يمتلك مقدمو الخدمات الثلاثة نقاط قوة وأصول مختلفة. تمتلك AKS الآن وثائق كاملة جدًا حول نظامها الأساسي وهي الثانية من حيث المنشورات على Stack Overflow. تمتلك EKS أقل عدد من المنشورات على Stack Overflow ، لكنها تستفيد من قوة AWS Marketplace. GKE ، باعتبارها أقدم منصة ، لديها أكبر عدد من المنشورات على Stack Overflow ، وعدد لا بأس به من التطبيقات في السوق ، ولكن أيضًا أكثر الوثائق شمولاً.

أفضل الرهانات: GKE و EKS
التسعير
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| غطاء الاستخدام المجاني | بقيمة 170 دولارًا | غير مؤهل للفئة المجانية | بقيمة 300 دولار |
| تكلفة طائرة التحكم Kubernetes | حر | 0.10 دولار / ساعة | 0.10 دولار / ساعة (يونيو 2020) |
| السعر المخفض (المثيل الفوري / العقد الاستباقية) | نعم | نعم | نعم |
| مثال على السعر لشهر واحد | 342 دولارًا 3 عقد D2 | 300 دولار 3 العقد الكبيرة | 190 دولارًا 3 عقد n1-standard-2 |
فيما يتعلق بالسعر بشكل عام ، حتى مع تحرك GKE لتنفيذ نقطة سعر 0.10 دولار / ساعة لأي مجموعة ، فإنها تظل إلى حد بعيد أرخص سحابة. هذا بفضل شيء خاص بـ Google - خصومات الاستخدام المستدام ، والتي يتم تطبيقها عندما يلبي الاستخدام الشهري للموارد عند الطلب حدًا أدنى معينًا.
من المهم ملاحظة أن صف السعر في المثال لا يأخذ في الاعتبار حركة المرور إلى مجموعة Kubernetes التي يمكن لموفر السحابة فرض رسوم عليها.
السبب في أن AWS لا تسمح باستخدام الطبقة المجانية الخاصة بها لاختبار مجموعة EKS هو أن EKS تتطلب آلات أكبر من فئة tX.micro ، وأن تسعير EKS بالساعة ليس في المستوى المجاني.
ومع ذلك ، لا يزال من الاقتصادي اختبار أي من خيارات Kubernetes المُدارة هذه مع تحميل لائق باستخدام العقد الموضعية / الاستباقية لكل مزود خدمة سحابية - سيوفر هذا التكتيك بسهولة 80 إلى 90 بالمائة من السعر النهائي. (بالطبع ، لا يوصى بتشغيل أحمال الإنتاج ذات الحالة الخاصة على مثل هذه الآلات!)
الميزات المعلن عنها ومزايا جوجل
عند النظر إلى الميزات المختلفة المُعلن عنها عبر الإنترنت ، يبدو أن هناك ارتباطًا بين المدة التي ظل فيها إصدار Kubernetes المُدار في السوق وعدد الميزات. كما ذكرنا ، يبدو أن Google كانت البادئ في مشروع Kubernetes ميزة لا يمكن إنكارها ، مما أدى إلى تكامل أفضل وأقوى مع النظام الأساسي السحابي الخاص بها.
لكن لا ينبغي الاستهانة بـ AKS و EKS مع نضوجهما ؛ يمكن لكليهما الاستفادة من ميزاتهما الفريدة. على سبيل المثال ، AWS هي الوحيدة التي تمتلك تكاملًا للعقدة المعدنية ، كما أنها تضم أكبر عدد من التطبيقات في سوقها.
الآن بعد أن أصبحت الميزات المعلن عنها لكل عرض من Kubernetes واضحة ، فلنقم بغطس أعمق مع بعض الاختبارات العملية.
Kubernetes: AWS مقابل GCP مقابل Azure في الممارسة
الإعلان شيء واحد ، ولكن كيف يمكن مقارنة المنصات المختلفة عندما يتعلق الأمر بخدمة أحمال الإنتاج؟ بصفتي مهندسًا سحابيًا ، فأنا أعلم أهمية المدة التي يستغرقها إنتاج وإزالة مجموعة عند فرض البنية التحتية كرمز. لكنني أردت أيضًا استكشاف إمكانيات كل CLI والتعليق على مدى سهولة (أو عدم سهولة) قيام كل مزود خدمة سحابية بإنشاء مجموعة.
تجربة مستخدم إنشاء الكتلة
AKS
في AKS ، يشبه إنتاج الكتلة إنشاء مثيل في AWS. ابحث فقط عن قائمة AKS وانتقل إلى سلسلة من القوائم المختلفة. بمجرد التحقق من صحة التكوين ، يمكن إنشاء الكتلة ، وهي عملية من خطوتين. إنه أمر بسيط للغاية ، ويمكن للمهندسين تشغيل مجموعة بسهولة وسرعة بالإعدادات الافتراضية.
EKS
يعد إنشاء الكتلة بالتأكيد أكثر تعقيدًا على EKS مقابل AKS. بادئ ذي بدء ، وبشكل افتراضي ، تتطلب AWS رحلة إلى IAM أولاً لإنشاء دور جديد لطائرة التحكم Kubernetes وتعيين المهندس لها. من المهم أن نلاحظ أيضًا أن إنشاء هذه المجموعة لا يشمل إنشاء العقد ، لذلك عندما قمت بقياس 11 دقيقة في المتوسط ، يكون هذا فقط للإنشاء الرئيسي. يعد إنشاء مجموعة العقدة خطوة أخرى للمسؤول ، حيث يحتاج مرة أخرى إلى دور للعاملين مع ثلاث سياسات ضرورية يتم إجراؤها عبر لوحة تحكم IAM.
حارس مرمى
بالنسبة لي ، فإن تجربة إنشاء مجموعة يدويًا هي الأكثر متعة في GKE. بعد العثور على Kubernetes Engine في Google Cloud Console ، انقر لإنشاء مجموعة. تظهر فئات مختلفة من الإعدادات في قائمة على اليسار. ستعمل Google على ملء المجموعة الجديدة مسبقًا بمجموعة عقدة افتراضية قابلة للتعديل بسهولة. أخيرًا وليس آخرًا ، تتمتع GKE بأسرع وقت لتكاثر المجموعات ، وهو ما يقودنا إلى الجدول التالي.
حان الوقت لتفرخ عنقود
| جانب الخدمة | AKS | EKS | حارس مرمى |
|---|---|---|---|
| بحجم | 3 عقد (Ds2-v2) ، تحتوي كل منها على وحدتي vCPU و 7 غيغابايت من ذاكرة الوصول العشوائي | 3 عقد t3.كبير | 3 عقد n1-standard-2 |
| الوقت (م: ث) | متوسط 5:45 لمجموعة كاملة | 11:06 لـ master plus 2:40 لمجموعة العقدة (بإجمالي 13:46 لمجموعة كاملة) | متوسط 2:42 لمجموعة كاملة |
أجريت هذه الاختبارات في نفس المنطقة (فرانكفورت وأوروبا الغربية لـ AKS) لإزالة التأثير المحتمل لهذا الاختلاف على وقت التفريخ. حاولت أيضًا تحديد الحجم نفسه للعقد للمجموعة: ثلاث عقد ، لكل منها وحدتا vCPU وسبعة أو ثمانية غيغابايت من الذاكرة ، وحجم قياسي لتشغيل حمل صغير على Kubernetes وبدء التجربة. لقد أنشأت كل مجموعة ثلاث مرات لحساب متوسط.
في هذه الاختبارات ، ظل GKE في طريقه إلى الأمام مع وقت وضع البيض دائمًا أقل من ثلاث دقائق.
Kubernetes: AWS مقابل GCP مقابل Azure CLI نظرة عامة
لا يتم إنشاء جميع CLIs على قدم المساواة ، ولكن في هذه الحالة ، تكون كل CLIs الثلاثة في الواقع وحدات من CLI أكبر. كيف يبدو بدء العمل باستخدام سلسلة أدوات CLI الخاصة بكل مزود خدمة سحابية؟
AKS CLI (عبر az )
بعد تثبيت أدوات az ، ثم وحدة AKS (عبر az aks install-cli ) ، يحتاج المهندسون إلى تخويل CLI للتواصل مع حساب Azure الخاص بالمشروع. هذه مسألة الحصول على بيانات الاعتماد لتحديث ملف kubeconfig المحلي عبر الحصول على بيانات اعتماد بسيطة من az aks get-credentials --resource-group myResourceGroup --name myAKSCluster .
وبالمثل ، لإنشاء كتلة: az aks create --resource-group myResourceGroup --name myAKSCluster
EKS CLI (عبر aws أو eksctl )
في AWS ، نجد نهجًا مختلفًا - هناك نوعان من أدوات CLI الرسمية المختلفة لإدارة مجموعات EKS. كما هو الحال دائمًا ، يمكن aws الاتصال بموارد AWS ، لا سيما المجموعات. يمكن الحصول على بيانات الاعتماد في kubeconfig المحلي من خلال: aws eks update-kubeconfig --name cluster-test .
ومع ذلك ، يمكن للمهندسين أيضًا استخدام eksctl ، الذي طورته Weaveworks وكُتب بلغة Go ، لإنشاء وإدارة مجموعة EKS بسهولة. تتمثل إحدى المزايا الرئيسية التي يوفرها EKS لمهندسي السحابة في أنه يمكنهم دمجها مع ملفات تكوين YAML لإنشاء بنية تحتية كرمز (IaC) نظرًا لأنها تعمل مع CloudFormation. إنها بالتأكيد أحد الأصول التي يجب مراعاتها عند دمج مجموعة EKS في بنية تحتية أكبر على AWS.
يعد إنشاء كتلة عبر eksctl سهلاً مثل eksctl create cluster ، ولا توجد معلمات أخرى مطلوبة.
GKE CLI (عبر gcloud )
بالنسبة إلى GKE ، الخطوات متشابهة جدًا: تثبيت gcloud ، ثم المصادقة عبر gcloud init . الاحتمالات من هناك: يمكن للمهندسين إنشاء أو حذف أو وصف أو الحصول على بيانات اعتماد أو تغيير حجم أو تحديث أو ترقية مجموعة أو قائمة المجموعات.
بناء الجملة لإنشاء كتلة باستخدام gcloud واضح ومباشر: gcloud container clusters create myGCloudCluster --num-nodes=1
AKS مقابل EKS مقابل GKE: نتائج اختبار القيادة
من الناحية العملية ، يمكننا أن نرى أن GKE هو بالتأكيد الأسرع في تدوير مجموعة أساسية ، من حيث بساطة وحدة التحكم ووقت تفرخ الكتلة. UX-wise ، مع وجود زر الاتصال بجوار المجموعة ، مما يجعلها أسهل للاتصال بالعنقود أيضًا.
فيما يتعلق بأدوات CLI ، قام موفرو السحابة الثلاثة بتنفيذ وظائف مماثلة ؛ ومع ذلك ، يمكننا التركيز على الأداة الإضافية التي توفرها Weaveworks لـ EKS. eksctl هي الأداة المثالية بالنسبة لك لتنفيذ البنية التحتية كرمز فوق بنية AWS الأساسية الموجودة مسبقًا ، والجمع بين الخدمات الأخرى مع EKS.
تقدم عروض Kubernetes المُدارة إلى الأمام: AWS مقابل GCP مقابل Azure
بالنسبة لأولئك الذين بدأوا للتو في عالم Kubernetes ، فإن تطبيق go-to بالنسبة لي هو GKE ، لأنه الأكثر مباشرة. إنه سهل الإعداد ، ويحتوي على UX بسيط وسريع للتكاثر ، وهو مدمج جيدًا في نظام Google Cloud Platform البيئي.
على الرغم من أن AWS كانت آخر من انضم إلى السباق ، إلا أنها تتمتع ببعض المزايا التي لا يمكن إنكارها ، مثل العقد المعدنية العارية والحقيقة البسيطة المتمثلة في أنها تتكامل مع المزود الذي يتمتع بأكبر مشاركة ذهنية.
أخيرًا ، حققت AKS تقدمًا كبيرًا منذ إنشائها. من المحتمل ألا تستغرق الأدوات وتكافؤ الميزات وقتًا طويلاً ، مع ترك مساحة في عملية الابتكار. وكما هو الحال مع أي عرض Kubernetes مُدار ، سيكون التكامل نقطة بيع لأولئك الموجودين بالفعل على النظام الأساسي الأصلي.
بمجرد أن يختار الفريق موفر السحابة Kubernetes ، قد يكون من المثير للاهتمام إلقاء نظرة على تجارب الفرق الأخرى ، وخاصة حالات الفشل. تعتبر عمليات ما بعد الوفاة هذه انعكاسًا لحالات العالم الحقيقي — ودائمًا ما تكون نقطة انطلاق جيدة لتطوير أفضل الممارسات المتطورة الخاصة بالفرد. إنني أتطلع إلى تعليقاتكم أدناه!
