Praktik terbaik untuk menjalankan workload batch di GKE


Halaman ini memperkenalkan praktik terbaik untuk membangun dan mengoptimalkan platform batch processing dengan Google Kubernetes Engine (GKE), termasuk praktik terbaik untuk:

  • berbasis cloud
  • Pengelolaan tugas
  • multi-tenancy
  • keamanan
  • queueing
  • storage
  • performa
  • efisiensi biaya
  • monitoring

GKE menyediakan framework yang andal untuk mengorkestrasi workload batch seperti pemrosesan data, melatih model machine learning, menjalankan simulasi ilmiah, dan workload komputasi berperforma tinggi lainnya.

Praktik terbaik ini ditujukan untuk administrator platform, arsitek cloud, dan profesional di bidang pengoperasian yang tertarik untuk men-deploy workload batch di GKE. Arsitektur Referensi untuk Platform Pemrosesan Batch di GKE menampilkan banyak praktik terbaik yang dibahas dalam panduan ini, dan dapat di-deploy dalam project Google Cloud Anda sendiri.

Cara kerja workload batch

Workload batch adalah kumpulan tugas yang berjalan hingga selesai tanpa intervensi pengguna. Untuk menentukan tugas, gunakan resource Jobs Kubernetes. Platform batch akan menerima Tugas dan mengantrekannya sesuai urutan penerimaannya. Antrean di platform batch menerapkan logika pemrosesan, seperti prioritas, kuota, dan resource yang dapat dialokasikan. Dengan mengantrekan dan menyesuaikan parameter batch processing, Kubernetes memungkinkan Anda mengoptimalkan penggunaan resource yang tersedia, meminimalkan waktu tidak ada aktivitas untuk Tugas terjadwal, dan memaksimalkan penghematan biaya. Diagram berikut menunjukkan komponen GKE yang dapat menjadi bagian dari platform batch.

Pengelolaan platform batch

Umumnya, platform batch memiliki dua persona pengguna utama, yaitu developer dan administrator platform:

  • Developer mengirimkan Tugas yang menentukan program, data yang akan diproses, dan persyaratan untuk Tugas tersebut. Kemudian, developer menerima konfirmasi pengiriman Tugas dan ID unik. Setelah Tugas selesai, developer akan mendapatkan notifikasi beserta output atau hasil Tugas apa pun.
  • Administrator platform mengelola dan menyediakan platform pemrosesan batch yang efisien serta andal kepada developer.

Platform batch processing harus memenuhi persyaratan berikut:

  • Resource platform disediakan dengan benar untuk memastikan Tugas berjalan menggunakan sedikit atau tanpa menggunakan intervensi pengguna.
  • Resource platform akan dikonfigurasi sesuai dengan praktik terbaik keamanan dan kemampuan observasi organisasi.
  • Resource platform akan digunakan seefisien mungkin. Jika terjadi pertentangan resource, pekerjaan yang paling penting akan diselesaikan terlebih dahulu.

Menyiapkan arsitektur platform batch di GKE

Lingkungan GKE terdiri atas node, yang berupa virtual machine (VM) Compute Engine yang disatukan untuk membentuk cluster.

Tabel berikut mencantumkan rekomendasi utama saat merencanakan dan mendesain arsitektur platform batch:

Rekomendasi Resource
Pilih mode operasi GKE

GKE menyediakan mode operasi berikut:

  • Dengan mode Autopilot, GKE akan otomatis mengelola konfigurasi cluster Anda, termasuk node, penskalaan, keamanan, dan setelan lainnya yang telah dikonfigurasi sebelumnya, sehingga Anda dapat berfokus pada workload. Cluster Autopilot akan sangat tersedia secara default.
  • Dengan mode Standard, Anda dapat menentukan dan mengelola konfigurasi cluster, termasuk node, penskalaan, keamanan, serta setelan lanjutan lainnya.

Lihat perbandingan umum antara mode Autopilot dan Standard.

Pilih jenis mesin untuk node Anda

