K8s/Kubernetes: AWS vs. GCP vs. Azure

Diterbitkan: 2022-03-11

Kubernetes (seringkali bergaya "K8") memenangkan pertempuran alat orkestrasi kontainer bertahun-tahun yang lalu. Namun demikian, masih ada banyak cara untuk mengimplementasikan Kubernetes saat ini dan membuatnya bekerja dengan berbagai infrastruktur, dan banyak alat—beberapa lebih terpelihara daripada yang lain. Mungkin perkembangan yang paling menarik di depan itu, bagaimanapun, adalah bahwa penyedia cloud teratas telah memutuskan untuk merilis versi Kubernetes terkelola mereka sendiri:

  • Microsoft Azure menawarkan Layanan Azure Kubernetes (AKS)
  • AWS menawarkan Amazon Elastic Kubernetes Service (EKS)
  • Google Cloud menawarkan Google Kubernetes Engine (GKE)

Dari perspektif DevOps, apa yang ditawarkan platform ini? Apakah mereka memenuhi janji mereka? Bagaimana perbandingan waktu pembuatan dan tolok ukur lainnya? Seberapa baik mereka berintegrasi dengan platform masing-masing, terutama alat CLI mereka? Bagaimana rasanya memelihara dan bekerja dengan mereka? Di bawah ini, kami akan menyelidiki pertanyaan-pertanyaan ini, dan banyak lagi.

Catatan: Untuk pembaca yang ingin konsep cluster Kubernetes dijelaskan sebelum mereka membaca, Dmitriy Kononov menawarkan pengantar yang sangat baik.

AKS vs. EKS vs. GKE: Fitur yang Diiklankan

Kami telah memutuskan untuk mengelompokkan berbagai fitur yang tersedia untuk setiap versi Kubernetes terkelola ke dalam silo:

  • Tinjauan Global
  • Jaringan
  • Skalabilitas dan Performa
  • Keamanan dan Pemantauan
  • ekosistem
  • harga

Catatan: Detail ini dapat berubah seiring waktu karena penyedia cloud memperbarui produk mereka secara berkala.

Tinjauan Global

Aspek Layanan AKS EKS GKE
Tahun Dirilis 2017 2018 2014
Versi terbaru 1.15.11 (default) - 1.18.2 (pratinjau) 1.16.8 (bawaan) 1.14.10 (default) - 1.16.9
Komponen Spesifik om-agent, tunnelfront aws-node fasih, fasih-gcp-scaler, eksportir acara, l7-default-backend
Upgrade Pesawat Kontrol Kubernetes manual manual Otomatis (default) atau manual
Peningkatan Pekerja manual Ya (mudah dengan grup simpul terkelola) Ya: otomatis dan manual, fine-tuning mungkin
SLA 99,95 persen dengan zona ketersediaan, 99,9 persen tanpa 99,9 persen untuk EKS (master), 99,99 persen untuk EC2 (node) 99,95 persen dalam satu wilayah, 99,5 persen dalam satu zona
Dukungan Asli Knative Tidak Tidak Tidak (tetapi instal Istio asli)
Harga Pesawat Kontrol Kubernetes Gratis $0,10/jam $0,10/jam

Kubernetes sendiri adalah proyek Google, jadi masuk akal jika mereka adalah yang pertama mengusulkan versi yang dihosting pada tahun 2014.

Dari tiga yang dibandingkan di sini, Azure berada di urutan berikutnya dengan AKS dan memiliki beberapa waktu untuk ditingkatkan: Jika Anda ingat ac-engine, yang telah digunakan untuk menyediakan Kubernetes di Azure beberapa tahun yang lalu, Anda akan menghargai upaya Microsoft dalam penggantiannya, mesin-aks.

AWS adalah yang terakhir meluncurkan versinya sendiri, EKS, sehingga terkadang terlihat tertinggal di bagian depan fitur, tetapi mereka mengejar.

Dalam hal harga, tentu saja, segala sesuatunya selalu bergerak, dan Google memutuskan untuk bergabung dengan AWS dengan harga $0,10/jam, efektif Juni 2020. Azure adalah pihak luar di sini dengan memberikan layanan AKS secara gratis, tetapi tidak jelas caranya lama yang mungkin bertahan.

Perbedaan utama lainnya terletak pada fitur upgrade cluster. Upgrade paling otomatis ada di GKE, dan diaktifkan secara default. Namun, AKS vs. EKS mirip satu sama lain di sini, dalam arti keduanya memerlukan permintaan manual untuk dapat mengupgrade node master atau pekerja.

