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
- mengantre
- penyimpanan
- performa
- efisiensi biaya
- pemantauan
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:
|
|
Pilih jenis mesin untuk node Anda |
GKE mendukung rangkaian VM Compute Engine berikut:
Setiap seri mesin dikaitkan dengan satu atau beberapa platform CPU, seperti prosesor Arm dan prosesor x86 dari Intel dan AMD. |
|
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:
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 |
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 untuk GKE, workload dapat mengakses
secret yang disimpan di luar GKE.
Untuk mempelajari lebih lanjut, lihat Workload Identity Federation for GKE dan akses secret disimpan. |
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. Mengontrol penjadwalan dengan taint node untuk memisahkan tenant secara fisik di kumpulan node menggunakan node-taint 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:
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:
|
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:
|
Tentukan parameter penyesuaian untuk workload Anda | Sebaiknya gunakan konfigurasi berikut:
|
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:
|
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 Kemampuan Observasi Google Cloud. 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 | Menggunakan dasbor Monitoring untuk GKE untuk melihat ringkasan umum cluster dan resource penggunaan, dan melihat perincian serta dan dimensi kustom. Untuk mempelajari lebih lanjut, lihat Mengamati cluster GKE. |
Langkah berikutnya
- Pelajari cara Men-deploy sistem batch menggunakan Kueue