GKE mendukung rangkaian VM Compute Engine berikut:

  • Dioptimalkan untuk biaya, seperti E2
  • Seimbang, seperti N2, N2D, atau N1
  • Dioptimalkan untuk penyebaran skala, seperti Tau T2D, atau Tau T2A
  • Dioptimalkan untuk memori, seperti M2 atau M1
  • Dioptimalkan untuk komputasi, seperti C2 atau C2D
  • Dioptimalkan untuk akselerator, seperti A2 dengan GPU NVIDIA A100, G2 dengan GPU NVIDIA L4, A3 dengan GPU NVIDIA H100 (tersedia dalam pratinjau Pribadi).

Setiap seri mesin dikaitkan dengan satu atau beberapa platform CPU, seperti prosesor Arm dan prosesor x86 dari Intel dan AMD.

Pelajari opsi yang saat ini tersedia untuk workload Anda.

Gunakan akselerator hardware untuk node Anda

Anda juga dapat menggunakan akselerator hardware seperti unit pemrosesan grafis (GPU) dan Tensor Processing Unit (TPU) di GKE. Pertimbangkan strategi berbagi waktu GPU, yang memungkinkan beberapa container berbagi waktu di GPU fisik yang sama. Pendekatan ini berguna untuk workload GPU yang dapat di-burst dan homogen dengan permintaan rendah. GPU multi-instance guna mempartisi GPU untuk berbagi satu resource GPU pada beberapa container secara bersamaan.

Aktifkan autoscaler cluster di cluster Standard

GKE akan otomatis mengubah ukuran jumlah node dalam node pool tertentu berdasarkan permintaan workload Anda. Anda tidak perlu menambahkan atau menghapus node secara manual atau menyediakan node pool secara berlebihan. Sebaliknya, Anda hanya menentukan ukuran minimum dan maksimum untuk node pool.

Sebaiknya tetapkan autoscaler cluster dengan konfigurasi berikut:

  • Gunakan profil optimize-utilization yang menghapus node yang tidak digunakan hingga tiga kali lebih cepat daripada profil seimbang. Untuk mempelajari lebih lanjut, lihat Profil penskalaan otomatis.
  • Setel kebijakan lokasi ke ANY. Autoscaler cluster GKE memprioritaskan pemanfaatan reservasi yang tidak digunakan dan membuat node di zona mana pun yang tersedia di region. Untuk mempelajari lebih lanjut, lihat Kebijakan lokasi.
  • Aktifkan penyediaan otomatis node untuk mengelola dan menskalakan infrastruktur Anda secara otomatis. Setelah node pool dibuat menggunakan penyediaan otomatis, autoscaler cluster dapat menskalakan node pool secara dinamis. Untuk mempelajari lebih lanjut, lihat Cara kerja penyediaan otomatis node.

Dengan cluster Autopilot, Anda tidak perlu mengkhawatirkan penyediaan node atau pengelolaan node pool karena node pool akan otomatis disediakan melalui penyediaan otomatis node, dan otomatis diskalakan untuk memenuhi persyaratan workload Anda.

Mendaftarkan cluster di saluran rilis

GKE dapat mengelola versi dan upgrade cluster Anda secara otomatis. Berdasarkan model adopsi rilis, Anda dapat mendaftarkan cluster di saluran GKE yang tersedia.

Untuk mempelajari lebih lanjut, lihat Cara memilih saluran rilis terbaik untuk cluster Anda

Tentukan cakupan pemeliharaan yang akan dikecualikan untuk cluster Anda

Setelah periode pengecualian cakupan upgrade yang ditentukan, GKE mematuhi aturan bahwa workload batch yang berjalan lama tidak akan terganggu untuk pemeliharaan hingga selesai.

Untuk mempelajari lebih lanjut, lihat Cakupan pemeliharaan yang akan dikecualikan.

Mengelola Siklus proses Tugas

Di Kubernetes, jalankan workload dalam satu rangkaian Pod. Pod adalah grup yang terdiri dari satu atau beberapa container, dengan penyimpanan bersama dan resource jaringan. Pod ditentukan berdasarkan spesifikasi Kubernetes.

Tugas akan membuat satu atau beberapa Pod dan terus mencoba lagi eksekusi Pod tersebut hingga jumlah Pod tertentu berhasil dihentikan. Saat Pod selesai, Tugas akan melacak penyelesaian yang berhasil. Jika telah mencapai jumlah penyelesaian tertentu yang berhasil, Tugas akan selesai.

Tabel berikut mencantumkan rekomendasi utama saat mendesain dan mengelola Tugas:

Rekomendasi Resource
Pilih mode Job completion Tentukan Completion mode sebagai Indexed. Konfigurasi ini berguna saat menetapkan partisi data yang akan diproses berdasarkan indeks Pod. Pod Tugas akan mendapatkan indeks penyelesaian terkait. Menghapus Tugas akan membersihkan Pod yang dibuatnya. Menangguhkan Tugas akan menghapus Pod aktifnya hingga Tugas dilanjutkan lagi.
Tetapkan CronJobs untuk tindakan terjadwal reguler Gunakan CronJob untuk GKE guna melakukan tindakan terjadwal reguler, seperti pencadangan, pembuatan laporan, atau pelatihan terjadwal untuk model machine learning.
Kelola kegagalan dalam Tugas Tentukan kebijakan kegagalan Pod Kubernetes dan batas kegagalan backoff Pod untuk menangani kegagalan yang dapat dicoba ulang dan tidak dapat dicoba ulang dalam Tugas. Penentuan ini akan meningkatkan penggunaan resource cluster dengan menghindari percobaan ulang Pod yang tidak perlu dan kegagalan Tugas akibat gangguan Pod. Misalnya, Anda dapat mengonfigurasi preemption, pengeluaran yang dimulai dengan API, atau pengeluaran berbasis taint di mana Pod yang tidak memiliki toleransi terhadap efek taint NoExecute akan dikeluarkan. Pelajari cara Menangani kegagalan pod yang dapat dicoba ulang dan tidak dapat dicoba lagi dengan kebijakan kegagalan Pod.
Mengelola beberapa Tugas sebagai unit Gunakan JobSet API untuk mengelola beberapa Tugas sebagai unit untuk menangani pola workload, seperti satu driver (atau koordinator) dan beberapa worker (misalnya, MPIJob) sekaligus setelan default Tugas yang selaras dengan pola umum berdasarkan kasus penggunaan Anda. Misalnya, Anda dapat membuat Tugas yang Diindeks secara default, membuat layanan headless untuk nama domain yang sepenuhnya memenuhi syarat (FQDN) yang dapat diprediksi untuk Pod, dan menetapkan kebijakan kegagalan Pod terkait.
Perpanjang waktu proses untuk Pod yang tidak menoleransi mulai ulang Setel anotasi cluster-autoscaler.kubernetes.io/safe-to-evict Kubernetes ke false dalam spesifikasi Pod. Autoscaler cluster mematuhi aturan penghapusan yang ditetapkan di Pod. Pembatasan ini dapat mencegah node dihapus oleh autoscaler jika node tersebut berisi Pod dengan anotasi cluster-autoscaler.kubernetes.io/safe-to-evict.

Untuk mempelajari lebih lanjut, lihat Mempertimbangkan gangguan dan penjadwalan Pod.

Mengelola Multi-tenancy

Multi-tenancy cluster GKE adalah alternatif untuk mengelola resource GKE oleh berbagai pengguna atau workload, yang disebut sebagai tenant, dalam satu organisasi. Pengelolaan resource GKE mungkin mengikuti kriteria seperti pemisahan tenant, kuota dan rentang batas, atau alokasi biaya.

Tabel berikut mencantumkan rekomendasi utama saat mengelola multi-tenancy:

Rekomendasi Resource
Gunakan namespace untuk mengelola pemisahan tenant Anda dapat memisahkan setiap tenant dan resource Kubernetes-nya ke dalam namespace-nya sendiri.
Gunakan kebijakan untuk menerapkan pemisahan tenant Tentukan Kebijakan untuk membatasi akses API, menetapkan kuota, membatasi penggunaan resource, dan membatasi apa yang boleh dilakukan container. Kebijakan ini dicakup berdasarkan namespace.
Tetapkan alokasi biaya GKE Gunakan alokasi biaya GKE guna mendapatkan insight tentang permintaan resource cluster untuk setiap tenant berdasarkan namespace.

Mengontrol akses ke platform batch

GKE memungkinkan Anda menyesuaikan izin akses secara mendetail dari workload yang berjalan di cluster.

Tabel berikut mencantumkan rekomendasi utama saat mengelola akses dan keamanan