Jaringan

Aspek Layanan AKS EKS GKE
Kebijakan Jaringan Ya: Kebijakan Jaringan Azure atau Calico Perlu menginstal Calico Ya: Asli melalui Calico
Penyeimbang beban Penyeimbang beban SKU dasar atau standar Penyeimbang beban klasik dan jaringan Penyeimbang beban bawaan kontainer
Jala Layanan Tidak ada yang keluar dari kotak AWS App Mesh (berdasarkan Utusan) Istio (di luar kotak, tetapi beta)
Dukungan DNS Kustomisasi CoreDNS CoreDNS + Route53 di dalam VPC CoreDNS + Google Cloud DNS

Di sisi jaringan, ketiga penyedia cloud sangat dekat satu sama lain. Mereka semua membiarkan pelanggan menerapkan kebijakan jaringan dengan Calico, misalnya. Mengenai penyeimbangan beban, mereka semua menerapkan integrasi mereka dengan sumber daya penyeimbang beban mereka sendiri dan memberi para insinyur pilihan apa yang akan digunakan.

Perbedaan utama yang ditemukan di sini didasarkan pada nilai tambah dari mesh layanan. AKS tidak mendukung mesh layanan apa pun di luar kotak (meskipun para insinyur dapat menginstal Istio secara manual). AWS telah mengembangkan mesh layanannya sendiri yang disebut App Mesh. Terakhir, Google telah merilis integrasinya sendiri dengan Istio (meskipun masih dalam versi beta) yang dapat ditambahkan langsung oleh pelanggan saat membuat cluster.

Taruhan terbaik: GKE

Skalabilitas dan Performa

Aspek Layanan AKS EKS GKE
Node Logam Telanjang Tidak Ya Tidak
Maks Node per Cluster 1.000 1.000 5.000
Cluster Ketersediaan Tinggi Tidak Ya untuk rencana kontrol, manual di seluruh AZ untuk pekerja Ya melalui cluster regional, master dan pekerja direplikasi
Penskalaan Otomatis Ya melalui autoscaler cluster Ya melalui autoscaler cluster Ya melalui autoscaler cluster
Penskala Otomatis Pod Vertikal Tidak Ya Ya
Kumpulan Node Ya Ya Ya
Node GPU Ya Ya Ya
Di tempat Tersedia melalui Azure ARC (beta) Tidak GKE lokal melalui Anthos GKE

Mengenai kinerja dan skalabilitas GKE vs. AKS vs. EKS, GKE tampaknya lebih unggul. Memang, ini mendukung jumlah node terbesar (5.000) dan menawarkan dokumentasi ekstensif tentang cara menskalakan cluster dengan benar. Semua fitur untuk ketersediaan tinggi tersedia dan mudah untuk disesuaikan. Terlebih lagi, GKE baru-baru ini merilis Anthos, sebuah proyek untuk menciptakan ekosistem di sekitar GKE dan fungsinya; dengan Anthos, Anda dapat men-deploy GKE secara lokal.

Namun, AWS memang memiliki keunggulan utama: Ini adalah satu-satunya yang memungkinkan node bare-metal menjalankan cluster Kubernetes Anda.

Pada Juni 2020, AKS tidak memiliki ketersediaan tinggi untuk master, yang merupakan aspek penting untuk dipertimbangkan. Tapi, seperti biasa, itu bisa segera berubah.

Taruhan terbaik: GKE

Keamanan dan Pemantauan

Aspek Layanan AKS EKS GKE
Enkripsi Rahasia Aplikasi Tidak Ya, mungkin melalui AWS KMS Ya, mungkin melalui Cloud KMS
Kepatuhan HIPAA, SOC, ISO, PCI DSS HIPAA, SOC, ISO, PCI DSS HIPAA, SOC, ISO, PCI DSS
RBAC Ya Ya, dan integrasi yang kuat dengan IAM Ya
Pemantauan Fitur kesehatan wadah Monitor Azure Pemantauan bidang kontrol Kubernetes terhubung ke Cloudwatch, Metrik Wawasan Kontainer untuk node Pemantauan dan integrasi Kubernetes Engine dengan Prometheus

Dalam hal kepatuhan, ketiga penyedia cloud itu setara. Namun, dalam hal keamanan, EKS dan GKE memberikan lapisan keamanan lain dengan layanan manajemen kunci yang disematkan.

