Bagikan melalui


Keandalan pada Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) adalah layanan orkestrasi kontainer terkelola yang menyederhanakan penyebaran, manajemen, dan operasi Kubernetes.

Saat Anda menggunakan Azure, keandalan adalah tanggung jawab bersama. Microsoft menyediakan berbagai kemampuan untuk mendukung ketahanan dan pemulihan. Anda bertanggung jawab untuk memahami cara kerja kemampuan tersebut dalam semua layanan yang Anda gunakan, dan memilih kemampuan yang Anda butuhkan untuk memenuhi tujuan bisnis dan tujuan waktu aktif Anda.

Artikel ini menjelaskan cara membuat Azure Kubernetes Service (AKS) tahan terhadap berbagai potensi pemadaman dan masalah, termasuk kesalahan sementara, pemadaman zona ketersediaan, dan pemadaman wilayah. Ini juga menjelaskan bagaimana Anda dapat menggunakan cadangan untuk memulihkan dari jenis masalah lain, dan menyoroti beberapa informasi utama tentang perjanjian tingkat layanan (SLA) Azure Kubernetes Service (AKS).

Rekomendasi penyebaran produksi

Untuk rekomendasi tentang cara menyebarkan beban kerja produksi yang andal di AKS, lihat artikel berikut ini:

Gambaran umum arsitektur keandalan

Saat Anda membuat kluster AKS, platform Azure secara otomatis membuat dan mengonfigurasi:

  • Lapisan kontrol yang memiliki server API, etcd, penjadwal, dan pod lain yang diperlukan untuk mengelola beban kerja Anda.

  • Tambah kumpulan simpul sistem ke langganan Anda yang menghosting add-on dan pod lain yang berjalan di namespace kube-system.

Setelah penyiapan kumpulan simpul awal ini selesai, Anda dapat menambahkan atau menghapus kumpulan simpul untuk beban kerja pengguna Anda sendiri. AKS tidak mengelola kumpulan simpul untuk keandalan, dan Anda harus memastikan bahwa beban kerja Anda tahan terhadap kegagalan infrastruktur.

Diagram yang menunjukkan sarana kontrol Kube dan komponen simpul, termasuk kumpulan simpul sistem dan kumpulan simpul pengguna.

Ketahanan adalah tanggung jawab bersama antara Anda dan Microsoft. Sebagai layanan komputasi, AKS mengelola beberapa aspek keandalan kluster Anda, tetapi Anda bertanggung jawab untuk mengelola aspek lain.

  • Microsoft mengelola sarana kontrol dan komponen terkelola AKS lainnya.

  • Anda bertanggung jawab untuk:

    • Tentukan bagaimana komponen, termasuk kumpulan simpul dan load balancer yang melekat pada layanan, harus dikonfigurasi untuk memenuhi persyaratan keandalan Anda. Setelah Anda menentukan komponen, Microsoft kemudian menyebarkan dan mengelolanya atas nama Anda.

    • Kelola komponen apa pun di luar kluster AKS, termasuk penyimpanan dan database. Verifikasi bahwa komponen ini memenuhi persyaratan keandalan Anda. Saat Anda menyebarkan beban kerja, pastikan komponen Azure lainnya juga dikonfigurasi untuk ketahanan dengan mengikuti praktik terbaik untuk layanan tersebut.

Ketahanan terhadap kesalahan sementara

Kesalahan sementara adalah kegagalan yang bersifat sementara dan intermiten dalam komponen. Mereka sering terjadi di lingkungan terdistribusi seperti cloud, dan mereka adalah bagian normal dari operasi. Kesalahan sementara memperbaiki diri setelah waktu yang singkat. Penting bahwa aplikasi Anda dapat menangani kesalahan sementara, biasanya dengan mencoba kembali permintaan yang terpengaruh.

Semua aplikasi yang dihosting cloud harus mengikuti panduan penanganan kesalahan sementara Azure saat berkomunikasi dengan API, database, dan komponen lain yang dihosting cloud. Untuk informasi selengkapnya, lihat Rekomendasi untuk menangani kesalahan sementara.

Saat Anda menggunakan AKS, kesalahan sementara dapat terjadi karena berbagai alasan, termasuk aplikasi mengalami crash, operasi penskalaan dan penyeimbangan pod, pemeliharaan simpul, dan kegagalan infrastruktur sementara seperti masalah jaringan atau perangkat keras.

