Menyediakan Managed Lustre di GKE menggunakan XPK

Dokumen ini menjelaskan cara mengintegrasikan Managed Lustre dengan GKE untuk membuat lingkungan yang dioptimalkan untuk workload yang menuntut dan intensif data seperti kecerdasan buatan (AI), machine learning (ML), dan komputasi berperforma tinggi (HPC).

Dalam dokumen ini, Anda akan menyediakan cluster GKE dengan XPK, membuat instance Lustre Terkelola, dan melampirkannya ke cluster. Untuk menguji konfigurasi ini, Anda menjalankan workload pada node yang menyediakan start fleksibel.

Dokumen ini ditujukan untuk engineer Machine Learning (ML) serta spesialis Data dan AI yang tertarik untuk mempelajari kemampuan orkestrasi container Kubernetes yang didukung oleh instance Managed Lustre. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang dirujuk dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE umum.

Latar belakang

Bagian ini menjelaskan teknologi utama yang digunakan dalam dokumen ini:

XPK

XPK adalah alat yang menyederhanakan penyediaan dan pengelolaan cluster dan workload GKE, terutama untuk tugas AI/ML. XPK membantu menghasilkan infrastruktur yang telah dikonfigurasi dan dioptimalkan untuk pelatihan, sehingga menjadikannya opsi yang baik untuk lingkungan pengujian dan pembuktian konsep.

Anda dapat membuat cluster yang menggunakan TPU dengan menggunakan Google Cloud CLI atau Accelerated Processing Kit (XPK).

  • Gunakan gcloud CLI untuk membuat instance cluster GKE secara manual guna melakukan penyesuaian atau perluasan yang tepat pada lingkungan GKE produksi yang ada.
  • Gunakan XPK untuk membuat cluster GKE dengan cepat dan menjalankan workload untuk pembuktian konsep dan pengujian. Untuk mengetahui informasi selengkapnya, lihat README XPK.

Dokumen ini menggunakan XPK secara eksklusif untuk menyediakan dan mengelola resource.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi Accelerated Processing Kit (XPK).

Flex-start

Dengan Flex-start, Anda dapat mengoptimalkan penyediaan TPU dengan hanya membayar resource yang Anda butuhkan. Mulai fleksibel direkomendasikan jika workload Anda memerlukan penyediaan resource secara dinamis sesuai kebutuhan, hingga tujuh hari dan akses yang hemat biaya.

Dokumen ini menggunakan flex-start sebagai contoh opsi penggunaan, tetapi Anda juga dapat menggunakan opsi lain, misalnya reservasi atau Spot. Untuk mengetahui informasi selengkapnya, lihat Tentang opsi konsumsi akselerator untuk workload AI/ML di GKE.

Managed Lustre

Managed Lustre adalah layanan sistem file paralel berperforma tinggi yang dirancang untuk workload berat. Driver CSI Managed Lustre memungkinkan Anda mengintegrasikan instance Managed Lustre dengan GKE, menggunakan Klaim Volume Persisten (PVC) dan Volume Persisten (PV) Kubernetes standar. Driver ini sangat bermanfaat untuk workload AI, ML, dan HPC yang memerlukan penyimpanan persisten, skalabel, dan ber-throughput tinggi.

Untuk mengetahui informasi selengkapnya, lihat Tentang driver CSI Managed Lustre.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Cloud Managed Lustre API dan Google Kubernetes Engine API.
  • Aktifkan API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Menyiapkan lingkungan Anda