Untuk pemantauan, Azure dan Google Cloud menyediakan ekosistem pemantauan mereka sendiri di sekitar Kubernetes. Perlu dicatat bahwa yang dari Google baru-baru ini diperbarui untuk menggunakan Kubernetes Engine Monitoring, yang dirancang khusus untuk Kubernetes.

Azure menyediakan sistem pemantauan containernya sendiri, yang awalnya dibuat untuk ekosistem container dasar non-Kubernetes. Mereka telah menambahkan pemantauan untuk beberapa metrik dan sumber daya khusus Kubernetes (kesehatan cluster, penerapan)—dalam mode pratinjau, mulai Juni 2020.

AWS menawarkan pemantauan ringan untuk bidang kontrol langsung di Cloudwatch. Untuk memantau pekerja, Anda dapat menggunakan Kubernetes Container Insights Metrics yang disediakan melalui agen CloudWatch tertentu yang dapat Anda instal di cluster.

Taruhan terbaik: GKE

ekosistem

Aspek Layanan AKS EKS GKE
pasar Azure Marketplace (tetapi tidak ada integrasi AKS yang jelas) AWS Marketplace (250+ aplikasi) Google Marketplace (90+ aplikasi)
Dukungan Infrastruktur sebagai Kode (IaC) Modul Terraform
Modul yang memungkinkan
Modul Terraform
Modul yang memungkinkan
Modul Terraform
Modul yang memungkinkan
Dokumentasi Komunitas yang lemah tetapi lengkap dan kuat (2.000+ pos Stack Overflow) Komunitas yang tidak terlalu menyeluruh tetapi kuat (1.500+ postingan Stack Overflow) Dokumentasi resmi yang luas dan komunitas yang sangat kuat (4.000+ postingan Stack Overflow)
Dukungan CLI Menyelesaikan Lengkap, ditambah eksctl alat khusus yang terpisah (dibahas di bawah) Menyelesaikan

Dari segi ekosistem, ketiga provider tersebut memiliki kekuatan dan aset yang berbeda. AKS sekarang memiliki dokumentasi yang sangat lengkap di sekitar platformnya dan merupakan yang kedua dalam hal posting di Stack Overflow. EKS memiliki jumlah posting paling sedikit di Stack Overflow, tetapi mendapat manfaat dari kekuatan AWS Marketplace. GKE, sebagai platform tertua, memiliki posting terbanyak di Stack Overflow, dan jumlah aplikasi yang layak di pasarnya, tetapi juga dokumentasi terlengkap.

Taruhan terbaik: GKE dan EKS

harga

Aspek Layanan AKS EKS GKE
Batas Penggunaan Gratis senilai $170 Tidak memenuhi syarat untuk tingkat gratis senilai $300
Biaya Pesawat Kontrol Kubernetes Gratis $0,10/jam $0,10/jam (Juni 2020)
Harga yang Dikurangi (Instans Spot/Node yang Dapat Diakhiri) Ya Ya Ya
Contoh Harga untuk Satu Bulan $342
3 D2 node
$300
3 t3.node besar
$190
3 n1-standar-2 node

Mengenai harga secara keseluruhan, bahkan dengan langkah GKE untuk menerapkan titik harga $0,10/jam untuk cluster mana pun, sejauh ini GKE tetap menjadi cloud termurah. Ini berkat sesuatu yang khusus untuk Google—diskon penggunaan berkelanjutan, yang diterapkan setiap kali penggunaan bulanan sumber daya sesuai permintaan memenuhi jumlah minimum tertentu.

Penting untuk dicatat bahwa contoh baris harga tidak memperhitungkan lalu lintas ke kluster Kubernetes yang dapat dikenakan biaya oleh penyedia cloud.

Alasan AWS tidak mengizinkan penggunaan tingkat gratis mereka untuk menguji klaster EKS adalah karena EKS memerlukan mesin yang lebih besar daripada tingkat tX.micro, dan harga per jam EKS tidak ada dalam tingkat gratis.

Namun demikian, masih ekonomis untuk menguji salah satu opsi Kubernetes yang dikelola ini dengan beban yang layak menggunakan node spot/preemptible dari setiap penyedia cloud—taktik itu akan dengan mudah menghemat 80 hingga 90 persen dari harga akhir. (Tentu saja, tidak disarankan untuk menjalankan beban produksi stateful pada mesin seperti itu!)

Fitur yang Diiklankan dan Keunggulan Google