Tidak mungkin untuk menghilangkan semua kesalahan sementara, sehingga klien yang mengakses aplikasi yang dihosting AKS Anda harus siap untuk mencoba kembali permintaan yang gagal dan mengikuti rekomendasi penanganan kesalahan sementara lainnya. Anda dapat meminimalkan kemungkinan terjadinya kesalahan sementara dan menghindari atau mengurangi waktu henti yang mungkin ditimbulkannya dengan mengikuti praktik terbaik Kubernetes dan Azure dalam penyebaran Anda.

  • Atur anggaran gangguan pod (PDB) di YAML pod Anda untuk menentukan berapa banyak pod yang perlu Anda miliki dalam keadaan Ready pada waktu tertentu. Ketika Anda menyetel PDB, AKS memastikan ketersediaan minimum replika-replika saat menjalankan operasi untuk memblokir akses dan menguras node secara terukur. Jika PDB tidak dapat dipenuhi selama proses-proses seperti peningkatan, pod akan terus berfungsi dan operasi mungkin gagal. Untuk informasi selengkapnya, lihat PDB.
  • Gunakan maxUnavailable untuk menentukan jumlah maksimum replika yang dapat menjadi tidak tersedia pada waktu tertentu. Misalnya, ketika Anda melakukan restart bergulir, AKS memastikan bahwa tidak lebih dari maxUnavailable jumlah pod yang diproses pada waktu tertentu. Untuk informasi selengkapnya, lihat maxUnavailable.
  • Ikuti praktik terbaik penerapan. Replika pod juga dapat gagal karena masalah aplikasi. Untuk informasi selengkapnya, lihat Praktik terbaik tingkat penyebaran untuk keandalan kluster AKS.

Nota

Jika Anda ingin AKS memvalidasi penyebaran Anda untuk kepatuhan terhadap praktik terbaik dan memberikan pemberitahuan pemblokiran atau peringatan, Anda dapat menggunakan perlindungan penyebaran. Perlindungan penyebaran adalah penawaran terkelola yang membantu menerapkan praktik terbaik produk sebelum kode Anda disebarkan ke kluster.

Ketahanan terhadap kegagalan zona ketersediaan

Zona ketersediaan adalah grup pusat data yang terpisah secara fisik dalam wilayah Azure. Ketika satu zona gagal, layanan dapat melakukan failover ke salah satu zona yang tersisa.

Saat Anda menyebarkan kluster AKS ke wilayah yang mendukung zona ketersediaan, komponen yang berbeda memerlukan berbagai jenis konfigurasi.

Sarana kontrol AKS tahan zona secara default. Jika zona gagal, sarana kontrol tidak memerlukan konfigurasi atau manajemen apa pun untuk mencapai ketahanan. Namun, ketahanan pesawat pengendali tidaklah cukup bagi kluster Anda untuk tetap beroperasi ketika sebuah zona mengalami kegagalan. Untuk kumpulan simpul sistem dan kumpulan simpul pengguna apa pun yang Anda sebarkan, Anda harus mengaktifkan dukungan zona ketersediaan untuk membantu memastikan bahwa beban kerja Anda tahan terhadap kegagalan zona ketersediaan.

Persyaratan

Dukungan wilayah: Anda dapat menyebarkan kluster AKS tangguh zona ke wilayah mana pun yang mendukung zona ketersediaan.

Pertimbangan