Bagian ini menunjukkan cara menyiapkan lingkungan cluster Anda.

  1. Di jendela terminal baru, buat lingkungan virtual:

    VENV_DIR=~/venvp4;python3 -m venv $VENV_DIR;source $VENV_DIR/bin/activate
    
  2. Instal XPK dengan mengikuti langkah-langkah dalam file penginstalan XPK. Gunakan pip install, bukan meng-clone dari sumber.

  3. Tetapkan variabel lingkungan default:

    gcloud config set project PROJECT_ID
    gcloud config set billing/quota_project PROJECT_ID
    export PROJECT_ID=$(gcloud config get project)
    export LOCATION=LOCATION
    export CLUSTER_NAME=CLUSTER_NAME
    export GKE_VERSION=VERSION
    export NETWORK_NAME=NETWORK_NAME
    export IP_RANGE_NAME=IP_RANGE_NAME
    export FIREWALL_RULE_NAME=FIREWALL_RULE_NAME
    export ACCELERATOR_TYPE=v6e-16
    export NUM_SLICES=1
    

    Ganti nilai berikut:

    Perintah sebelumnya mengonfigurasi jenis akselerator v6e-16. Konfigurasi ini mencakup variabel berikut:

    • ACCELERATOR_TYPE=v6e-16: sesuai dengan TPU Trillium dengan topologi 4x4. Versi TPU ini menginstruksikan GKE untuk menyediakan node pool slice multi-host. v6e-16 dipetakan ke jenis mesin ct6e-standard-4t di GKE.
    • NUM_SLICES=1: jumlah node pool slice TPU yang dibuat XPK untuk ACCELERATOR_TYPE yang Anda pilih.

    Jika Anda ingin menyesuaikan variabel ACCELERATOR_TYPE dan NUM_SLICES, lihat dokumen berikut untuk menemukan kombinasi yang tersedia:

Menyiapkan jaringan VPC

Siapkan jaringan Virtual Private Cloud untuk instance Managed Lustre dan cluster GKE Anda.

  1. Aktifkan Service Networking API:

    gcloud services enable servicenetworking.googleapis.com \
            --project=${PROJECT_ID}
    
  2. Buat jaringan VPC:

    gcloud compute networks create ${NETWORK_NAME} \
            --subnet-mode=auto --project=${PROJECT_ID} \
            --mtu=8896
    
  3. Buat rentang alamat IP untuk peering VPC:

    gcloud compute addresses create ${IP_RANGE_NAME} \
            --global \
            --purpose=VPC_PEERING \
            --prefix-length=20 \
            --description="Managed Lustre VPC Peering" \
            --network=${NETWORK_NAME} \
            --project=${PROJECT_ID}
    
  4. Dapatkan rentang CIDR dari rentang alamat IP:

    CIDR_RANGE=$(
        gcloud compute addresses describe ${IP_RANGE_NAME} \
                --global  \
                --format="value[separator=/](address, prefixLength)" \
                --project=${PROJECT_ID}
    )
    
  5. Buat aturan firewall untuk mengizinkan traffic TCP dari rentang alamat IP:

    gcloud compute firewall-rules create ${FIREWALL_RULE_NAME} \
            --allow=tcp:988,tcp:6988 \
            --network=${NETWORK_NAME} \
            --source-ranges=${CIDR_RANGE} \
            --project=${PROJECT_ID}
    
  6. Hubungkan peering VPC.

    gcloud services vpc-peerings connect \
            --network=${NETWORK_NAME} \
            --project=${PROJECT_ID} \
            --ranges=${IP_RANGE_NAME} \
            --service=servicenetworking.googleapis.com
    

Membuat instance penyimpanan Managed Lustre

Buat instance penyimpanan Managed Lustre.

  1. Tetapkan variabel instance penyimpanan:

    export STORAGE_NAME=STORAGE_NAME
    export STORAGE_THROUGHPUT=STORAGE_THROUGHPUT
    export STORAGE_CAPACITY=STORAGE_CAPACITY_GIB
    export STORAGE_FS=lfs
    

    Ganti nilai berikut:

  2. Buat instance Managed Lustre:

    gcloud lustre instances create ${STORAGE_NAME} \
            --per-unit-storage-throughput=${STORAGE_THROUGHPUT} \
            --capacity-gib=${STORAGE_CAPACITY} \
            --filesystem=${STORAGE_FS} \
            --location=${LOCATION} \
            --network=projects/${PROJECT_ID}/global/networks/${NETWORK_NAME} \
            --project=${PROJECT_ID} \
            --async # Creates the instance asynchronously
    

    Flag --async membuat instance secara asinkron dan memberikan ID operasi untuk melacak statusnya.

  3. Periksa status operasi:

    gcloud lustre operations describe OPERATION_ID  \
            --location=${LOCATION} \
            --project=${PROJECT_ID}
    

    Ganti OPERATION_ID dengan ID dari output perintah asinkron sebelumnya. Jika tidak memiliki ID, Anda dapat mencantumkan semua operasi:

    gcloud lustre operations list \
            --location=${LOCATION} \
            --project=${PROJECT_ID}
    

    Instance siap jika output perintah menampilkan done: true.

