Panduan ini menjelaskan cara memuat data dalam jumlah besar dari bucket Cloud Storage ke volume Hyperdisk ML Google Kubernetes Engine (GKE) selama penyediaan dinamis menggunakan GKE Volume Populator. Untuk mengetahui informasi selengkapnya, lihat Tentang Pengisi Volume GKE.
Panduan ini ditujukan bagi spesialis penyimpanan yang membuat dan mengalokasikan penyimpanan, serta mengelola keamanan dan akses data. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam Trusted Cloud by S3NS konten, lihat Peran dan tugas pengguna GKE umum.
Pengelolaan node pool untuk GKE Volume Populator dengan Hyperdisk ML
Penentuan ukuran, penyediaan, dan penskalaan kumpulan node yang efisien sangat penting untuk berhasil menjalankan Tugas transfer data yang dibuat oleh GKE Volume Populator untuk mengisi volume ML Hyperdisk. Anda menggunakan kelas komputasi untuk menentukan persyaratan node, seperti jenis dan ukuran mesin, untuk Tugas transfer data tertentu ini. Dengan kelas komputasi, Anda dapat mengontrol biaya dan performa proses transfer data. Untuk mengetahui informasi selengkapnya, lihat Manfaat kelas komputasi kustom.
Untuk memilih cluster yang paling sesuai untuk Tugas transfer data Anda, pahami cara kerja class komputasi dengan berbagai jenis cluster untuk Hyperdisk ML.
Tujuan
Dalam panduan ini, Anda akan melakukan tugas-tugas berikut:
- Konfigurasi lingkungan cluster GKE Anda untuk mendukung transfer data menggunakan GKE Volume Populator, termasuk pembuatan cluster, definisi class komputasi, dan penyiapan izin.
- Buat
GCPDataSource
resource kustom untuk menentukan bucket Cloud Storage sumber. - Tentukan
StorageClass
untuk Hyperdisk ML. - Buat
PersistentVolumeClaim
yang mereferensikanGCPDataSource
untuk memicu pengisian data ke volume ML Hyperdisk. - Verifikasi transfer data.
- Menggunakan volume yang diisi di Pod.
- Bersihkan resource.
Sebelum memulai
Pastikan Anda telah melakukan tugas berikut:
Aktifkan GKE dan Cloud Storage API.
Pastikan penagihan diaktifkan untuk Trusted Cloud by S3NS project Anda.
Download dan instal alat command line Google Cloud CLI, atau gunakan Cloud Shell untuk menjalankan perintah
gcloud CLI
dankubectl
. Cloud Shell adalah lingkungan shell untuk mengelola resource yang dihosting di Trusted Cloud by S3NS. Cloud Shell telah diinstal lebih dulu dengan alat command line gcloud dan kubectl.Buat, atau gunakan bucket Cloud Storage yang sudah ada. Panduan ini mengasumsikan bahwa Anda sudah memiliki bucket Cloud Storage yang diisi dengan data pelatihan model Anda.
Aktifkan driver CSI Persistent Disk Compute Engine pada cluster Standard yang ada yang mungkin telah menonaktifkan driver secara eksplisit. Di cluster Autopilot dan Standard baru, GKE mengaktifkan driver secara default. Penyimpanan ML Hyperdisk tujuan yang Anda buat harus dikelola oleh driver CSI Persistent Disk Compute Engine.
Aktifkan Workload Identity Federation for GKE di cluster Anda. Hal ini memungkinkan akun layanan Kubernetes yang digunakan oleh GKE Volume Populator mengakses bucket Cloud Storage sumber. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan izin yang diperlukan.
Persyaratan
Untuk mentransfer data menggunakan GKE Volume Populator, penuhi persyaratan berikut:
- Cluster GKE Anda harus menjalankan versi
1.33.2-gke.4780000
atau yang lebih baru. - Resource kustom
GCPDataSource
Anda harus berada di namespace yang sama dengan beban kerja GKE Anda. Sumber data yang mencakup namespace yang berbeda tidak didukung. - Pilih VM yang didukung saat Anda membuat class komputasi. Pastikan project Anda memiliki kuota yang cukup untuk jenis mesin yang Anda pilih.
- Nama class komputasi
gcs-to-hdml-compute-class
telah ditentukan sebelumnya untuk Tugas transfer, dan harus ditentukan persis saat Anda membuat class komputasi.
Biaya
Meskipun tidak ada biaya langsung untuk menggunakan GKE Volume Populator, penyimpanan dan transfer data akan menimbulkan biaya penagihan. Biaya tidak langsung terkait mencakup hal berikut:
- Instance Compute Engine yang digunakan oleh GKE: biaya node yang digunakan untuk menjalankan Tugas transfer data. Implikasi biaya dan pengelolaan node bervariasi menurut jenis cluster. Untuk mengetahui informasi selengkapnya, lihat jenis cluster masing-masing di Membuat cluster GKE.
- Ukuran node Tugas Transfer: untuk performa transfer yang optimal, Tugas transfer secara default menskalakan node dengan 24 vCPU. Hal ini berlaku untuk semua jenis cluster. Jika ingin menyesuaikan ukuran dan jenis node untuk pengoptimalan biaya atau performa tertentu, Anda dapat melakukannya saat membuat class komputasi.
- Penyimpanan yang digunakan di bucket Cloud Storage Anda: untuk mengetahui informasi selengkapnya, lihat Harga Cloud Storage.
- Biaya volume Hyperdisk ML: ini mencakup kapasitas dan performa penyimpanan (IOPS/throughput) volume Hyperdisk ML yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Harga Hyperdisk.
Menyiapkan lingkungan Anda
Di bagian ini, Anda akan membuat infrastruktur cluster GKE dengan hardware yang sesuai, dan menyiapkan izin yang diperlukan untuk mengakses data Anda di Cloud Storage.
Sebelum membuat cluster untuk menggunakan GKE Volume Populator dengan Hyperdisk ML, pahami cara menerapkan class komputasi ke berbagai jenis cluster, dan siapa yang bertanggung jawab atas pengelolaan node--GKE atau Anda.
Cara kerja kelas komputasi dengan berbagai jenis cluster untuk Hyperdisk ML
Pengisi Volume GKE menggunakan class komputasi kustom untuk menentukan jenis node yang akan digunakan untuk Tugas transfer data. Tabel berikut menjelaskan perilaku class komputasi Anda, bergantung pada konfigurasi cluster Anda:
Pertimbangan | GKE Autopilot, dan GKE Standard dengan penyediaan otomatis node | GKE Standard tanpa penyediaan otomatis node |
---|---|---|
Setelan class compute | nodePoolAutoCreation diaktifkan |
nodePoolAutoCreation dinonaktifkan |
Pengelolaan node | GKE secara otomatis membuat dan mengelola node. | Anda membuat dan mengelola node secara manual. |
Penskalaan node | Otomatis | Manual |
Pelabelan node | Tidak berlaku | Anda harus memberi label pada node dengan cloud.google.com/compute-class=gcs-to-hdml-compute-class |
Informasi selengkapnya | Penyediaan otomatis node dan class komputasi | Mengonfigurasi node pool yang dibuat secara manual |
GKE memulai Tugas transfer data setelah menyediakan PersistentVolume
untuk PersistentVolumeClaim
. Untuk mengisi volume ML Hyperdisk, PersistentVolumeClaim
ini harus mereferensikan GCPDataSource
, yang menentukan data sumber di Cloud Storage.
Buat cluster GKE Anda
Anda dapat memilih untuk men-deploy pipeline transfer data menggunakan cluster Standard atau Autopilot dengan GKE versi 1.33.2-gke.4780000
atau yang lebih baru. Setiap jenis cluster memiliki kelebihan dan model harganya sendiri.
- Pilih Autopilot untuk pengelolaan cluster yang lebih mudah, efisiensi biaya, dan penskalaan otomatis.
- Pilih Standard dengan penyediaan otomatis node diaktifkan jika Anda memerlukan penskalaan otomatis dengan kontrol lebih besar atas penyediaan node.
- Pilih Standard tanpa pengaktifan penyediaan otomatis node jika Anda memerlukan kontrol maksimum dan merasa nyaman mengelola semua aspek penyediaan, penskalaan, dan pemeliharaan node.
Autopilot
Di cluster Autopilot GKE, GKE secara otomatis menangani pembuatan dan penghapusan node yang diperlukan untuk Tugas transfer data. Setelah Job transfer selesai, resource node akan otomatis diturunkan skalanya. Anda tidak perlu menghapus Pod transfer atau node tempat Pod berjalan secara manual.
Untuk membuat cluster Autopilot baru, jalankan perintah berikut:
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --cluster-version=CLUSTER_VERSION
Ganti kode berikut:
CLUSTER_NAME
: nama untuk cluster yang Anda buat.LOCATION
: region komputasi untuk cluster Anda. Contoh,us-central1
.CLUSTER_VERSION
: versi GKE untuk cluster. Gunakan1.33.2-gke.4780000
dalam panduan ini.
Standard (dengan penyediaan otomatis node)
Di cluster GKE Standard dengan penyediaan otomatis node diaktifkan, GKE secara otomatis menangani pembuatan dan penghapusan node yang diperlukan untuk Tugas transfer data. Setelah Job transfer selesai, resource node akan otomatis diturunkan skalanya. Anda tidak perlu menghapus Pod transfer atau node tempat Pod berjalan secara manual.
Untuk membuat cluster Standard baru dengan penyediaan otomatis node diaktifkan, jalankan perintah berikut:
gcloud container clusters create CLUSTER_NAME \ --cluster-version=CLUSTER_VERSION \ --location=LOCATION \ --project=PROJECT_ID \ --workload-pool=PROJECT_ID.svc.id.goog \ --enable-autoprovisioning \ --min-cpu MINIMUM_CPU \ --min-memory MINIMUM_MEMORY \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Ganti kode berikut:
CLUSTER_NAME
: nama cluster yang Anda buat dengan penyediaan otomatis node yang diaktifkan.CLUSTER_VERSION
: versi GKE untuk cluster. Gunakan1.33.2-gke.4780000
dalam panduan ini.LOCATION
: zona atau region komputasi untuk cluster Anda. Misalnyaus-central1-a
atauus-central1
.PROJECT_ID
: Trusted Cloud by S3NS Project ID Anda.MINIMUM_CPU
: jumlah minimum vCPU untuk penyediaan otomatis. Contoh,10
.MINIMUM_MEMORY
: jumlah minimum memori dalam GiB untuk penyediaan otomatis. Contoh,200
.MAXIMUM_CPU
: jumlah maksimum vCPU yang akan disediakan secara otomatis. Contoh,100
. Batas ini adalah total resource CPU di semua node pool yang dibuat secara manual dan semua node pool yang mungkin dibuat secara otomatis oleh GKE.MAXIMUM_MEMORY
: jumlah memori maksimum yang akan disediakan otomatis. Contoh,1000
. Batas ini adalah total resource memori di semua node pool yang ada dan dibuat secara manual serta semua node pool yang mungkin dibuat secara otomatis oleh GKE.
Standard (tanpa penyediaan otomatis node)
Untuk menggunakan Pengisi Volume GKE di cluster Standard yang tidak mengaktifkan penyediaan otomatis node, Anda dapat menggunakan node pool yang ada atau membuat node pool transfer khusus. Node harus memiliki kapasitas untuk menjalankan Tugas transfer dan label yang cocok dengan compute-class
.
Tentukan class komputasi gcs-to-hdml-compute-class
sebagai label node saat Anda membuat cluster dan node pool. Perhatikan bahwa nama class komputasi, gcs-to-hdml-compute-class
, telah ditentukan sebelumnya untuk Tugas transfer, dan harus ditentukan dengan tepat.
Untuk membuat cluster Standard baru tanpa penyediaan otomatis node, dan node pool baru dalam cluster tersebut, jalankan perintah berikut:
gcloud container clusters create CLUSTER_NAME \ --cluster-version=CLUSTER_VERSION \ --location=LOCATION \ --num-nodes=1 \ --project=PROJECT_ID \ --workload-pool=PROJECT_ID.svc.id.goog gcloud container node-pools create NODE_POOL_NAME\ --cluster=CLUSTER_NAME \ --location=LOCATION \ --num-nodes=1 \ --machine-type=c3-standard-44 \ --node-labels="cloud.google.com/compute-class=gcs-to-hdml-compute-class" \ --node-taints="cloud.google.com/compute-class=gcs-to-hdml-compute-class:NoSchedule"
Ganti kode berikut:
CLUSTER_NAME
: nama untuk cluster yang Anda buat tanpa mengaktifkan penyediaan otomatis node.CLUSTER_VERSION
: versi GKE untuk cluster. Gunakan1.33.2-gke.4780000
dalam panduan ini.LOCATION
: region komputasi untuk cluster Anda. Misalnyaus-central1-a
atauus-central1
.PROJECT_ID
project ID Trusted Cloud by S3NS Anda.NODE_POOL_NAME
: nama untuk node pool yang Anda buat di cluster baru. Node pool ini digunakan oleh GKE Volume Populator untuk men-deploy Tugas transfer data sementara.
Untuk menghindari biaya yang tidak perlu, jalankan perintah gcloud container node-pools delete
untuk menghapus node pool transfer yang dibuat secara manual setelah transfer data selesai.
Buat class komputasi Anda
Untuk membuat class komputasi guna menentukan dan memprioritaskan jenis VM yang dapat digunakan sebagai node di cluster Anda, ikuti langkah-langkah berikut:
- Simpan manifes berikut sebagai
computeclass.yaml
:Dengan penyediaan otomatis node
Untuk cluster Autopilot, dan cluster Standard dengan penyediaan otomatis node diaktifkan, tentukan class komputasi Anda dengan bagian
nodePoolAutoCreation
sebagai berikut. Jika penyediaan otomatis node diaktifkan, GKE akan otomatis membuat node pool baru dengan label class komputasigcs-to-hdml-compute-class
.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: gcs-to-hdml-compute-class spec: priorities: - machineFamily: c3 - machineFamily: c3d nodePoolAutoCreation: enabled: true whenUnsatisfiable: DoNotScaleUp
Tanpa penyediaan otomatis node
Untuk cluster Standar tanpa penyediaan otomatis node yang diaktifkan, tentukan class komputasi Anda tanpa bagian
nodePoolAutoCreation
sebagai berikut. Pastikan Anda telah membuat node pool dengan label class komputasigcs-to-hdml-compute-class
.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: gcs-to-hdml-compute-class spec: priorities: - machineFamily: c3 - machineFamily: c3d whenUnsatisfiable: DoNotScaleUp
Anda dapat menentukan
machineFamily
yang kompatibel untuk memenuhi kebutuhan transfer data Anda. Untuk mengetahui informasi selengkapnya tentang pemilihan jenis mesin yang sesuai, lihat Dukungan seri mesin untuk Hyperdisk ML. - Untuk membuat class komputasi, terapkan manifes:
kubectl apply -f computeclass.yaml
Menyiapkan izin yang diperlukan
Untuk mentransfer data dari bucket Cloud Storage, siapkan izin yang diperlukan untuk Workload Identity Federation for GKE. Dengan izin yang sesuai, tugas transfer yang dibuat oleh GKE Volume Populator dapat mengakses bucket Cloud Storage Anda. Panduan ini mengasumsikan bahwa Anda sudah memiliki bucket Cloud Storage yang diisi dengan data pelatihan model yang ingin Anda transfer.
Membuat namespace Kubernetes:
kubectl create namespace NAMESPACE
Ganti
NAMESPACE
dengan namespace tempat Anda ingin menjalankan beban kerja.Lewati langkah ini jika Anda menggunakan namespace yang sudah ada.
Buat akun layanan Kubernetes.
kubectl create serviceaccount KSA_NAME \ --namespace=NAMESPACE
Ganti kode berikut:
KSA_NAME
: nama akun layanan Kubernetes yang akan Anda tentukan di resourceGCPDataSource
. Tugas transfer yang dibuat oleh GKE Volume Populator menggunakan akun layanan ini untuk melakukan autentikasi ke Trusted Cloud by S3NS API.NAMESPACE
: namespace Kubernetes yang Anda buat di langkah sebelumnya.
Berikan peran yang sesuai ke akun layanan IAM Anda untuk mengakses bucket Cloud Storage Anda:
gcloud storage buckets \ add-iam-policy-binding gs://GCS_BUCKET \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \ --role "ROLE"
Ganti kode berikut:
GCS_BUCKET
: nama bucket Cloud Storage Anda.PROJECT_NUMBER
: ID numerik project tempat Anda membuat cluster. Trusted Cloud by S3NS Untuk menemukan nomor project Anda, lihat Mengidentifikasi project.PROJECT_ID
: Trusted Cloud by S3NS Project ID Anda.NAMESPACE
: namespace yang Anda buat sebelumnya tempat workload Anda akan berjalan.KSA_NAME
: nama akun layanan Kubernetes yang Anda tentukan di resourceGCPDataSource
. Tugas transfer yang dibuat oleh GKE Volume Populator menggunakan akun layanan ini untuk melakukan autentikasi ke Trusted Cloud by S3NS API.ROLE
: peran IAM yang ingin Anda berikan ke akun layanan Anda. Untuk tujuan panduan ini, berikan peranroles/storage.objectViewer
untuk mengizinkan pembacaan dari bucket.
PROJECT_NUMBER
,PROJECT_ID
,NAMESPACE
, danKSA_NAME
digunakan untuk membuat ID utama Workload Identity Federation for GKE untuk project Anda.
Membuat volume Hyperdisk ML dengan data yang sudah dimuat sebelumnya
Lakukan langkah-langkah berikut untuk menyiapkan infrastruktur dan konfigurasi GKE yang diperlukan untuk membuat volume ML Hyperdisk, serta untuk memicu dan mengelola proses transfer data otomatis menggunakan GKE Volume Populator:
- Buat resource kustom
GCPDataSource
untuk menentukan sumber data. - Buat StorageClass untuk menentukan jenis penyimpanan persisten (volume Hyperdisk ML) yang akan digunakan.
- Buat PersistentVolumeClaim untuk mengaktifkan penyediaan penyimpanan dinamis, dan mengaktifkan akses ke volume Hyperdisk ML yang baru disediakan.
- (Opsional) Lihat progres transfer data.
- Buat dan deploy Pod yang menggunakan volume Hyperdisk ML.
Membuat resource kustom GCPDataSource
Buat resource kustom GCPDataSource
di GKE untuk menentukan lokasi bucket Cloud Storage sumber dan akun layanan dengan izin yang diperlukan untuk mengakses bucket tersebut. Definisi resource kustom (CRD) ini khusus untuk GKE Volume Populator.
Simpan manifes berikut sebagai
gcpdatasource.yaml
.apiVersion: datalayer.gke.io/v1 kind: GCPDataSource metadata: name: GCP_DATA_SOURCE namespace: NAMESPACE spec: cloudStorage: serviceAccountName: KSA_NAME uri: gs://GCS_BUCKET/
Ganti nilai berikut:
- GCP_DATA_SOURCE: nama CRD
GCPDataSource
yang menyimpan referensi ke bucket Cloud Storage Anda. Untuk mengetahui informasi selengkapnya, lihat referensi CRDGCPDataSource
. - NAMESPACE: namespace yang sama tempat workload Anda berjalan. Resource kustom
GCPDataSource
dibuat di namespace ini. - KSA_NAME: nama akun layanan Kubernetes yang Anda tentukan di resource
GCPDataSource
. Tugas transfer yang dibuat oleh GKE Volume Populator menggunakan akun layanan ini untuk melakukan autentikasi ke Trusted Cloud by S3NS API. NilaicloudStorage.serviceAccountName
adalah akun layanan Kubernetes yang Anda siapkan untuk Workload Identity Federation for GKE di bagian Menyiapkan izin yang diperlukan. - GCS_BUCKET: nama bucket Cloud Storage Anda. Kolom
uri
menentukan data sumber.- Untuk menyalin seluruh bucket, gunakan
gs://GCS_BUCKET/
. - Untuk menyalin data dari folder tertentu dalam bucket, gunakan format
gs://GCS_BUCKET/PATH_INSIDE_BUCKET/
. Misalnya, untuk menyalin data dari foldergemma/v1.0/weights/
di dalam bucketmy-project-llm-models
, URI-nya adalahgs://my-project-llm-models/gemma/v1.0/weights/
. Pastikan jalur diakhiri dengan garis miring untuk menunjukkan folder.
- Untuk menyalin seluruh bucket, gunakan
- GCP_DATA_SOURCE: nama CRD
Untuk membuat resource
GCPDataSource
, terapkan manifes:kubectl apply -f gcpdatasource.yaml
Membuat StorageClass Hyperdisk ML
Buat StorageClass yang menggunakan penyedia pd.csi.storage.gke.io untuk menyediakan volume Hyperdisk ML di zona pilihan Anda. Jika ingin salinan data Anda dapat diakses di lebih dari satu zona, Anda dapat membuat StorageClass multi-zona. Berikut adalah contoh StorageClass multi-zona.
Simpan manifes berikut sebagai
hdml-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: hyperdisk-ml-single-zone parameters: type: hyperdisk-ml provisioned-throughput-on-create: "2400Mi" provisioner: pd.csi.storage.gke.io allowVolumeExpansion: false reclaimPolicy: Delete volumeBindingMode: Immediate allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: - ZONE
Ganti
ZONE
dengan zona target tempat Anda ingin membuat volume Hyperdisk ML:- Untuk cluster GKE Standard tanpa penyediaan otomatis node, nilai
ZONE
harus berupa lokasi tempat Anda membuat node. - Untuk cluster GKE Autopilot atau Standard dengan penyediaan otomatis node, nilai
ZONE
harus berupa lokasi tempat cluster Anda dapat melakukan penskalaan dan membuat node baru jika diperlukan.
- Untuk cluster GKE Standard tanpa penyediaan otomatis node, nilai
(Opsional) Untuk mencantumkan lokasi node cluster Anda, jalankan perintah berikut:
gcloud container clusters describe CLUSTER_NAME --location=LOCATION --format="value(locations)"
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.LOCATION
: zona atau region komputasi untuk cluster Anda. Misalnyaus-central1-a
atauus-central1
.
Untuk membuat StorageClass, terapkan manifes :
kubectl apply -f hdml-class.yaml
Membuat PersistentVolumeClaim untuk mengakses volume
Manifes berikut menunjukkan contoh cara membuat PersistentVolumeClaim dalam mode akses ReadOnlyMany yang mereferensikan StorageClass yang Anda buat sebelumnya.
Simpan manifes berikut sebagai
volume-populator-pvc.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: PVC_NAME namespace: NAMESPACE spec: accessModes: - ReadOnlyMany storageClassName: hyperdisk-ml-single-zone resources: requests: storage: DISK_SIZE dataSourceRef: apiGroup: datalayer.gke.io kind: GCPDataSource name: GCP_DATA_SOURCE
Ganti nilai berikut:
PVC_NAME
: nama PersistentVolumeClaim tempat Anda ingin mentransfer data.NAMESPACE
: namespace tempat workload Anda akan berjalan.DISK_SIZE
: ukuran disk, dalam gigabyte, yang akan dibuat untuk mengisi data. Agar data berhasil diisi, pastikan ukuran disk yang diminta lebih besar daripada ukuran data model Anda yang ada di bucket Cloud Storage. Agar sesuai dengan rentang yang didukung untuk volume Hyperdisk ML, nilaiDISK_SIZE
harus lebih besar dari 4 Gi. Untuk mengetahui informasi selengkapnya, lihat Batas ukuran volume Hyperdisk.GCP_DATA_SOURCE
: namaGCPDataSource
CRD yang menyimpan referensi ke bucket Cloud Storage Anda.
Anda dapat menyesuaikan transfer data dengan menambahkan anotasi opsional ke PVC. Anotasi ini memengaruhi perilaku Tugas transfer pokok yang menyalin data ke volume ML Hyperdisk Anda.
volume-populator.datalayer.gke.io/cpu-request
: Gunakan anotasi ini untuk menentukan permintaan resource CPU yang berbeda untuk transferJob
. Jika Anda tidak menentukan permintaan resource CPU yang berbeda, PVC akan meminta 24 vCPU secara default untuk mengoptimalkan performa transfer.volume-populator.datalayer.gke.io/transfer-path
: Gunakan anotasi ini untuk menentukan jalur tujuan di dalam volume baru yang akan menyimpan data yang disalin dari resourceGCPDataSource
Anda. Jika Anda tidak menentukan jalur yang berbeda, data akan disalin ke jalur root dalam volume ML Hyperdisk.
Untuk membuat PVC, terapkan manifes:
kubectl apply -f volume-populator-pvc.yaml
Perhatikan poin-poin berikut:
- Jika Anda menyetel kolom
volumeBindingMode
di StorageClass keimmediate
, transfer data akan segera dipicu saat men-deploy PVC. - Jika Anda menyetel kolom
volumeBindingMode
di StorageClass keWaitForFirstConsumer
, transfer data hanya dipicu setelah Anda men-deploy Pod yang meminta PVC dan Pod tersebut berhasil dijadwalkan ke node. Meskipun Pod Anda dapat dijadwalkan, container-nya akan menunggu untuk dimulai hingga transfer data selesai dan volume siap digunakan.
Untuk memeriksa progres transfer data Anda, lihat Melihat progres transfer data. Jika Anda mengalami error selama penyediaan resource atau transfer data, lihat Memecahkan masalah transfer data GKE Volume Populator.
(Opsional) Melihat progres transfer data
Bagian ini menunjukkan cara melacak progres dan keberhasilan transfer data dari bucket Cloud Storage ke volume ML Hyperdisk.
Untuk memverifikasi status PersistentVolumeClaim, jalankan perintah berikut. Anda juga dapat menjalankan perintah ini jika operasi pengikatan PersistentVolumeClaim Anda memerlukan waktu terlalu lama untuk diselesaikan.
kubectl describe pvc PVC_NAME -n NAMESPACE
Ganti kode berikut:
PVC_NAME
: nama PVC yang Anda buat di bagian Buat PersistentVolumeClaim untuk mengakses volume.NAMESPACE
: namespace yang digunakan di seluruh panduan ini, yang Anda buat di bagian Siapkan izin yang diperlukan.
Di output, tinjau peristiwa PersistentVolumeClaim untuk memantau progres transfer data. GKE mencatat peristiwa sekitar satu kali per menit. Outputnya mirip dengan hal berikut ini:
Name: vp-pvc Namespace: default StorageClass: hyperdisk-ml-single-zone Status: Bound Volume: pvc-f7ae2ee2-106d-4b87-b458-481a3ff82b62 Labels: <none> Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: pd.csi.storage.gke.io volume.kubernetes.io/storage-provisioner: pd.csi.storage.gke.io Finalizers: [kubernetes.io/pvc-protection] Capacity: 200Gi Access Modes: ROX VolumeMode: Filesystem DataSource: APIGroup: datalayer.gke.io Kind: GCPDataSource Name: vp-gds Used By: verify-data-665cfd4dbf-mwc7t verify-data-665cfd4dbf-n7xw9 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 9m8s persistentvolume-controller Error saving claim: Operation cannot be fulfilled on persistentvolumeclaims "vp-pvc": the object has been modified; please apply your changes to the latest version and try again Normal Provisioning 9m5s pd.csi.storage.gke.io_gke-f110123a1cbd44cdaa7a-921b-b1f4-vm_1a100bd9-5231-4f20-8e65-1f8e995a03c0 External provisioner is provisioning volume for claim "default/vp-pvc" Normal Provisioning 9m5s external-provisioner Assuming an external populator will provision the volume Normal PopulateOperationStartSuccess 8m58s gkevolumepopulator-populator populateFn: Populate operation started for zone us-central1-c Normal TransferInProgress 8m58s (x2 over 8m58s) gkevolumepopulator-populator populateCompleteFn: For PVC vp-pvc in namespace default, transfer job with request ID populator-job-2304531e-4937-4534-a1a4-3eb11e5cb39f in zone us-central1-c waiting for pod to get created Normal TransferInProgress 6m10s (x14 over 8m57s) gkevolumepopulator-populator populateCompleteFn: For PVC vp-pvc in namespace default, transfer job in zone us-central1-c with request ID populator-job-2304531e-4937-4534-a1a4-3eb11e5cb39f is still active with pod status as - Phase: Pending Normal ExternalProvisioning 3m35s (x24 over 9m5s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'pd.csi.storage.gke.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered. Normal TransferJobCompleted 3m24s (x2 over 3m26s) gkevolumepopulator-populator populateCompleteFn: For PVC vp-pvc in namespace default, job with request ID populator-job-2304531e-4937-4534-a1a4-3eb11e5cb39f for zone us-central1-c completed successfully Normal TransferJobCompleted 3m24s (x2 over 3m26s) gkevolumepopulator-populator populateCompleteFn: For PVC vp-pvc in namespace default, transfer job for all zones have completed successfully Normal PopulateOperationFinished 3m24s (x2 over 3m26s) gkevolumepopulator-populator Populate operation finished Normal PopulatorFinished 3m19s (x3 over 3m20s) gkevolumepopulator-populator Populator finished
Mungkin perlu waktu beberapa menit agar operasi pengisian dimulai, bergantung pada ukuran data. Jika Anda tidak melihat progres transfer data setelah beberapa menit, lihat Memecahkan masalah transfer data GKE Volume Populator untuk mendapatkan bantuan.
Untuk transfer data volume Hyperdisk ML multizona, Tugas ditandai selesai hanya jika data berhasil ditransfer ke semua zona yang ditentukan dalam StorageClass. Jika Tugas transfer gagal untuk satu atau beberapa zona, Pengisi Volume GKE akan mencoba lagi mentransfer data tanpa batas selama PVC ada.
Buat dan deploy Pod yang menggunakan volume
Untuk membuat Pod guna memverifikasi konten PVC yang telah diisi dengan data:
Simpan manifes berikut sebagai
verify-data.yaml
:apiVersion: v1 kind: Pod metadata: name: verify-data namespace: NAMESPACE spec: nodeSelector: cloud.google.com/compute-class: gcs-to-hdml-compute-class containers: - name: verify-data image: busybox command: - sleep - infinity volumeMounts: - mountPath: /models name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: PVC_NAME
Ganti kode berikut:
NAMESPACE
: namespace tempat PVC Anda berada dan tempat Anda ingin membuat Podverify-data
.PVC_NAME
: nama PVC yang Anda buat untuk pengisian data di bagian Buat PersistentVolumeClaim untuk mengakses volume.
Buat Pod dengan perintah berikut:
kubectl create -f verify-data.yaml
Untuk mencantumkan file, jalankan perintah berikut:
kubectl exec -it verify-data -- /bin/sh # cd /models && ls
Jika perintah berhasil, Anda dapat menemukan data yang diisi di direktori /models
dalam bucket Cloud Storage Anda.
Pembersihan
Untuk menghindari biaya yang tidak perlu dan menghapus resource yang salah dikonfigurasi atau tidak memiliki pemilik, ikuti langkah-langkah untuk menghapus PersistentVolumeClaim dengan benar.
Menghapus PersistentVolumeClaim selama penyediaan dinamis
Jika Anda perlu menghapus PersistentVolumeClaim saat data masih ditransfer selama penyediaan dinamis, gunakan langkah-langkah berikut untuk penghapusan yang benar. Penghapusan yang benar dapat memerlukan waktu beberapa saat untuk diselesaikan.
Ganti variabel relevan berikut selama proses penghapusan:
POD_NAME
: nama Pod yang Anda buat di bagian Membuat dan men-deploy Pod yang menggunakan volume.NAMESPACE
: namespace tempat PVC Anda berada.PVC_NAME
: nama PVC yang Anda buat di bagian Membuat PersistentVolumeClaim untuk mengakses volume.GCP_DATA_SOURCE
: nama resource kustomGCPDataSource
yang Anda buat di bagian Membuat resource kustomGCPDataSource
.
Hapus Pod workload:
kubectl delete pod POD_NAME -n NAMESPACE
Temukan nama PersistentVolumeClaim sementara:
# Store the relevant environment variables export PVC_NAME=PVC_NAME export NAMESPACE=NAMESPACE
# Check the status export PVC_UID=$(kubectl get pvc ${PVC_NAME} -n ${NAMESPACE} -o jsonpath='{.metadata.uid}') export TEMP_PVC=prime-${PVC_UID} echo ${TEMP_PVC}
Hapus PVC yang dibuat di namespace:
kubectl delete pvc PVC_NAME -n NAMESPACE
PVC mungkin terjebak dalam status
Terminating
:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE vp-pvc Terminating hyperdisk-ml <unset> 7m23s
Jika ya, bersihkan PVC secara manual dengan menghapus finalizer-nya:
kubectl patch pvc PVC_NAME -n NAMESPACE -p '{"metadata":{"finalizers":null}}'
Hapus resource
GCPDataSource
hanya setelah PVC dihapus. Menghapus resourceGCPDataSource
terlebih dahulu akan menyebabkan penghapusan PVC macet.kubectl delete gcpdatasource GCP_DATA_SOURCE -n NAMESPACE
Pastikan resource sementara dihapus.
Langkah berikutnya
- Pelajari Tentang GKE Volume Populator.
- Untuk mendapatkan bantuan terkait masalah transfer data, lihat Memecahkan masalah transfer data GKE Volume Populator.
- Untuk contoh workload Hyperdisk ML lanjutan, lihat Mempercepat pemuatan data AI/ML dengan Hyperdisk ML.