Menyediakan dan menggunakan penyimpanan efemeral yang didukung SSD Lokal


Halaman ini menjelaskan cara menyediakan penyimpanan SSD Lokal di cluster Google Kubernetes Engine (GKE), dan cara mengonfigurasi workload untuk menggunakan data dari penyimpanan efemeral yang didukung SSD Lokal yang dilampirkan ke node di cluster Anda.

Untuk mempelajari dukungan SSD Lokal lebih lanjut di GKE, lihat Tentang penyimpanan SSD Lokal.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine 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 gcloud components update.

Membuat cluster atau node pool dengan penyimpanan efemeral yang didukung SSD Lokal

Gunakan Google Cloud CLI untuk membuat cluster atau node pool dengan penyimpanan efemeral yang didukung SSD Lokal.

Gunakan opsi --ephemeral-storage-local-ssd untuk menambahkan penyimpanan efemeral lokal terkelola sepenuhnya yang didukung oleh volume SSD Lokal. Penyimpanan ini terikat dengan siklus proses Pod Anda. Saat Pod meminta penyimpanan efemeral, GKE akan menjadwalkannya untuk berjalan di node yang memiliki volume SSD Lokal yang dikonfigurasi sebagai penyimpanan efemeral. Jika Anda menginginkan kontrol yang lebih khusus atau terperinci atas SSD Lokal, sebaiknya gunakan block storage mentah yang didukung SSD Lokal.

Jika ada penskalaan otomatis cluster yang aktif, GKE akan menskalakan otomatis node Anda saat cluster memerlukan lebih banyak ruang penyimpanan efemeral. Pod dapat mengakses data terkait volume SSD Lokal melalui volume emptyDir.

Perintah gcloud CLI yang Anda jalankan untuk membuat cluster atau node pool bergantung pada generasi seri mesin dari jenis mesin yang dipilih. Misalnya, jenis mesin N1 dan N2 masing-masing termasuk dalam seri mesin generasi pertama dan kedua, sedangkan jenis mesin C3 termasuk dalam seri mesin generasi ketiga.

Membuat cluster dengan SSD Lokal

Generasi ke-1 atau ke-2

Jika Anda menggunakan jenis mesin dari seri mesin generasi pertama atau kedua, buat cluster dengan menentukan opsi --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS. Opsi ini menyediakan jumlah volume SSD Lokal yang ditentukan di setiap node untuk digunakan sebagai penyimpanan efemeral kubelet.

Setelan ini hanya berlaku untuk node pool default. Jika node pool berikutnya memerlukan SSD Lokal, tentukan opsi tersebut selama pembuatan node pool.

Untuk membuat cluster yang berjalan di GKE versi 1.25.3-gke.1800 atau yang lebih baru dan pool default-nya menggunakan volume SSD Lokal, jalankan perintah berikut:

gcloud container clusters create CLUSTER_NAME \
    --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
    --machine-type=MACHINE_TYPE \
    --release-channel CHANNEL_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • NUMBER_OF_DISKS: jumlah volume SSD Lokal yang akan disediakan di setiap node. Volume ini digabungkan menjadi satu volume logis selama penyiapan node. Jumlah maksimum volume bervariasi menurut jenis mesin dan region. Perlu diketahui bahwa beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.
  • MACHINE_TYPE: jenis mesin yang akan digunakan. Kolom ini wajib diisi, karena SSD Lokal tidak dapat digunakan dengan jenis e2-medium default.
  • CHANNEL_NAME: saluran rilis yang menyertakan versi GKE yang lebih baru dari 1.25.3-gke.1800. Jika memilih untuk tidak menggunakan saluran rilis, Anda juga dapat menggunakan flag --cluster-version sebagai ganti --release-channel, yang menentukan versi valid yang lebih baru dari 1.25.3-gke.1800. Untuk menentukan versi yang valid, gunakan perintah gcloud container get-server-config.

Generasi ke-3

Jika menggunakan jenis mesin dari seri mesin generasi ketiga, Anda tidak perlu menentukan opsi SSD Lokal apa pun saat membuat cluster. Jumlah disk yang ditambahkan ke setiap node bergantung pada jenis mesin.

Untuk membuat cluster, jalankan perintah berikut:

gcloud container clusters create CLUSTER_NAME \
  --machine-type=MACHINE_TYPE \
  --cluster-version CLUSTER_VERSION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • MACHINE_TYPE: jenis mesin yang akan digunakan dari seri mesin generasi ketiga.
  • CLUSTER_VERSION: versi cluster GKE yang mendukung SSD Lokal pada jenis mesin dari seri mesin generasi ketiga.

Membuat node pool dengan SSD Lokal

Generasi ke-1 atau ke-2

Untuk membuat node pool yang berjalan di GKE versi 1.25.3-gke.1800 atau yang lebih baru dan menggunakan volume SSD Lokal, jalankan perintah berikut:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
    --machine-type=MACHINE_TYPE

Ganti kode berikut:

  • POOL_NAME: nama node pool baru.
  • CLUSTER_NAME: nama cluster.
  • NUMBER_OF_DISKS: jumlah volume SSD Lokal yang akan disediakan di setiap node. Volume ini digabungkan menjadi satu volume logis selama penyiapan node. Jumlah maksimum volume bervariasi menurut jenis mesin dan region. Perlu diketahui bahwa beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.
  • MACHINE_TYPE: jenis mesin yang akan digunakan. Kolom ini wajib diisi, karena SSD Lokal tidak dapat digunakan dengan jenis e2-medium default.

