K8s/Kubernetes: AWS vs. GCP vs. Azure
Diterbitkan: 2022-03-11Kubernetes (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!