Menggunakan XPK untuk membuat cluster GKE

Gunakan XPK untuk membuat cluster GKE dengan node pool.

Buat cluster GKE:

xpk cluster create --cluster ${CLUSTER_NAME} \
        --num-slices=${NUM_SLICES} \
        --tpu-type=${ACCELERATOR_TYPE} \
        --zone=${LOCATION} \
        --project=${PROJECT_ID} \
        --gke-version=${GKE_VERSION} \
        --custom-cluster-arguments="--network=${NETWORK_NAME}" \
        --enable-lustre-csi-driver \
        --flex

Perintah ini akan membuat cluster GKE menggunakan XPK. Cluster dikonfigurasi untuk menggunakan flex-start untuk penyediaan node dan telah mengaktifkan driver CSI Managed Lustre.

Melampirkan instance penyimpanan ke cluster

Untuk mengonfigurasi PersistentVolume (PV) dan PersistentVolumeClaim (PVC), bagian ini menggunakan perintah pemasangan penyimpanan XPK (xpk storage attach) dengan file manifes. Bagian ini menggunakan contoh manifes dari kode sumber XPK.

Lampirkan instance penyimpanan Managed Lustre ke cluster GKE Anda dengan menyelesaikan langkah-langkah berikut:

  1. Download file manifes contoh ke direktori kerja Anda saat ini dan simpan sebagai lustre-manifest-attach.yaml.

  2. Perbarui file manifes dengan informasi instance Managed Lustre Anda:

    1. Di bagian PersistentVolume, ganti nilai berikut:

      • STORAGE_SIZE: ukuran instance Managed Lustre, dalam GiB.
      • PROJECT_ID/ZONE/INSTANCE_NAME: jalur resource lengkap instance Managed Lustre Anda.
      • IP_ADDRESS: alamat IP instance Managed Lustre.
      • FILE_SYSTEM: jenis sistem file, yaitu lfs.
    2. Di bagian PersistentVolumeClaim, ganti nilai berikut:

      • STORAGE_SIZE: Ukuran PersistentVolumeClaim, dalam GiB.
  3. Lampirkan instance penyimpanan ke cluster:

    xpk storage attach ${STORAGE_NAME} \
            --cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION} \
            --type=lustre \
            --mount-point='/lustre-data' \
            --readonly=false \
            --auto-mount=true \
            --manifest='./lustre-manifest-attach.yaml'
    
  4. Pastikan Anda telah melampirkan penyimpanan untuk cluster:

    xpk storage list \
            --cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION}
    

Menjalankan workload

Jalankan beban kerja dengan instance Managed Lustre yang terpasang . Contoh perintah berikut mencantumkan disk yang tersedia dan membuat file "hello" di direktori instance Managed Lustre.

Buat dan jalankan workload:

xpk workload create --workload test-lustre \
--cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION} \
--command="df -h && echo 'hello' > /lustre-data/hello.txt && cat /lustre-data/hello.txt" \
--tpu-type=${ACCELERATOR_TYPE} \
--num-slices=1 \
--flex

Pembersihan

Setelah menyelesaikan langkah-langkah dalam dokumen ini, untuk mencegah timbulnya biaya yang tidak diinginkan pada akun Anda, hapus cluster:

  xpk cluster delete --cluster ${CLUSTER_NAME} \
        --zone ${LOCATION} \
        --project ${PROJECT_ID}

Langkah berikutnya