Generasi ke-3

Jika menggunakan jenis mesin dari seri mesin generasi ketiga, Anda tidak perlu menentukan opsi SSD Lokal apa pun saat membuat node pool. Jumlah volume yang ditambahkan ke setiap node bergantung pada jenis mesin.

Untuk membuat node pool, jalankan perintah berikut:

gcloud container node-pools create POOL_NAME \
  --cluster=CLUSTER_NAME \
  --machine-type=MACHINE_TYPE \
  --node-version NODE_VERSION

Ganti kode berikut:

  • POOL_NAME: nama node pool baru.
  • CLUSTER_NAME: nama cluster.
  • MACHINE_TYPE: jenis mesin yang akan digunakan dari seri mesin generasi ketiga.
  • NODE_VERSION: versi node pool GKE yang mendukung SSD Lokal pada jenis mesin dari seri mesin generasi ketiga.

Node di node pool dibuat dengan label cloud.google.com/gke-ephemeral-storage-local-ssd=true. Anda dapat memverifikasi label dengan menjalankan perintah berikut:

kubectl describe node NODE_NAME

Menggunakan penyimpanan efemeral yang didukung SSD Lokal dengan cluster Autopilot

Anda dapat menggunakan SSD Lokal di class komputasi Autopilot berikut:

  • Performance
  • Accelerator

Untuk class Performance, ikuti petunjuk untuk menggunakan SSD Lokal di Pod class Performa.

Untuk class komputasi Accelerator, Anda dapat menggunakan SSD Lokal untuk penyimpanan efemeral jika menggunakan GPU L4 NVIDIA, dan menjalankan patch GKE versi 1.28.6-gke.1369000 dan yang lebih baru atau 1.29.1-gke.1575000 dan yang lebih baru. GPU NVIDIA H100 (80 GB) dan GPU NVIDIA A100 (80 GB) selalu menggunakan SSD Lokal untuk penyimpanan sementara, dan Anda tidak dapat menentukan pemilih node berikut untuk GPU tersebut.

Untuk menggunakan SSD Lokal untuk penyimpanan efemeral, tambahkan nodeSelector cloud.google.com/gke-ephemeral-storage-local-ssd: "true" ke manifes workload Anda. Spesifikasi Pod Anda akan terlihat seperti contoh berikut:

apiVersion: v1
kind: Pod
metadata:
  name: l4-localssd-pod
spec:
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      requests:
        cpu: 16
        memory: 64Gi
        ephemeral-storage: 800Gi
      limits:
       cpu: 16
       memory: 64Gi
       ephemeral-storage: 800Gi
       nvidia.com/gpu: 8
  nodeSelector:
    cloud.google.com/gke-accelerator: nvidia-l4
    cloud.google.com/gke-ephemeral-storage-local-ssd: "true"

Menggunakan parameter API lama

Opsi --local-ssd-count adalah parameter API lama yang mendukung SSD Lokal SCSI. Seri mesin generasi ketiga Compute Engine tidak mendukung SCSI dan hanya mendukung NVMe. Anda hanya boleh menggunakan opsi dengan cluster Windows Server. Jika saat ini Anda menggunakan parameter API lama di cluster Linux, sebaiknya gunakan opsi --ephemeral-storage-local-ssd.

SSD lokal di cluster Windows Server

Saat menggunakan SSD Lokal dengan cluster yang menjalankan node pool Windows Server, Anda harus login ke node tersebut dan memformat volumenya sebelum menggunakannya. Pada contoh berikut, volume SSD Lokal diformat dengan sistem file NTFS. Anda juga dapat membuat direktori di volume. Dalam contoh ini, direktorinya ada di dalam disk D.

PS C:\> Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ntfs -Confirm:$false
PS C:\> mkdir D:\test-ssd

Mengakses volume SSD Lokal

Contoh berikut menunjukkan cara mengakses penyimpanan efemeral yang didukung SSD Lokal.

Penyimpanan efemeral sebagai volume emptyDir

Node pool GKE dapat dikonfigurasi agar menggunakan SSD Lokal untuk penyimpanan efemeral, termasuk volume emptyDir.

Manifes Pod berikut menggunakan emptyDir dan pemilih node cloud.google.com/gke-ephemeral-storage-local-ssd. Anda dapat menerapkan teknik yang serupa untuk manifes Deployment atau manifes StatefulSet.

Saat memilih permintaan resource penyimpanan efemeral, pertimbangkan kapasitas SSD Lokal yang dicadangkan untuk penggunaan sistem.

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  containers:
    - name: CONTAINER_NAME
      image: "registry.k8s.io/pause"
      resources:
        requests:
          ephemeral-storage: "200Gi"
      volumeMounts:
        - mountPath: /cache
          name: scratch-volume
  nodeSelector:
    cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
  volumes:
    - name: scratch-volume
      emptyDir: {}

Pemecahan masalah

Untuk mengetahui petunjuk pemecahan masalah, lihat Memecahkan masalah penyimpanan di GKE.

Langkah berikutnya