Untuk meningkatkan keandalan dan ketahanan beban kerja produksi AKS di suatu wilayah, Anda perlu mengonfigurasi AKS untuk redundansi zona dengan membuat konfigurasi berikut:

  • Menyebarkan beberapa replika. Kubernetes menyebarkan pod Anda di seluruh node berdasarkan label node. Untuk menyebarkan beban kerja di seluruh zona, Anda perlu menyebarkan beberapa replika pod Anda. Misalnya, jika Anda mengonfigurasi kumpulan node dengan tiga zona tetapi hanya menerapkan satu replika pod, penyebaran Anda tidak tahan zona.

  • Aktifkan penskalakan otomatis. Kumpulan simpul Kubernetes menyediakan opsi penskalakan manual dan otomatis. Dengan menggunakan skala manual, Anda dapat menambahkan atau menghapus node sesuai kebutuhan, dan pod yang tertunda akan menunggu hingga Anda memperbesar kumpulan node. Penskalakan yang dikelola AKS menggunakan pengatur skala klaster atau penyediaan otomatis node (NAP). AKS mengatur pool node ke atas atau ke bawah berdasarkan kebutuhan pod dalam kuota dan kapasitas SKU langganan Anda. Metode ini membantu memastikan agar pod Anda ditempatkan di simpul yang tersedia di zona ketersediaan.

  • Atur batasan topologi pod. Gunakan batasan penyebaran topologi pod untuk mengontrol bagaimana pod tersebar di berbagai simpul atau zona. Batasan membantu Anda mencapai ketersediaan tinggi, ketahanan, dan penggunaan sumber daya yang efisien. Jika Anda lebih suka menyebarkan pod secara ketat di seluruh zona, Anda dapat mengatur batasan untuk memaksa pod ke dalam status tertunda untuk menjaga keseimbangan pod di seluruh zona. Untuk informasi selengkapnya, lihat Batasan penyebaran topologi pod.

  • Mengonfigurasi jaringan yang tahan zona. Jika pod Anda melayani lalu lintas eksternal, konfigurasikan arsitektur jaringan kluster Anda dengan menggunakan layanan seperti Azure Application Gateway, Azure Load Balancer, atau Azure Front Door.

  • Pastikan dependensi tahan terhadap kegagalan di zona tertentu. Sebagian besar aplikasi AKS menggunakan layanan lain untuk penyimpanan, keamanan, atau jaringan. Pastikan Anda meninjau rekomendasi ketahanan zona untuk layanan tersebut.

Biaya

Tidak ada biaya tambahan untuk mengaktifkan dukungan zona ketersediaan di AKS. Anda membayar komputer virtual (VM) dan sumber daya lain yang Anda sebarkan di zona ketersediaan.

Mengonfigurasi dukungan zona ketersediaan

  • Buat kluster AKS baru yang memiliki dukungan zona ketersediaan: Untuk mengonfigurasi dukungan zona ketersediaan, lihat Membuat kluster Azure Kubernetes Service (AKS) yang menggunakan zona ketersediaan.
  • Migrasi: Anda tidak dapat mengaktifkan dukungan zona ketersediaan setelah membuat kluster. Sebagai gantinya, Anda perlu membuat kluster baru yang memiliki dukungan zona ketersediaan diaktifkan dan menghapus kluster yang ada.
  • Nonaktifkan dukungan zona ketersediaan: Anda tidak dapat menonaktifkan dukungan zona ketersediaan setelah membuat kluster. Sebagai gantinya, Anda perlu membuat kluster baru yang memiliki dukungan zona ketersediaan dinonaktifkan dan menghapus kluster yang ada.

Perilaku ketika semua zona sehat

Bagian ini menjelaskan apa yang diharapkan ketika kluster AKS dikonfigurasi untuk dukungan zona ketersediaan dan semua zona ketersediaan beroperasi.

  • Perutean lalu lintas antar zona: Saat Anda menyebarkan kluster AKS yang menggunakan zona ketersediaan, penting untuk memastikan bahwa komponen jaringan Anda juga tahan zona. Bergantung pada load balancer dan komponen jaringan lain yang Anda gunakan, Anda mungkin perlu mengonfigurasi komponen secara eksplisit untuk merutekan lalu lintas ke simpul yang benar di zona yang benar dan untuk merespons pemadaman zona. Untuk informasi selengkapnya, lihat Pertimbangan ketahanan zona untuk AKS.

  • Replikasi data antar zona: Jika Anda menjalankan beban kerja stateless, Anda harus menggunakan layanan Azure terkelola, database Azure, Azure Managed Redis, atau Azure Storage untuk menyimpan data aplikasi. Anda dapat menggunakan layanan ini agar memastikan bahwa lalu lintas Anda dapat dipindahkan antar node dan zona tanpa mempertaruhkan kehilangan data atau memengaruhi pengalaman pengguna. Anda dapat menggunakan penyebaran Kubernetes, layanan, dan pemeriksaan kesehatan untuk mengelola pod tanpa status dan memastikan distribusi yang merata di seluruh zona.

    Jika Anda perlu menyimpan status dalam kluster Anda dengan menggunakan disk Azure, gunakan penyimpanan redundan zona Azure untuk membantu memastikan bahwa data Anda direplikasi di beberapa zona ketersediaan. Untuk informasi selengkapnya, lihat Memilih jenis disk yang tepat berdasarkan kebutuhan aplikasi.