Rekomendasi Resource
Menetapkan Workload Identity Federation untuk GKE GKE memungkinkan workload di cluster GKE Anda untuk meniru identitas akun layanan Identity and Access Management (IAM) guna mengakses layanan Google Cloud. Dengan menggunakan Workload Identity Federation for GKE, workload dapat mengakses secret yang disimpan di luar GKE dengan aman.

Untuk mempelajari lebih lanjut, lihat Workload Identity Federation for GKE dan rahasia akses yang tersimpan.

Tetapkan isolasi jaringan cluster Gunakan cluster pribadi dengan endpoint bidang kontrol dan node worker dapat memiliki alamat IP internal. Anda juga dapat mengubah pemisahan cluster untuk cluster publik yang ada yang menggunakan Private Service Connect.

Untuk mempelajari lebih lanjut, lihat cluster publik dan mengubah pemisahan cluster.

Gunakan Node GKE yang Terlindungi Konfigurasi Node GKE yang Terlindungi untuk memberikan integritas dan identitas node yang kuat serta dapat diverifikasi guna meningkatkan keamanan node GKE.
Pemisahan secara fisik Untuk alasan keamanan, workload Anda mungkin memerlukan isolasi yang lebih kuat. Kontrol penjadwalan dengan taint node untuk memisahkan tenant secara fisik dalam node pool menggunakan taint node dan toleransi workload. Hal ini memastikan bahwa hanya workload yang sesuai yang akan dijadwalkan di node pool tersebut.

Antrean dan pembagian adil

Untuk mengontrol penggunaan resource, Anda dapat menetapkan batas kuota resource untuk setiap tenant, mengantrekan Tugas yang masuk, dan memproses Tugas sesuai urutan penerimaannya.

Tabel berikut mencantumkan rekomendasi utama saat mengelola antrean dan pembagian wajar di antara workload batch:

Rekomendasi Resource
Gunakan Kueue

Kueue adalah sistem antrean Tugas berbasis Kubernetes untuk batch, komputasi berperforma tinggi, machine learning, dan aplikasi serupa di cluster Kubernetes. Untuk membantu pembagian resource cluster secara adil di antara tenantnya, Kueue mengelola kuota dan cara Tugas menggunakan kuota tersebut. Kueue mengambil keputusan berikut:

  • Kapan Tugas harus menunggu
  • Kapan Tugas harus diizinkan untuk memulai, misalnya dengan membuat Pod
  • Kapan Tugas harus di-preempt, misalnya dengan menghapus Pod

Untuk mempelajari cara menerapkan sistem antrean Tugas, lihat Menerapkan sistem antrean Tugas dengan pembagian kuota antar-namespace di GKE.

Untuk mempelajari lebih lanjut Kueue, lihat konsep Kueue.

Penyimpanan, performa, dan efisiensi biaya

Penggunaan resource penyimpanan dan komputasi GKE yang efisien dapat menekan biaya. Salah satu strateginya adalah menentukan ukuran dan mengonfigurasi instance komputasi Anda agar selaras dengan kebutuhan pemrosesan batch Anda tanpa mengorbankan performa.

Tabel berikut mencantumkan rekomendasi utama saat mendesain serta mengelola penyimpanan dan mengoptimalkan performa:

Rekomendasi Resource
Gunakan Persistent Disk Compute Engine

Sebaiknya gunakan konfigurasi Persistent Disk Compute Engine berikut:

Gunakan Network Attached Storage (NAS)

Gunakan penyimpanan yang terpasang di Network Attached Storage (NAS) Persistent Disk untuk performa penyimpanan yang optimal:

  • Gunakan Filestore untuk mengizinkan semua node worker dalam Pod mengakses namespace penyimpanan dan kapasitas penskalaan yang sama.
  • Gunakan Cloud Storage FUSE untuk mengakses Cloud Storage langsung dari container sebagai pemasangan POSIX lokal.
Tentukan Pub/Sub

Workload batch Anda juga dapat membaca dan menulis data. Misalnya, Anda dapat menggunakan Pub/Sub serta menulis hasilnya ke data warehouse seperti BigQuery, tempat laporan dan dasbor diperbarui.