Saat melihat berbagai fitur yang diiklankan secara online, tampaknya ada korelasi antara berapa lama versi Kubernetes yang dikelola telah beredar di pasar dan jumlah fitur. Seperti yang disebutkan, Google yang telah menjadi penggagas proyek Kubernetes tampaknya merupakan keuntungan yang tidak dapat disangkal, menghasilkan integrasi yang lebih baik dan lebih kuat dengan platform cloud-nya sendiri.

Tapi AKS dan EKS tidak bisa diremehkan saat mereka dewasa; keduanya dapat memanfaatkan fitur unik mereka. Misalnya, AWS adalah satu-satunya yang memiliki integrasi node bare-metal, dan juga menawarkan jumlah aplikasi tertinggi di pasarnya.

Sekarang setelah fitur yang diiklankan untuk setiap penawaran Kubernetes sudah jelas, mari kita selami lebih dalam dengan beberapa tes langsung.

Kubernetes: AWS vs. GCP vs. Azure dalam Praktik

Periklanan adalah satu hal, tetapi bagaimana platform yang berbeda dibandingkan dalam hal melayani beban produksi? Sebagai seorang insinyur cloud, saya tahu pentingnya berapa lama waktu yang dibutuhkan untuk menelurkan dan menghapus klaster saat menerapkan infrastruktur sebagai kode. Tetapi saya juga ingin menjelajahi kemungkinan dari setiap CLI dan mengomentari betapa mudah (atau tidak) setiap penyedia cloud membuatnya untuk menelurkan sebuah cluster.

Pengalaman Pengguna Pembuatan Cluster

AKS

Di AKS, memunculkan cluster mirip dengan membuat instance di AWS. Temukan saja menu AKS dan telusuri berbagai menu yang berbeda. Setelah konfigurasi divalidasi, cluster dapat dibuat, proses dua langkah. Ini sangat mudah, dan engineer dapat dengan mudah dan cepat meluncurkan cluster dengan pengaturan default.

EKS

Pembuatan cluster jelas lebih kompleks pada EKS vs. AKS. Pertama-tama, dan secara default, AWS memerlukan perjalanan ke IAM terlebih dahulu untuk membuat peran baru untuk bidang kontrol Kubernetes dan menetapkan insinyur ke dalamnya. Penting untuk dicatat juga bahwa pembuatan cluster ini tidak termasuk pembuatan node, jadi ketika saya mengukur rata-rata 11 menit, ini hanya untuk pembuatan master. Pembuatan grup node adalah langkah lain bagi administrator, sekali lagi membutuhkan peran pekerja dengan tiga kebijakan yang diperlukan untuk dibuat melalui panel kontrol IAM.

GKE

Bagi saya, pengalaman membuat cluster secara manual paling menyenangkan di GKE. Setelah menemukan Kubernetes Engine di Google Cloud Console, klik untuk membuat cluster. Berbagai kategori pengaturan muncul di menu di sebelah kiri. Google akan mengisi cluster baru dengan kumpulan node default yang mudah dimodifikasi. Last but not least, GKE memiliki waktu cluster-spawning tercepat, yang membawa kita ke tabel berikutnya.

Saatnya Memunculkan Cluster

Aspek Layanan AKS EKS GKE
Ukuran 3 node (Ds2-v2), masing-masing memiliki 2 vCPU, RAM 7 GB 3 node t3.large 3 node n1-standar-2
Waktu (m:ss) Rata-rata 5:45 untuk cluster penuh 11:06 untuk master ditambah 2:40 untuk grup node (total 13:46 untuk cluster penuh) Rata-rata 2:42 untuk cluster penuh

Saya melakukan tes ini di wilayah yang sama (Frankfurt dan Eropa Barat untuk AKS) untuk menghilangkan kemungkinan dampak perbedaan ini pada waktu pemijahan. Saya juga mencoba memilih ukuran yang sama untuk node untuk cluster: Tiga node, masing-masing memiliki dua vCPU dan tujuh atau delapan GB memori, ukuran standar untuk menjalankan beban kecil di Kubernetes dan mulai bereksperimen. Saya membuat setiap cluster tiga kali untuk menghitung rata-rata.

Dalam pengujian ini, GKE tetap unggul dengan waktu bertelur selalu di bawah tiga menit.

Kubernetes: AWS vs. GCP vs. Ikhtisar Azure CLI

Tidak semua CLI dibuat sama, tetapi dalam kasus ini, ketiga CLI sebenarnya adalah modul dari CLI yang lebih besar. Bagaimana rasanya bangun dan berjalan dengan toolchain CLI masing-masing penyedia cloud?

