K8'ler/Kubernetes: AWS ve GCP ve Azure
Yayınlanan: 2022-03-11Kubernetes (genellikle "K8'ler" olarak adlandırılır) konteyner düzenleme araçları savaşını yıllar önce kazandı. Bununla birlikte, bugün Kubernetes'i uygulamanın ve çeşitli altyapılarla ve birçok araçla çalışmasını sağlamanın hala birçok yolu vardır - bazıları diğerlerinden daha iyi korunur. Belki de bu cephedeki en ilginç gelişme, en iyi bulut sağlayıcılarının kendi yönetilen Kubernetes sürümlerini yayınlamaya karar vermiş olmalarıdır:
- Microsoft Azure, Azure Kubernetes Hizmetini (AKS) sunar
- AWS, Amazon Elastic Kubernetes Hizmetini (EKS) sunar
- Google Cloud, Google Kubernetes Engine'i (GKE) sunar
DevOps perspektifinden bakıldığında, bu platformlar neler sunuyor? Sözlerini yerine getiriyorlar mı? Oluşturma süreleri ve diğer karşılaştırma ölçütleri nasıl karşılaştırılır? Kendi platformlarıyla, özellikle de CLI araçlarıyla ne kadar iyi entegre oluyorlar? Onları korumak ve onlarla çalışmak nasıl bir şey? Aşağıda, bu soruları ve daha fazlasını inceleyeceğiz.
Not: Okumadan önce Kubernetes kümesi kavramlarının açıklanmasını isteyen okuyucular için Dmitriy Kononov mükemmel bir giriş sunuyor.
AKS vs. EKS vs. GKE: Reklamı Yapılan Özellikler
Her bir yönetilen Kubernetes sürümü için kullanılabilen farklı özellikleri silolar halinde gruplandırmaya karar verdik:
- Genel Bakış
- ağ
- Ölçeklenebilirlik ve Performans
- Güvenlik ve İzleme
- Ekosistem
- fiyatlandırma
Not: Bulut sağlayıcıları ürünlerini düzenli olarak güncelledikçe bu ayrıntılar zaman içinde değişebilir.
Genel Bakış
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
Çıkış Yılı | 2017 | 2018 | 2014 |
En son sürüm | 1.15.11 (varsayılan) - 1.18.2 (önizleme) | 1.16.8 (varsayılan) | 1.14.10 (varsayılan) - 1.16.9 |
Spesifik Bileşenler | oms-ajan, tünel önü | aws düğümü | fluentd, fluentd-gcp-scaler, olay-dışa aktarıcı, l7-varsayılan-arka uç |
Kubernetes Kontrol Düzlemi Yükseltmesi | Manuel | Manuel | Otomatik (varsayılan) veya manuel |
Çalışan Yükseltmeleri | Manuel | Evet (yönetilen düğüm gruplarıyla kolay) | Evet: otomatik ve manuel, ince ayar mümkün |
SLA | Kullanılabilirlik alanı ile yüzde 99,95, olmadan yüzde 99,9 | EKS (ana) için yüzde 99,9, EC2 (düğümler) için yüzde 99,99 | Bir bölge içinde yüzde 99,95, bir bölge içinde yüzde 99,5 |
Yerel Knative Desteği | Numara | Numara | Hayır (ancak yerel Istio kurulumu) |
Kubernetes Kontrol Uçağı Fiyatı | Özgür | 0,10 USD/saat | 0,10 USD/saat |
Kubernetes'in kendisi Google'ın projesiydi, bu nedenle 2014'te barındırılan bir sürümü ilk önerenlerin onlar olması mantıklı.
Burada karşılaştırılan üçünden Azure, AKS'nin ardından geldi ve geliştirmek için biraz zamanı vardı: Birkaç yıl önce Azure'da Kubernetes sağlamak için kullanılmış olan acs-enginesini hatırlarsanız, Microsoft'un onun yerine geçmek için gösterdiği çabayı takdir edeceksiniz. aks-motor.
AWS, kendi sürümü olan EKS'yi piyasaya süren son kişiydi, bu nedenle bazen özellik cephesinde geride gibi görünebilir, ancak yetişiyorlar.
Fiyatlandırma açısından, elbette, işler her zaman hareket halindedir ve Google, Haziran 2020'den itibaren geçerli olmak üzere 0,10 ABD doları/saat fiyat noktasında AWS'ye katılmaya karar verdi. Azure, AKS hizmetini ücretsiz olarak vererek burada yabancıdır, ancak bunun nasıl yapılacağı açık değildir. sürebilecek kadar uzun.
Diğer bir ana fark, kümenin yükseltme özelliğinde yatmaktadır. En otomatik yükseltmeler GKE'dedir ve varsayılan olarak açıktır. Bununla birlikte, AKS ve EKS, her ikisinin de ana veya çalışan düğümleri yükseltebilmek için manuel istekler gerektirmesi açısından burada birbirine benzer.
ağ
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
Ağ Politikaları | Evet: Azure Ağ İlkeleri veya Calico | Calico'yu yüklemeniz gerekiyor | Evet: Calico aracılığıyla yerel |
Yük dengeleme | Temel veya standart SKU yük dengeleyici | Klasik ve ağ yük dengeleyici | Container'da yerel yük dengeleyici |
Servis Ağı | Kutudan çıkan yok | AWS App Mesh (Envoy'a dayalı) | Istio (kutudan çıktı, ancak beta) |
DNS Desteği | CoreDNS özelleştirmesi | VPC içinde CoreDNS + Route53 | CoreDNS + Google Bulut DNS |
Şeylerin ağ tarafında, üç bulut sağlayıcısı birbirine çok yakındır. Hepsi, örneğin, müşterilerin ağ ilkelerini Calico ile uygulamalarına izin verir. Yük dengelemeyle ilgili olarak, hepsi kendi yük dengeleyici kaynaklarıyla entegrasyonlarını uygular ve mühendislere ne kullanacakları konusunda seçim hakkı verir.
Burada bulunan temel fark, hizmet ağının katma değerine dayanmaktadır. AKS, kutudan çıkan herhangi bir hizmet ağını desteklemez (ancak mühendisler Istio'yu manuel olarak kurabilirler). AWS, App Mesh adlı kendi hizmet ağını geliştirmiştir. Son olarak, Google, müşterilerin kümeyi oluştururken doğrudan ekleyebilecekleri Istio ile (hala beta sürümünde olsa da) kendi entegrasyonunu yayınladı.
En iyi bahis: GKE
Ölçeklenebilirlik ve Performans
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
Çıplak Metal Düğümler | Numara | Evet | Numara |
Küme Başına Maksimum Düğüm | 1.000 | 1.000 | 5.000 |
Yüksek Kullanılabilirlik Kümesi | Numara | Kontrol planı için evet, çalışanlar için A'dan Z'ye el kitabı | Evet, bölgesel küme aracılığıyla ana ve işçi çoğaltılır |
Otomatik Ölçeklendirme | Evet, küme otomatik ölçekleyici aracılığıyla | Evet, küme otomatik ölçekleyici aracılığıyla | Evet, küme otomatik ölçekleyici aracılığıyla |
Dikey Kapsül Otomatik Ölçekleyici | Numara | Evet | Evet |
Düğüm Havuzları | Evet | Evet | Evet |
GPU Düğümleri | Evet | Evet | Evet |
şirket içi | Azure ARC (beta) aracılığıyla kullanılabilir | Numara | Anthos GKE aracılığıyla şirket içi GKE |
GKE ile AKS ile EKS performansı ve ölçeklenebilirliği arasında GKE önde görünüyor. Gerçekten de, en fazla sayıda düğümü (5.000) destekler ve bir kümenin nasıl düzgün şekilde ölçeklendirileceği konusunda kapsamlı belgeler sunar. Yüksek kullanılabilirlik için tüm özellikler mevcuttur ve ince ayar yapmak kolaydır. Dahası, GKE kısa süre önce GKE ve işlevleri etrafında bir ekosistem oluşturmaya yönelik bir proje olan Anthos'u piyasaya sürdü; Anthos ile GKE'yi şirket içinde dağıtabilirsiniz.
Ancak AWS'nin önemli bir avantajı vardır: Çıplak donanım düğümlerinin Kubernetes kümenizi çalıştırmasına izin veren tek odur.
Haziran 2020 itibariyle, AKS'nin ana için yüksek kullanılabilirliği yoktur ve bu da dikkate alınması gereken önemli bir husustur. Ancak, her zaman olduğu gibi, bu yakında değişebilir.
En iyi bahis: GKE
Güvenlik ve İzleme
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
Uygulama Sırları Şifrelemesi | Numara | Evet, AWS KMS ile mümkün | Evet, Cloud KMS ile mümkün |
uyma | HIPAA, SOC, ISO, PCI DSS | HIPAA, SOC, ISO, PCI DSS | HIPAA, SOC, ISO, PCI DSS |
RBAC | Evet | Evet ve IAM ile güçlü entegrasyon | Evet |
izleme | Azure İzleyici kapsayıcı sistem durumu özelliği | Cloudwatch'a bağlı Kubernetes kontrol düzlemi izleme, düğümler için Container Insights Metrics | Kubernetes Engine İzleme ve Prometheus ile entegrasyon |
Uyumluluk açısından, üç bulut sağlayıcısı da eşdeğerdir. Ancak güvenlik açısından EKS ve GKE, gömülü anahtar yönetimi hizmetleriyle başka bir güvenlik katmanı sağlar.
İzlemeye gelince, Azure ve Google Cloud, Kubernetes çevresinde kendi izleme ekosistemlerini sağlar. Google'dan gelenin yakın zamanda Kubernetes için özel olarak tasarlanmış Kubernetes Engine Monitoring'i kullanacak şekilde güncellendiğini belirtmekte fayda var.
Azure, başlangıçta Kubernetes olmayan temel bir kapsayıcı ekosistemi için yapılmış kendi kapsayıcı izleme sistemini sağlar. Haziran 2020 itibarıyla, Kubernetes'e özgü bazı metrikler ve kaynaklar (küme sağlığı, dağıtımlar) için önizleme modunda izleme eklediler.
AWS, kontrol düzlemi için doğrudan Cloudwatch'da hafif izleme sunar. Çalışanları izlemek için kümeye yükleyebileceğiniz belirli bir CloudWatch aracısı aracılığıyla sağlanan Kubernetes Container Insights Metrics'i kullanabilirsiniz.
En iyi bahis: GKE
Ekosistem
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
pazar yeri | Azure Market (ancak net AKS tümleştirmesi yok) | AWS Marketplace (250'den fazla uygulama) | Google Marketplace (90'dan fazla uygulama) |
Kod Olarak Altyapı (IaC) Desteği | Terraform modülü cevaplanabilir modül | Terraform modülü cevaplanabilir modül | Terraform modülü cevaplanabilir modül |
belgeler | Zayıf ama eksiksiz ve güçlü topluluk (2.000'den fazla Yığın Taşması gönderisi) | Çok kapsamlı değil ama güçlü topluluk (1.500'den fazla Yığın Taşması gönderisi) | Kapsamlı resmi belgeler ve çok güçlü topluluk (4.000'den fazla Yığın Taşması gönderisi) |
CLI Desteği | Tamamlamak | Eksiksiz, ayrıca özel ayrı araç eksctl (aşağıda ele alınmıştır) | Tamamlamak |
Ekosistemler açısından, üç sağlayıcının farklı güçleri ve varlıkları vardır. AKS artık platformuyla ilgili çok eksiksiz belgelere sahip ve Stack Overflow'daki gönderiler açısından ikinci sırada. EKS, Stack Overflow'ta en az sayıda gönderiye sahiptir, ancak AWS Marketplace'in gücünden yararlanır. GKE, en eski platform olarak, Stack Overflow'ta en fazla gönderiye ve pazarında yeterli sayıda uygulamaya sahiptir, aynı zamanda en kapsamlı belgelere sahiptir.

En iyi bahisler: GKE ve EKS
fiyatlandırma
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
Ücretsiz Kullanım Sınırı | 170 dolar değerinde | Ücretsiz katman için uygun değil | 300 dolar değerinde |
Kubernetes Kontrol Düzlemi Maliyeti | Özgür | 0,10 USD/saat | 0,10 USD/saat (Haziran 2020) |
İndirimli Fiyat (Spot Bulut Sunucusu/Öncelikli Düğümler) | Evet | Evet | Evet |
Bir Aylık Örnek Fiyat | $342 3 D2 düğümü | 300 $ 3 t3.büyük düğüm | 190 dolar 3 n1-standart-2 düğüm |
Genel fiyatla ilgili olarak, GKE'nin herhangi bir küme için 0,10 ABD doları/saat fiyat noktasını uygulama hamlesine rağmen, açık ara en ucuz bulut olmaya devam ediyor. Bu, isteğe bağlı kaynakların aylık kullanımı belirli bir minimum düzeyi karşıladığında uygulanan, Google'a özel bir şey sayesindedir: uzun süreli kullanım indirimleri.
Örnek fiyat satırının, bulut sağlayıcısının ücretlendirebileceği Kubernetes kümesine giden trafiği hesaba katmadığını belirtmek önemlidir.
AWS'nin bir EKS kümesini test etmek için ücretsiz katmanlarının kullanılmasına izin vermemesinin nedeni, EKS'nin tX.micro katmanından daha büyük makineler gerektirmesi ve EKS saatlik fiyatlandırmasının ücretsiz katmanda olmamasıdır.
Yine de, bu yönetilen Kubernetes seçeneklerinden herhangi birini, her bir bulut sağlayıcısının spot/öncelikli düğümlerini kullanarak uygun bir yük ile test etmek yine de ekonomik olabilir; bu taktik, nihai fiyatta kolayca yüzde 80 ila 90 oranında tasarruf sağlayacaktır. (Tabii ki, bu tür makinelerde durum bilgisi olan üretim yüklerinin çalıştırılması önerilmez!)
Reklamı Yapılan Özellikler ve Google'ın Avantajı
Çevrimiçi olarak reklamı yapılan farklı özelliklere bakıldığında, yönetilen Kubernetes sürümünün ne kadar süredir piyasada olduğu ile özelliklerin sayısı arasında bir ilişki olduğu görülüyor. Bahsedildiği gibi, Google'ın Kubernetes projesinin başlatıcısı olması, kendi bulut platformuyla daha iyi ve daha güçlü entegrasyon sağlayan yadsınamaz bir avantaj gibi görünüyor.
Ama AKS ve EKS olgunlaştıkça hafife alınmamalı; her ikisi de benzersiz özelliklerinden yararlanabilir. Örneğin, çıplak metal düğüm entegrasyonuna sahip olan tek AWS'dir ve aynı zamanda pazarındaki en fazla sayıda uygulamaya sahiptir.
Artık her Kubernetes teklifi için reklamı yapılan özellikler açık olduğuna göre, bazı uygulamalı testler ile daha derin bir dalış yapalım.
Kubernetes: Uygulamada AWS ve GCP vs. Azure
Reklam bir şeydir, ancak farklı platformlar üretim yüklerine hizmet etme konusunda nasıl karşılaştırılır? Bir bulut mühendisi olarak, kod olarak altyapıyı uygularken bir kümeyi oluşturmanın ve çökertmenin ne kadar sürdüğünü biliyorum. Ama aynı zamanda her bir CLI'nin olanaklarını araştırmak ve her bulut sağlayıcısının bir küme oluşturmayı ne kadar kolay (ya da değil) yaptığı hakkında yorum yapmak istedim.
Küme Oluşturma Kullanıcı Deneyimi
AKS
AKS'de bir küme oluşturmak, AWS'de bir örnek oluşturmaya benzer. Sadece AKS menüsünü bulun ve bir dizi farklı menüden geçin. Yapılandırma doğrulandıktan sonra, iki adımlı bir işlemle küme oluşturulabilir. Çok basittir ve mühendisler, varsayılan ayarlarla bir kümeyi kolayca ve hızlı bir şekilde başlatabilir.
EKS
EKS'ye karşı AKS'de küme oluşturma kesinlikle daha karmaşıktır. Her şeyden önce ve varsayılan olarak AWS, Kubernetes kontrol düzlemi için yeni bir rol oluşturmak ve mühendisi buna atamak için önce IAM'ye bir gezi gerektirir. Bu küme oluşturma işleminin düğüm oluşturma işlemini içermediğini de belirtmek önemlidir, bu nedenle ortalama 11 dakika ölçtüğümde bu yalnızca ana oluşturma içindir. Düğüm grubu oluşturma, yönetici için başka bir adımdır ve yine IAM kontrol paneli aracılığıyla yapılması gereken üç gerekli politikayla işçiler için bir role ihtiyaç duyar.
GKE
Benim için, bir kümeyi manuel olarak oluşturma deneyimi, GKE'de en keyifli olanıdır. Google Cloud Console'da Kubernetes Engine'i bulduktan sonra, bir küme oluşturmak için tıklayın. Soldaki bir menüde farklı ayar kategorileri görünür. Google, yeni kümeyi kolayca değiştirilebilen bir varsayılan düğüm havuzuyla önceden dolduracaktır. Son olarak, GKE en hızlı küme oluşturma süresine sahiptir ve bu da bizi bir sonraki tabloya getirir.
Küme Oluşturma Zamanı
Hizmet Unsuru | AKS | EKS | GKE |
---|---|---|---|
Boyut | Her biri 2 vCPU, 7 GB RAM içeren 3 düğüm (Ds2-v2) | 3 düğüm t3.large | 3 düğüm n1-standart-2 |
Zaman (d:sn) | Tam bir küme için ortalama 5:45 | Master için 11:06 artı düğüm grubu için 2:40 (tam küme için toplam 13:46) | Tam bir küme için ortalama 2:42 |
Bu farklılığın yumurtlama süresi üzerindeki olası etkisini ortadan kaldırmak için bu testleri aynı bölgede (AKS için Frankfurt ve Batı Avrupa) gerçekleştirdim. Ayrıca küme için düğümler için aynı boyutu seçmeye çalıştım: Her biri iki vCPU ve yedi veya sekiz GB belleğe sahip üç düğüm, Kubernetes'te küçük bir yük çalıştırmak ve denemeye başlamak için standart bir boyut. Bir ortalamayı hesaplamak için her kümeyi üç kez oluşturdum.
Bu testlerde GKE, her zaman üç dakikanın altında bir yumurtlama süresiyle çok önde kaldı.
Kubernetes: AWS ve GCP ve Azure CLI'ye Genel Bakış
Tüm CLI'ler eşit yaratılmamıştır, ancak bu durumda, üç CLI'nin tümü aslında daha büyük bir CLI'nin modülleridir. Her bir bulut sağlayıcısının CLI araç zinciriyle çalışmaya başlamak nasıl bir şey?
AKS CLI ( az
aracılığıyla)
az
tooling'i ve ardından AKS modülünü ( az aks install-cli
aracılığıyla) yükledikten sonra, mühendislerin CLI'yi projenin Azure hesabıyla iletişim kurması için yetkilendirmesi gerekir. Bu, basit bir az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
aracılığıyla yerel kubeconfig dosyasını güncellemek için kimlik bilgilerini alma meselesidir.
Benzer şekilde, bir küme oluşturmak için: az aks create --resource-group myResourceGroup --name myAKSCluster
EKS CLI ( aws
veya eksctl
aracılığıyla)
AWS'de farklı bir yaklaşım buluyoruz; EKS kümelerini yönetmek için iki farklı resmi CLI aracı var. Her zaman olduğu gibi aws
, AWS kaynaklarına, özellikle de kümelere bağlanabilir. Kimlik bilgilerini yerel bir kubeconfig'e almak şu şekilde yapılabilir: aws eks update-kubeconfig --name cluster-test
.
Ancak mühendisler, bir EKS kümesini kolayca oluşturmak ve yönetmek için eksctl
tarafından geliştirilen ve Go'da yazılan eksctl'yi de kullanabilir. EKS'nin bulut mühendislerine sağladığı büyük bir nimet, CloudFormation ile çalıştığı için kod olarak altyapı (IaC) oluşturmak için onu YAML yapılandırma dosyalarıyla birleştirebilmeleridir. Bir EKS kümesini AWS'deki daha büyük altyapıya entegre ederken kesinlikle dikkate alınması gereken bir varlıktır.
eksctl
aracılığıyla bir küme oluşturmak, eksctl create cluster
kadar kolaydır, başka parametre gerekmez.
GKE CLI ( gcloud
aracılığıyla)
GKE için adımlar çok benzer: gcloud
yükleyin, ardından gcloud init
aracılığıyla kimlik doğrulaması yapın. Oradaki olanaklar: Mühendisler bir küme oluşturabilir, silebilir, tanımlayabilir, kimlik bilgilerini alabilir, yeniden boyutlandırabilir, güncelleyebilir veya yükseltebilir veya kümeleri listeleyebilir.
gcloud
ile küme oluşturma sözdizimi basittir: gcloud container clusters create myGCloudCluster --num-nodes=1
AKS - EKS - GKE: Test Sürüşü Sonuçları
Pratikte, hem konsol basitliği hem de küme oluşturma süresi açısından GKE'nin kesinlikle temel bir kümeyi en hızlı şekilde döndürdüğünü görebiliriz. UX açısından, kümenin yanındaki bağlan düğmesiyle bir kümeye bağlanmayı da en kolay hale getirir.
CLI araçları açısından, üç bulut sağlayıcısı benzer işlevleri uygulamıştır; ancak Weaveworks tarafından EKS için sağlanan ekstra araca ağırlık verebiliriz. eksctl
, diğer hizmetleri EKS ile birleştirerek önceden var olan AWS altyapınızın üzerine kod olarak altyapıyı uygulamanız için mükemmel bir araçtır.
Yönetilen Kubernetes Teklifleri İlerlemeye Devam Ediyor: AWS ve GCP ve Azure
Kubernetes dünyasına yeni başlayanlar için benim için en kolay uygulama GKE'dir, çünkü bu en basitidir. Kurulumu kolaydır, yumurtlama için basit ve hızlı bir UX'e sahiptir ve Google Cloud Platform ekosistemine iyi bir şekilde entegre edilmiştir.
AWS, yarışa katılan son kişi olmasına rağmen, çıplak metal düğümler ve en büyük zihin payına sahip sağlayıcı ile entegre olması gibi birkaç inkar edilemez avantajı vardır.
Son olarak, AKS kuruluşundan bu yana büyük ilerleme kaydetmiştir. Takım ve özellik paritesi büyük olasılıkla uzun sürmeyecek, bu arada süreçte yenilik yapmak için yer bırakacak. Tüm yönetilen Kubernetes tekliflerinde olduğu gibi, halihazırda ana platformda bulunanlar için entegrasyon bir satış noktası olacaktır.
Bir ekip bir Kubernetes bulut sağlayıcısı seçtiğinde, diğer ekiplerin deneyimlerine, özellikle de başarısızlıklarına bakmak ilginç olabilir. Bu otopsiler, gerçek dünyadaki vakaların bir yansımasıdır ve her zaman kişinin kendi en son en iyi uygulamalarını geliştirmesi için iyi bir başlangıç noktasıdır. Aşağıda yorumlarınızı bekliyorum!