Sebaiknya gunakan solusi penyimpanan berikut:

  • Untuk penyimpanan objek terkelola, gunakan Cloud Storage.
  • Untuk penyimpanan file jaringan terkelola, gunakan Filestore.
  • Untuk workload yang memerlukan semantik sistem file, gunakan driver CSI Cloud Storage FUSE. Driver ini memungkinkan aplikasi Kubernetes memasang bucket Cloud Storage sebagai sistem file lokal
Tentukan parameter penyesuaian untuk workload Anda

Sebaiknya gunakan konfigurasi berikut:

  • Sesuaikan konfigurasi sistem node untuk workload Anda. Misalnya, tetapkan nilai minimum, default, dan maksimum soket TCP yang menerima buffer. Gunakan konfigurasi sistem node.
  • Aktifkan polling sibuk menggunakan profil jaringan. Beberapa workload yang sensitif terhadap latensi jaringan mungkin ditingkatkan. Menggunakan profil jaringan.
  • Tingkatkan bandwidth jaringan pada node GKE dengan mengaktifkan Google Virtual NIC (gVNIC), antarmuka jaringan virtual yang dirancang khusus untuk Compute Engine yang direkomendasikan untuk aplikasi berperforma tinggi.
  • Tentukan jumlah thread per core untuk menonaktifkan Multi-threading simultan.
Optimalkan jaringan dan latensi workload Anda GKE mendukung kebijakan penempatan rapat untuk node pool yang menentukan bahwa node ini (dan workload yang dijalankan pada node tersebut) harus ditempatkan dalam jarak yang lebih dekat satu sama lain dalam suatu zona. Hal ini sangat berguna untuk workload yang terkait erat dan berperforma tinggi, di mana latensi rendah antara proses yang berbeda yang terdiri dari workload menjadi perhatian utama. Untuk mempelajari lebih lanjut, lihat penempatan rapat.
Menggunakan Spot VM

Spot VM adalah instance virtual machine (VM) Compute Engine yang harganya lebih rendah daripada VM Compute Engine standar dan tidak memberikan jaminan ketersediaan.

Sebaiknya gunakan solusi berikut:

  • Tetapkan node pool Spot VM penskalaan otomatis yang digabungkan dengan location_policy= "ANY". Dengan kebijakan ini, VM Spot memiliki risiko yang lebih rendah untuk di-preempt. Kombinasi ini sangat berguna untuk workload yang dapat bertahan terhadap preemption worker node tertentu, seperti komputasi paralel yang baik.
  • Jika workload Anda memiliki jejak resource yang dapat diprediksi, padukan Reservasi Google Cloud dan diskon abonemen yang dapat menghasilkan penghematan yang signifikan. Buat node pool dengan ukurannya yang ditetapkan ke jumlah reserved instance dan prioritaskan saturasi node pool ini untuk penggunaan maksimum.
Gunakan streaming image

Gunakan Image streaming untuk mengambil image container. GKE men-streaming data dari image yang memenuhi syarat. Hal ini memungkinkan workload Anda melakukan inisialisasi tanpa menunggu seluruh image didownload, sehingga dapat meningkatkan waktu inisialisasi secara signifikan dan efisiensi biaya yang lebih baik.

Pemantauan

GKE terintegrasi dengan kemampuan observasi dan alat logging yang membantu Anda memantau keandalan dan efisiensi cluster. Tabel berikut mencantumkan rekomendasi utama saat mengaktifkan dan menggunakan alat kemampuan observasi GKE:

Rekomendasi Resource
Gunakan Prometheus

GKE terintegrasi dengan Google Cloud Observability. Sesuaikan metrik yang Anda inginkan untuk dikirim GKE ke Cloud Logging dan Cloud Monitoring

Google Cloud Managed Service for Prometheus diaktifkan untuk cluster GKE secara default. Sebaiknya gunakan koleksi terkelola untuk menghilangkan kerumitan dalam menyiapkan dan mempertahankan server Prometheus.

Untuk mempelajari lebih lanjut, lihat Managed Service for Prometheus.

Menggunakan dasbor Cloud Monitoring

Gunakan dasbor Monitoring untuk GKE untuk melihat ringkasan umum pemanfaatan cluster dan resource, serta lihat perincian dan filter melalui berbagai metrik dan dimensi.

Untuk mempelajari lebih lanjut, lihat Mengamati cluster GKE.

Langkah selanjutnya