Perilaku selama kegagalan zona

Bagian ini menjelaskan apa yang diharapkan apabila pemadaman zona ketersediaan terjadi saat kluster-kluster AKS dikonfigurasi dengan dukungan zona ketersediaan.

  • Deteksi dan respons: Ketika pemadaman zona terjadi, sarana kontrol secara otomatis gagal. Jika kumpulan simpul Anda menggunakan zona ketersediaan dan mengikuti praktik terbaik ketahanan zona, Anda dapat mengharapkan AKS menyediakan simpul dan replika di zona yang siap beroperasi. AKS melakukan tugas ini secara otomatis saat Anda menggunakan solusi terkelola seperti autoscaler kluster atau NAP. Tanpa penskalaan otomatis, simpul dan replika tetap dalam status Tertunda dan menunggu intervensi manual untuk meningkatkan kumpulan simpul.

    AKS juga mencoba menyeimbangkan kembali pod di seluruh zona sehat. Jika Anda memilih untuk menskalakan kumpulan simpul Anda secara manual dalam skenario zona-turun, pod Anda mungkin tetap dalam status Tertunda ketika tidak ada simpul yang tersedia di zona sehat. Ekspansi pada zona-zona yang tersisa juga tergantung pada ketersediaan kuota dan kapasitas untuk SKU VM yang Anda gunakan.

  • Pemberitahuan: Microsoft tidak secara otomatis memberi tahu Anda saat zona tidak berfungsi. Namun, Anda dapat menggunakan Azure Resource Health untuk memantau kesehatan sumber daya individual, dan Anda dapat menyiapkan pemberitahuan Resource Health untuk memberi tahu Anda tentang masalah. Anda juga dapat menggunakan Azure Service Health untuk memahami kesehatan layanan secara keseluruhan, termasuk kegagalan zona apa pun, dan Anda dapat menyiapkan pemberitahuan Service Health untuk memberi tahu Anda tentang masalah.

    Anda juga dapat menggunakan metrik kesehatan simpul atau pod untuk memantau kesehatan simpul dan pod Anda.

  • Permintaan aktif: Setiap permintaan aktif mungkin mengalami gangguan. Beberapa permintaan dapat gagal, dan waktu tunda mungkin meningkat saat beban kerja Anda dialihkan ke zona lain.

  • Kehilangan data yang diharapkan: Jika Anda menyimpan status dalam kluster dengan menggunakan disk Azure, dan Anda menggunakan penyimpanan zona redundan, kegagalan zona tidak diharapkan menyebabkan kehilangan data apa pun.

  • Waktu henti yang diharapkan: Jika Anda mengonfigurasi ketahanan zona untuk kluster dan pod dengan benar, maka kegagalan zona tidak diharapkan menyebabkan waktu henti untuk beban kerja AKS Anda.

  • Pengalihan lalu lintas: Load balancer mengalihkan permintaan masuk baru ke pod yang berjalan pada simpul sehat.

Untuk informasi selengkapnya, lihat Pertimbangan ketahanan zona untuk AKS.

Pemulihan Zona

Ketika zona ketersediaan pulih, perilaku failback tergantung pada komponen:

  • Sarana kontrol: AKS secara otomatis memulihkan operasi sarana kontrol di semua zona ketersediaan. Tidak diperlukan intervensi manual.

  • Grup node dan simpul: Segera setelah failback, simpul tetap berada di zona yang sebelumnya sehat dan tidak dikembalikan ke zona yang telah pulih. Namun, pada saat berikutnya Anda melakukan operasi penskalaan simpul, seperti saat Anda melakukan penskalaan pada kumpulan simpul, kumpulan simpul tersebut dapat membuat simpul di zona yang telah dipulihkan.

  • Pod: Segera setelah failback, pod terus berjalan pada node tempat mereka saat ini berjalan. Ketika pod baru dibuat atau pod yang ada dibuat ulang, pod tersebut memenuhi syarat untuk menggunakan node di zona yang telah dipulihkan.

  • Penyimpanan: Penyimpanan apa pun yang terpasang pada pod akan pulih berdasarkan cara kerja penyimpanan redundan zona.

Uji kegagalan zona

Anda dapat menguji ketahanan Anda terhadap kegagalan zona ketersediaan dengan menggunakan metode berikut:

Ketahanan terhadap kegagalan di seluruh wilayah

