Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Optimalisasi biaya dalam Mode Otomatis EKS
Mode Otomatis EKS terus mengoptimalkan biaya komputasi klaster Anda melalui konsolidasi, pengemasan sampah, dan ukuran yang tepat. Namun, konfigurasi beban kerja tertentu dapat mencegah pengoptimalan ini. Topik ini menjelaskan cara kerja pengoptimalan biaya, apa yang dapat memblokirnya, dan cara mengonfigurasi klaster Anda untuk mempertahankan efisiensi biaya.
Bagaimana Mode Otomatis EKS mengoptimalkan biaya
Mode Otomatis EKS mengurangi biaya komputasi melalui mekanisme berikut:
-
Bin-packing— Saat menjadwalkan pod ke node, Mode Otomatis EKS memilih jenis instance yang sangat cocok dengan permintaan sumber daya agregat, meminimalkan kapasitas yang tidak digunakan.
-
Konsolidasi — Mode Otomatis EKS secara berkala mengevaluasi node yang sedang berjalan dan mengganti atau menghapusnya saat beban kerja dapat berjalan pada instance yang lebih sedikit atau lebih murah.
-
Right-sizing— Saat beban kerja berkurang, Mode Otomatis EKS mengkonsolidasikan pod ke node yang lebih kecil dan menghentikan instance yang kurang dimanfaatkan.
Pengoptimalan ini berjalan terus menerus tanpa intervensi manual. Namun, anotasi dan NodePool konfigurasi pod tertentu dapat mencegah konsolidasi diterapkan.
Built-in kolam simpul dan pagar pembatas biaya
Kumpulan bawaan general-purpose dan system node sudah menerapkan beberapa default pelindung biaya:
-
Keluarga instans terbatas pada C, M, dan R — Tidak ada jenis instans yang dipercepat (P, G, Inf, Trn) atau eksotis yang diizinkan.
-
On-demand kapasitas saja — Tidak ada instans Spot, yang menghindari churn yang digerakkan oleh interupsi tetapi juga berarti tidak ada penghematan Spot.
-
Generasi 5 atau yang lebih baru - Generasi instans yang lebih tua dan hemat biaya tidak termasuk.
Jika Anda hanya menggunakan kumpulan node bawaan, Anda sudah mendapat manfaat dari pagar pembatas ini. Panduan dalam topik ini tentang mengecualikan keluarga instans dan membatasi ukuran instans paling relevan saat Anda membuat kustom NodePools, yang tidak mewarisi batasan ini.
Namun, bahkan dengan kumpulan node bawaan, bagian berikut masih berlaku untuk Anda:
-
Apa yang menghalangi konsolidasi—
do-not-disruptAnotasi dan PDB restriktif memblokir konsolidasi terlepas dari mana yang NodePool menyediakan node. -
Gunakan NodePool batas sebagai plafon biaya— Kolam node bawaan tidak memiliki sumber daya yang
limitsdikonfigurasi. Jika beban kerja Anda dapat menskalakan secara signifikan, pertimbangkan untuk membuat kustom NodePool dengan batas daripada mengandalkan kumpulan bawaan yang tidak terbatas. -
Siklus hidup dan biaya node— Tumpang tindih penggantian node berlaku untuk semua node, termasuk yang disediakan oleh kolam bawaan.
| Pagar pembatas | Built-in kolam simpul | Kustom NodePools |
|---|---|---|
|
Pengecualian instance yang dipercepat |
Ditegakkan |
Anda harus mengkonfigurasi |
|
Batas ukuran instans |
Tidak diatur |
Anda harus mengkonfigurasi |
|
Sumber daya |
Tidak diatur |
Anda harus mengkonfigurasi |
|
On-demand hanya |
Ditegakkan |
Anda memilih (Spot/On-Demand) |
|
Perlindungan konsolidasi ( |
Tanggung jawab Anda |
Tanggung jawab Anda |
Apa yang menghalangi konsolidasi
Konsolidasi diblokir ketika Mode Otomatis EKS menentukan bahwa mengganggu node akan melanggar persyaratan ketersediaan beban kerja. Konfigurasi berikut mencegah konsolidasi:
Anotasi jangan ganggu
karpenter.sh/do-not-disruptAnotasi menginstruksikan EKS Auto Mode untuk mempertahankan sebuah node selama pod beranotasi berjalan di atasnya. Ini mencegah node dikonsolidasikan, diganti, atau dihentikan, bahkan jika node kurang dimanfaatkan.
metadata: annotations: karpenter.sh/do-not-disrupt: "true"
penting
Implikasi biaya: Ketika sebuah pod membawa do-not-disrupt anotasi, node yang dijalankannya dibebaskan dari konsolidasi. Ini berarti:
-
Node terus berjalan pada ukuran instans saat ini terlepas dari pemanfaatan aktual.
-
VCPU dan penggunaan memori pada node itu dapat tetap meningkat bahkan saat permintaan beban kerja menurun.
-
Jika beberapa pod di banyak node membawa anotasi ini, konsolidasi seluruh cluster berkurang secara signifikan, yang mengarah ke biaya yang lebih tinggi.
do-not-disruptAnotasi adalah mekanisme ketersediaan. Itu tidak memperhitungkan biaya. Gunakan hanya untuk beban kerja di mana gangguan eksekusi tengah menyebabkan kehilangan data atau pengerjaan ulang yang signifikan — misalnya, pekerjaan batch yang berjalan lama atau proses stateful tanpa checkpointing.
Alternatif untuk dipertimbangkan:
-
Pod Disruption Budgets (PDBs) — Gunakan PDB untuk mengontrol tingkat gangguan daripada memblokirnya sepenuhnya. PDB memungkinkan konsolidasi untuk dilanjutkan sambil memastikan jumlah replika minimum tetap tersedia.
-
Shorter-lived beban kerja — Untuk CI/CD pelari dan agen build, izinkan gangguan dan andalkan logika coba ulang bawaan sistem CI Anda daripada menggunakan.
do-not-disrupt -
Time-limited anotasi — Terapkan
do-not-disrupthanya selama operasi kritis, lalu hapus secara terprogram saat operasi selesai.
Anggaran Gangguan Pod (PDB)
PDB yang menyetel maxUnavailable: 0 atau minAvailable sama dengan jumlah replika saat ini secara efektif memblokir semua konsolidasi untuk pod yang terpengaruh. Tinjau PDB Anda untuk memastikan bahwa mereka mengizinkan setidaknya satu pod terganggu pada satu waktu.
Gunakan NodePool batas sebagai plafon biaya
NodePool limitsmenetapkan batas atas total sumber daya komputasi yang disediakan oleh NodePool kaleng. Ketika batas tercapai, Mode Otomatis EKS berhenti meluncurkan node baru untuk itu NodePool. Ini terjadi bahkan jika pod tertunda.
Gunakan limits sebagai pagar pembatas biaya, terutama untuk NodePools yang melayani beban kerja non-produksi, pengujian, atau meledak di mana penskalaan tanpa batas tidak sesuai.
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: ci-runners spec: template: spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m"] limits: cpu: "500" memory: 1000Gi
Dalam contoh ini, total ci-runners NodePool tidak boleh melebihi 500 vCPU atau 1000 GiB memori di semua node yang disediakannya. Pod yang melebihi batas ini tetap dalam Pending status sampai kapasitas dibebaskan.
Tip
Setel limits berdasarkan ukuran burst maksimum yang Anda harapkan ditambah buffer untuk penggantian node. Tinjau NodePool pemanfaatan Anda secara teratur dan sesuaikan batas saat pola beban kerja berubah.
Kecualikan keluarga contoh untuk pengendalian biaya
Secara default, Mode Otomatis EKS memilih dari berbagai jenis instans untuk memaksimalkan fleksibilitas penjadwalan. Untuk beban kerja yang tidak memerlukan perangkat keras khusus, batasi keluarga instance untuk mencegah jenis instans yang mahal diluncurkan.
Kecualikan instance yang dipercepat
Jika beban kerja Anda tidak meminta sumber daya GPU atau akselerator, kecualikan keluarga instans yang dipercepat dari Anda. NodePool Ini mencegah skenario di mana instance yang dipercepat dipilih selama kendala kapasitas.
spec: template: spec: requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m", "r"]
Dengan hanya menentukan kategori yang dioptimalkan untuk komputasi, tujuan umum, dan dioptimalkan memori, Anda mengecualikan akselerasi (P, G, Inf, Trn) dan keluarga instans khusus lainnya dari seleksi.
Bagaimana pemilihan instance berinteraksi dengan kendala kapasitas
Mode Otomatis EKS tidak memprioritaskan tipe instans yang dipercepat dan eksotis selama pemilihan instans normal. Namun, ketika kegagalan peluncuran berkelanjutan terjadi, Mode Otomatis EKS akan diluncurkan dari jenis instans yang tersisa yang tersedia untuk memprioritaskan ketersediaan beban kerja. Misalnya, ini terjadi ketika kuota layanan EC2 habis sementara untuk semua jenis instans pilihan.
Untuk mencegah perilaku fallback ini, batasi NodePool persyaratan Anda secara eksplisit hanya pada kategori instance yang dibutuhkan beban kerja Anda. Ketika tipe pilihan tidak tersedia dan tidak ada tipe lain yang diizinkan oleh NodePool konfigurasi Anda, pod tetap dalam Pending status daripada dijadwalkan ke instance yang mahal.
Membatasi ukuran instance
Selain membatasi keluarga instans, Anda dapat membatasi ukuran instans maksimum di dalam. NodePool Membatasi ukuran instans membatasi eksposur biaya dari setiap node tunggal yang tidak dapat dikonsolidasikan. Misalnya, node yang diblokir oleh do-not-disrupt anotasi tidak dapat menyusut meskipun beban kerjanya kecil.
Gunakan eks.amazonaws.com/instance-cpu label untuk membatasi ukuran instans maksimum dalam NodePool kebutuhan Anda:
requirements: - key: "eks.amazonaws.com/instance-cpu" operator: Lte values: ["32"]
Konfigurasi ini mencegah Mode Otomatis EKS meluncurkan instance yang lebih besar dari 32 vCPU dalam hal ini. NodePool
Untuk mengidentifikasi peluang pengoptimalan di klaster yang ada, tinjau instance berjalan terbesar Anda. Jika node besar secara konsisten diblokir dari konsolidasi, biaya per node dari kapasitas idle tersebut secara proporsional lebih tinggi.
Pola yang direkomendasikan untuk beban kerja yang meledak
CI/CD jaringan pipa, pekerjaan batch, dan pelari sementara menciptakan pola burst-and-idle yang memerlukan konfigurasi khusus untuk mempertahankan efisiensi biaya.
Default yang direkomendasikan untuk beban kerja yang meledak
| Konfigurasi | Rekomendasi |
|---|---|
|
|
Jangan gunakan untuk CI/CD pelari. Andalkan mekanisme coba ulang dan antrian sistem CI Anda sebagai gantinya. |
|
NodePool |
Tetapkan CPU/memory plafon berdasarkan konkurensi maksimum yang diharapkan ditambah buffer untuk tumpang tindih penggantian node. |
|
Kategori contoh |
Batasi untuk |
|
Ukuran instans |
Pertimbangkan untuk membatasi ukuran sedang (misalnya, 4-32 vCPU) untuk membatasi eksposur biaya dari setiap node tunggal yang diblokir dari konsolidasi. |
|
Waktu konsolidasi |
Gunakan |
|
Jenis kapasitas |
Gunakan instance Spot untuk pelari yang toleran terhadap kesalahan. Kombinasikan dengan On-Demand untuk agen build yang memegang status selama eksekusi. |
Contoh: CI runner NodePool
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: ci-runners spec: template: spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m"] - key: "eks.amazonaws.com/instance-cpu" operator: Lte values: ["32"] - key: "karpenter.sh/capacity-type" operator: In values: ["spot", "on-demand"] limits: cpu: "500" memory: 1000Gi disruption: consolidationPolicy: WhenEmptyOrUnderutilized consolidateAfter: 30s
Konfigurasi ini:
-
Membatasi keluarga contoh yang hemat biaya
-
Membatasi NodePool kapasitas total pada 500 vCPU
-
Memungkinkan konsolidasi agresif (30 detik setelah pod dihapus)
-
Memungkinkan Spot dan kapasitas On-Demand
Siklus hidup dan biaya node
Mode Otomatis EKS menggantikan node melalui gangguan anggun ketika mereka melayang dari spesifikasi yang diinginkan (misalnya, setelah rilis AMI Mode Otomatis baru) atau ketika masa pakai node mendekati kedaluwarsa. Selama penggantian anggun:
-
Node pengganti baru diluncurkan dan menjadi siap.
-
Pod terkuras dari node lama, dengan memperhatikan Anggaran Gangguan Pod.
-
Untuk waktu yang singkat, baik node lama dan pengganti berjalan secara bersamaan.
Untuk cluster dengan node besar atau banyak, tumpang tindih ini dapat membuat kenaikan biaya berkala. Untuk meminimalkan dampak:
-
Tinjau anggaran gangguan — Pastikan anggaran gangguan Anda memungkinkan pengeringan tepat waktu. Anggaran terbatas memperpanjang periode tumpang tindih di mana node lama dan baru berjalan.
-
Right-size contoh — Instans yang lebih kecil mengurangi biaya absolut jendela tumpang tindih.
-
Kurangi masa pakai node maksimum - Nilai kedaluwarsa yang lebih pendek (misalnya, 7 hari) membuat peristiwa penggantian yang lebih sering tetapi lebih kecil. Ini menyebarkan biaya lebih merata dari waktu ke waktu daripada memusatkannya.
Untuk informasi selengkapnya tentang siklus hidup node, lihat Pelajari tentang instans Terkelola Mode Otomatis Amazon EKS.