AKS CLI (melalui az )

Setelah menginstal az tooling, maka modul AKS (melalui az aks install-cli ), insinyur perlu mengotorisasi CLI untuk berkomunikasi dengan akun Azure proyek. Ini adalah masalah mendapatkan kredensial untuk memperbarui file kubeconfig lokal melalui az aks get-credentials --resource-group myResourceGroup --name myAKSCluster .

Demikian pula, untuk membuat cluster: az aks create --resource-group myResourceGroup --name myAKSCluster

EKS CLI (melalui aws atau eksctl )

Di AWS, kami menemukan pendekatan yang berbeda—ada dua alat CLI resmi yang berbeda untuk mengelola klaster EKS. Seperti biasa, aws dapat terhubung ke sumber daya AWS, terutama kluster. Mendapatkan kredensial ke dalam kubeconfig lokal dapat dilakukan melalui: aws eks update-kubeconfig --name cluster-test .

Namun, para insinyur juga dapat menggunakan eksctl , yang dikembangkan oleh Weaveworks dan ditulis dalam Go, untuk membuat dan mengelola klaster EKS dengan mudah. Keuntungan utama yang disediakan EKS bagi para insinyur cloud adalah mereka dapat menggabungkannya dengan file konfigurasi YAML untuk membuat infrastruktur-sebagai-kode (IaC) karena bekerja dengan CloudFormation. Ini jelas merupakan aset yang perlu dipertimbangkan saat mengintegrasikan klaster EKS ke dalam infrastruktur yang lebih besar di AWS.

Membuat cluster melalui eksctl semudah eksctl create cluster , tidak diperlukan parameter lain.

GKE CLI (melalui gcloud )

Untuk GKE, langkah-langkahnya sangat mirip: Instal gcloud , lalu autentikasi melalui gcloud init . Kemungkinan dari sana: Insinyur dapat membuat, menghapus, mendeskripsikan, mendapatkan kredensial untuk, mengubah ukuran, memperbarui, atau meningkatkan klaster, atau membuat daftar klaster.

Sintaks untuk membuat cluster dengan gcloud sangatlah mudah: gcloud container clusters create myGCloudCluster --num-nodes=1

AKS vs. EKS vs. GKE: Hasil Test Drive

Dalam praktiknya, kita dapat melihat bahwa GKE adalah yang tercepat untuk menjalankan klaster dasar, baik dari segi kesederhanaan konsol maupun waktu spawn klaster. Dari segi UX, dengan tombol sambungkan di sebelah cluster, menjadikannya yang paling mudah untuk terhubung ke cluster juga.

Dalam hal alat CLI, ketiga penyedia cloud telah menerapkan fungsi serupa; namun, kita dapat menekankan pada alat tambahan yang disediakan oleh Weaveworks untuk EKS. eksctl adalah alat yang sempurna bagi Anda untuk mengimplementasikan infrastruktur sebagai kode di atas infrastruktur AWS yang sudah ada sebelumnya, menggabungkan layanan lain dengan EKS.

Penawaran Kubernetes Terkelola Maju: AWS vs. GCP vs. Azure

Bagi mereka yang baru memulai di dunia Kubernetes, implementasi masuk bagi saya adalah GKE, karena ini yang paling mudah. Mudah disiapkan, memiliki UX yang sederhana dan cepat untuk pemijahan, dan terintegrasi dengan baik ke dalam ekosistem Google Cloud Platform.

Meskipun AWS adalah yang terakhir mengikuti perlombaan, ia memiliki beberapa keunggulan yang tidak dapat disangkal, seperti node bare metal dan fakta sederhana bahwa ia terintegrasi dengan penyedia dengan mind-share terbesar.

Akhirnya, AKS telah membuat kemajuan besar sejak didirikan. Perkakas dan paritas fitur kemungkinan tidak akan lama, sementara menyisakan ruang dalam proses untuk berinovasi. Dan seperti penawaran Kubernetes terkelola lainnya, bagi mereka yang sudah berada di platform induk, integrasi akan menjadi nilai jual.

Setelah tim memilih penyedia cloud Kubernetes, mungkin menarik untuk melihat pengalaman tim lain, terutama kegagalan. Post-mortem ini adalah cerminan dari kasus-kasus dunia nyata—selalu merupakan titik awal yang baik untuk mengembangkan praktik terbaik mutakhir seseorang. Saya menantikan komentar Anda di bawah ini!

Terkait: Perbandingan Mesh Layanan Kubernetes