Kluster AKS adalah sumber daya wilayah tunggal. Jika wilayah tidak tersedia, kluster AKS Anda juga tidak tersedia.

Solusi multi-wilayah kustom untuk ketahanan

Jika Anda perlu menyebarkan beban kerja Kubernetes ke beberapa wilayah Azure, Anda memiliki dua opsi untuk mengelola orkestrasi kluster ini.

  • Gunakan Azure Kubernetes Fleet Manager jika Anda menginginkan pengalaman terkelola yang lebih sederhana. Dengan menggunakan Azure Kubernetes Fleet Manager, Anda dapat:

    • Kelola sekumpulan kluster AKS sebagai satu unit, dan kluster tersebut dapat didistribusikan di beberapa wilayah Azure.

    • Mengotomatasi aspek spesifik manajemen kluster, seperti pembaruan citra kluster dan node.

    • Gunakan kemampuan distribusi lalu lintas untuk menyebarkan lalu lintas di seluruh kluster dan secara otomatis melakukan failover jika suatu wilayah tidak tersedia.

  • Mengatur failover dengan menggunakan model penyebaran aktif-aktif atau aktif-pasif manual jika beban kerja Anda memerlukan kontrol yang lebih bernuansa atas berbagai komponen failover antarregional. Untuk informasi selengkapnya, lihat Gambaran umum HA dan DR untuk AKS.

Pencadangan dan pemulihan

Azure Backup memiliki ekstensi yang dapat Anda gunakan untuk mencadangkan sumber daya kluster AKS dan volume persisten yang terhubung ke kluster. Vault Backup berkomunikasi dengan kluster AKS melalui ekstensi untuk melakukan operasi pencadangan dan pemulihan.

Jika kluster AKS Anda berada di wilayah yang dipasangkan, Anda dapat mengonfigurasi cadangan untuk disimpan dalam penyimpanan geo-redundan. Anda dapat memulihkan cadangan geo-redundan ke wilayah yang berpasangan.

Untuk informasi lebih lanjut, baca artikel berikut:

Untuk sebagian besar solusi, Anda tidak boleh mengandalkan cadangan secara eksklusif. Sebagai gantinya, gunakan kemampuan lain yang dijelaskan dalam panduan ini untuk mendukung persyaratan ketahanan Anda. Namun, pencadangan melindungi dari beberapa risiko yang tidak dapat dicegah oleh pendekatan lain. Untuk informasi selengkapnya, lihat Apa itu redundansi, replikasi, dan cadangan?.

Berusaha untuk menggunakan kluster stateless yang meminimalkan kebutuhan akan pencadangan. Simpan data di sistem penyimpanan eksternal dan database alih-alih dalam kluster Anda.

Ketahanan terhadap pemeliharaan layanan

AKS melakukan pemeliharaan pada kluster Anda, termasuk pembaruan pada citra kluster dan node. Untuk memastikan bahwa Kubernetes mempertahankan jumlah minimum instans pod yang diperlukan untuk melayani lalu lintas produksi Anda bahkan selama peningkatan, Anda harus mengonfigurasi pod untuk menggunakan anggaran gangguan pod.

Untuk mengurangi gangguan layanan selama periode waktu kritis, AKS menyediakan kontrol sehingga Anda dapat menentukan waktu pemeliharaan terencana. Untuk mempelajari lebih lanjut, lihat Menggunakan pemeliharaan terencana untuk menjadwalkan dan mengontrol peningkatan untuk kluster Azure Kubernetes Service Anda.

Perjanjian tingkat layanan

Perjanjian tingkat layanan (SLA) untuk layanan Azure menjelaskan ketersediaan yang diharapkan dari setiap layanan dan kondisi yang harus dipenuhi solusi Anda untuk mencapai harapan ketersediaan tersebut. Untuk informasi selengkapnya, lihat SLA untuk layanan online.

AKS menyediakan tiga tingkat harga untuk manajemen kluster: Gratis, Standar, dan Premium. Tingkat Gratis memungkinkan Anda menggunakan AKS untuk menguji beban kerja Anda. Tingkat Standar dan Premium dirancang untuk beban kerja produksi. Saat Anda menyebarkan kluster AKS yang mengaktifkan zona ketersediaan, persentase waktu aktif yang ditentukan dalam SLA meningkat. Namun, SLA hanya berlaku jika Anda menyebarkan kluster di tingkat harga Standar atau Premium.