Menskalakan performa penyimpanan dengan Hyperdisk


Driver CSI Persistent Disk Compute Engine adalah cara utama untuk mengakses Penyimpanan Hyperdisk dengan cluster Google Kubernetes Engine (GKE).

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.

Persyaratan

Untuk menggunakan volume Hyperdisk di GKE, cluster Anda harus memenuhi persyaratan berikut:

Membuat volume Hyperdisk untuk GKE

Bagian ini menyajikan ringkasan tentang pembuatan volume Hyperdisk yang didukung oleh driver CSI Compute Engine di GKE.

Membuat StorageClass

Kolom Type penyimpanan Persistent Disk berikut disediakan oleh driver CSI Persistent Disk Compute Engine untuk mendukung Hyperdisk:

  • hyperdisk-balanced
  • hyperdisk-throughput
  • hyperdisk-extreme
  • hyperdisk-ml

Untuk membuat StorageClass baru dengan level throughput atau IOPS yang Anda inginkan, gunakan pd.csi.storage.gke.io di kolom penyedia, dan tentukan salah satu jenis penyimpanan Hyperdisk.

Setiap jenis Hyperdisk memiliki nilai default untuk performa yang ditentukan oleh ukuran disk awal yang disediakan. Saat membuat StorageClass, Anda dapat menentukan parameter berikut secara opsional, bergantung pada jenis Hyperdisk Anda. Jika Anda menghapus parameter ini, GKE akan menggunakan default jenis disk berbasis kapasitas. Untuk panduan tentang nilai yang diizinkan untuk throughput atau IOPS, lihat Merencanakan level performa untuk volume Hyperdisk.

Parameter Jenis Hyperdisk Penggunaan
provisioned-throughput-on-create Hyperdisk Balanced*, Hyperdisk Throughput Nyatakan nilai throughput dalam MiBps menggunakan penentu "Mi"; misalnya, jika throughput yang diperlukan adalah 250 MiBps, tentukan "250Mi" saat membuat StorageClass.
provisioned-iops-on-create Hyperdisk Balanced, Hyperdisk IOPS Nilai IOPS harus dinyatakan tanpa penentu apa pun; misalnya, jika Anda memerlukan 7.000 IOPS, tentukan "7000" saat membuat StorageClass.
* Jika Anda memerlukan keamanan yang ditingkatkan dan berencana untuk menggunakan Confidential Google Kubernetes Engine Nodes, pertimbangkan untuk membuat mode Rahasia untuk Hyperdisk Balanced, tinjau batasan tambahan mode Rahasia untuk Hyperdisk Balanced, dan pelajari lebih lanjut Confidential Google Kubernetes Engine Nodes.

Contoh berikut menunjukkan cara membuat StorageClass untuk setiap jenis Hyperdisk:

Hyperdisk Balanced

  1. Simpan manifes berikut dalam file bernama hdb-example-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
    
  2. Buat StorageClass:

    kubectl create -f hdb-example-class.yaml
    

Hyperdisk Throughput

  1. Simpan manifes berikut dalam file bernama hdt-example-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: throughput-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-throughput
      provisioned-throughput-on-create: "50Mi"
    
  2. Buat StorageClass:

    kubectl create -f hdt-example-class.yaml
    

Ekstrem Hyperdisk

  1. Simpan manifes berikut dalam file bernama hdx-example-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: extreme-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-extreme
      provisioned-iops-on-create: "50000"
    
  2. Buat StorageClass:

    kubectl create -f hdx-example-class.yaml
    

Untuk menemukan nama StorageClass yang tersedia di cluster Anda, jalankan perintah berikut:

kubectl get sc

Membuat PersistentVolumeClaim

Anda dapat membuat PersistentVolumeClaim yang mereferensikan StorageClass driver CSI Persistent Disk Compute Engine.

Hyperdisk Balanced

Dalam contoh ini, Anda menentukan kapasitas penyimpanan yang ditargetkan untuk volume Hyperdisk Balanced sebesar 20 GiB.

  1. Simpan manifes PersistentVolumeClaim berikut dalam file bernama pvc-example.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: balanced-storage
      resources:
        requests:
          storage: 20Gi
    
  2. Terapkan PersistentVolumeClaim yang mereferensikan StorageClass yang Anda buat dari contoh sebelumnya:

    kubectl apply -f pvc-example.yaml
    

Hyperdisk Throughput

Dalam contoh ini, Anda menentukan kapasitas penyimpanan yang ditargetkan untuk volume Throughput Hyperdisk sebagai 2 TiB.

  1. Simpan manifes PersistentVolumeClaim berikut dalam file bernama pvc-example.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: throughput-storage
      resources:
        requests:
          storage: 2Ti
    
  2. Terapkan PersistentVolumeClaim yang mereferensikan StorageClass yang Anda buat dari contoh sebelumnya:

    kubectl apply -f pvc-example.yaml
    

Ekstrem Hyperdisk

Dalam contoh ini, Anda menentukan kapasitas penyimpanan minimum volume Ekstrem Hyperdisk sebesar 64 GiB.

  1. Simpan manifes PersistentVolumeClaim berikut dalam file bernama pvc-example.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: extreme-storage
      resources:
        requests:
          storage: 64Gi
    
  2. Terapkan PersistentVolumeClaim yang mereferensikan StorageClass yang Anda buat dari contoh sebelumnya:

    kubectl apply -f pvc-example.yaml
    

Membuat Deployment untuk menggunakan volume Hyperdisk

Saat menggunakan Pod dengan PersistentVolumes, sebaiknya gunakan pengontrol workload (seperti Deployment atau StatefulSet).

  1. Contoh berikut membuat manifes yang mengonfigurasi Pod untuk men-deploy server web Nginx menggunakan PersistentVolumeClaim yang dibuat di bagian sebelumnya. Simpan contoh manifes berikut sebagai hyperdisk-example-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server-deployment
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - mountPath: /var/lib/www/html
              name: mypvc
          volumes:
          - name: mypvc
            persistentVolumeClaim:
              claimName: podpvc
              readOnly: false
    
  2. Untuk membuat Deployment berdasarkan file manifes hyperdisk-example-deployment.yaml, jalankan perintah berikut:

    kubectl apply -f hyperdisk-example-deployment.yaml
    
  3. Konfirmasi bahwa Deployment berhasil dibuat:

    kubectl get deployment
    

    Perlu waktu beberapa menit bagi instance Hyperdisk untuk menyelesaikan penyediaan. Setelah penyediaan selesai, deployment akan melaporkan status READY.

  4. Anda dapat memeriksa progresnya dengan memantau status PersistentVolumeClaim dengan menjalankan perintah berikut:

    kubectl get pvc
    

Menyediakan volume Hyperdisk dari snapshot

Untuk membuat volume Hyperdisk baru dari snapshot Persistent Disk yang ada, gunakan Konsol Google Cloud, Google Cloud CLI, atau Compute Engine API. Untuk mempelajari cara membuat snapshot Persistent Disk, lihat Membuat dan menggunakan snapshot volume.

Konsol

  1. Buka halaman Disks di Konsol Google Cloud.

    Buka Disk

  2. Klik Create Disk.

  3. Di bagian Disk Type, pilih salah satu opsi berikut untuk jenis disk:

    • Hyperdisk Balanced
    • Hyperdisk Extreme
    • Throughput Hyperdisk
  4. Di bagian Disk source type, klik Snapshot.

  5. Pilih nama snapshot yang akan dipulihkan.

  6. Pilih ukuran disk baru, dalam GiB. Jumlah ini harus sama dengan atau lebih besar dari disk sumber asli untuk snapshot.

  7. Tetapkan Throughput yang disediakan atau IOPS yang disediakan yang Anda inginkan untuk disk, jika berbeda dengan nilai default.

  8. Klik Create untuk membuat volume Hyperdisk.

gcloud

Jalankan perintah gcloud compute disks create untuk membuat volume Hyperdisk dari snapshot.

Hyperdisk Balanced

gcloud compute disks create DISK_NAME \
    --size=SIZE \
    --source-snapshot=SNAPSHOT_NAME \
    --provisioned-throughput=TRHROUGHPUT_LIMIT \
    --provisioned-iops=IOPS_LIMIT \
    --type=hyperdisk-balanced

Ganti kode berikut:

  • DISK_NAME: nama disk baru.
  • SIZE: ukuran disk baru, dalam gigabyte (GiB) atau tebibyte (TiB). Lihat dokumentasi Compute Engine untuk mengetahui batasan kapasitas terbaru.
  • SNAPSHOT_NAME: nama snapshot yang dipulihkan.
  • THROUGHPUT_LIMIT: Opsional. Untuk disk Hyperdisk Balanced, ini adalah bilangan bulat yang mewakili throughput, yang diukur dalam MiBps, yang dapat ditangani oleh disk. Lihat dokumentasi Compute Engine untuk mengetahui batasan terbaru.
  • IOPS_LIMIT: Opsional. Untuk disk Hyperdisk Balanced, ini adalah jumlah IOPS yang dapat ditangani disk. Lihat dokumentasi Compute Engine untuk mengetahui batasan performa terbaru.

Hyperdisk Throughput

gcloud compute disks create DISK_NAME \
    --size=SIZE \
    --source-snapshot=SNAPSHOT_NAME \
    --provisioned-throughput=TRHROUGHPUT_LIMIT \
    --type=hyperdisk-throughput

Ganti kode berikut:

  • DISK_NAME: nama disk baru.
  • SIZE: ukuran disk baru, dalam gigabyte (GiB atau GB) atau tebibyte (TiB atau TB). Lihat dokumentasi Compute Engine untuk mengetahui batasan kapasitas terbaru.
  • SNAPSHOT_NAME: nama snapshot yang dipulihkan.
  • THROUGHPUT_LIMIT: Opsional: Untuk disk Throughput Hyperdisk, ini adalah bilangan bulat yang mewakili throughput, yang diukur dalam MiBps, yang dapat ditangani oleh disk. Lihat dokumentasi Compute Engine untuk mengetahui batasan performa terbaru.

Ekstrem Hyperdisk

gcloud compute disks create DISK_NAME \
    --size=SIZE \
    --source-snapshot=SNAPSHOT_NAME \
    --provisioned-iops=IOPS_LIMIT \
    --type=hyperdisk-iops

Ganti kode berikut:

  • DISK_NAME: nama disk baru.
  • SIZE: ukuran disk baru, dalam gigabyte (GiB atau GB) atau tebibyte (TiB atau TB). Lihat dokumentasi Compute Engine untuk mengetahui batasan kapasitas terbaru.
  • SNAPSHOT_NAME: nama snapshot yang dipulihkan.
  • IOPS_LIMIT: Opsional: Untuk disk Hyperdisk Extreme, ini adalah jumlah operasi I/O per detik yang dapat ditangani disk. Lihat dokumentasi Compute Engine untuk mengetahui batasan performa terbaru.

Membuat snapshot untuk volume Hyperdisk

Untuk membuat snapshot dari volume Hyperdisk, ikuti langkah yang sama seperti membuat snapshot untuk volume Persistent Disk:

Memperbarui throughput atau IOPS yang disediakan untuk volume Hyperdisk yang ada

Bagian ini membahas cara mengubah performa yang disediakan untuk volume Hyperdisk.

Throughput

Memperbarui throughput yang disediakan hanya didukung untuk volume Hyperdisk Balanced dan Hyperdisk Throughput.

Untuk memperbarui level throughput yang disediakan untuk volume Hyperdisk Anda, ikuti petunjuk Konsol Google Cloud, gcloud CLI, atau Compute Engine API dalam Mengubah performa yang disediakan untuk volume Hyperdisk.

Anda dapat mengubah tingkat throughput yang disediakan (hingga sekali setiap 4 jam) untuk volume Hyperdisk setelah pembuatan volume. Mungkin perlu waktu hingga 15 menit untuk menerapkan tingkat throughput baru. Selama perubahan performa, SLA dan SLO performa tidak akan diterapkan. Anda dapat mengubah tingkat throughput volume yang ada kapan saja, terlepas dari apakah disk terpasang ke instance yang sedang berjalan atau tidak.

Tingkat throughput baru yang Anda tentukan harus mematuhi nilai yang didukung untuk volume Hyperdisk.

IOPS

Memperbarui IOPS yang disediakan hanya didukung untuk volume Hyperdisk Balanced dan Hyperdisk Extreme.

Untuk memperbarui level IOPS yang disediakan untuk volume Hyperdisk, ikuti petunjuk Konsol Google Cloud, gcloud CLI, atau Compute Engine API dalam Mengubah performa yang disediakan untuk volume Hyperdisk.

Anda dapat mengubah level IOPS yang disediakan (hingga sekali setiap 4 jam) untuk volume IOPS Hyperdisk setelah pembuatan volume. Level IOPS baru mungkin memerlukan waktu hingga 15 menit untuk diterapkan. Selama perubahan performa, SLA dan SLO performa tidak akan berlaku. Anda dapat mengubah level IOPS volume yang ada kapan saja, terlepas dari apakah disk terpasang ke instance yang sedang berjalan atau tidak.

Level IOPS baru yang Anda tentukan harus mematuhi nilai yang didukung untuk volume Hyperdisk.

Untuk memperbarui level IOPS yang disediakan untuk volume Hyperdisk, Anda harus mengidentifikasi nama Persistent Disk yang mendukung resource PersistentVolumeClaim dan PersistentVolume:

  1. Buka Object browser di Konsol Google Cloud.

    Buka Object Browser

  2. Temukan entri untuk objek PersistentVolumeClaim Anda.

  3. Klik link Volume .

  4. Buka tab YAML pada PersistentVolume yang terkait. Temukan nilai CSI volumeHandle di tab ini.

  5. Perhatikan elemen terakhir dari handle ini (harus memiliki nilai seperti "pvc-XXXXX"). Ini adalah nama PersistentVolumeClaim. Anda juga harus memperhatikan project dan zonanya.

Memantau throughput atau IOPS pada volume Hyperdisk

Untuk memantau performa yang disediakan untuk volume Hyperdisk Anda, lihat Menganalisis IOPS dan throughput yang disediakan dalam dokumentasi Compute Engine.

Pemecahan masalah

Bagian ini berisi panduan pemecahan masalah untuk menyelesaikan masalah volume Hyperdisk di GKE.

Tidak dapat mengubah performa atau kapasitas: rasio di luar rentang

Error berikut terjadi saat Anda mencoba mengubah level atau kapasitas performa yang disediakan, tetapi tingkat performa atau kapasitas yang Anda pilih berada di luar rentang yang dapat diterima untuk volume tersebut:

  • Requested provisioned throughput cannot be higher than <value>.
  • Requested provisioned throughput cannot be lower than <value>.
  • Requested provisioned throughput is too high for the requested disk size.
  • Requested provisioned throughput is too low for the requested disk size.
  • Requested disk size is too high for current provisioned throughput.

Throughput yang disediakan untuk volume Throughput Hyperdisk harus memenuhi persyaratan berikut:

  • Minimal 10 MiBps per kapasitas TiB, dan tidak lebih dari 90 MiBps per kapasitas TiB.
  • Maksimal 600 MiBps per volume.

Untuk mengatasi masalah ini, perbaiki throughput atau kapasitas yang diminta agar berada dalam rentang yang diizinkan dan keluarkan ulang perintah.

Tidak dapat mengubah performa: kapasitas dibatasi

Error berikut terjadi saat Anda mencoba mengubah level performa yang disediakan, tetapi level performanya telah diubah dalam 4 jam terakhir:

Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.

Performa yang disediakan oleh volume Throughput Hyperdisk dan IOPS dapat diperbarui sekali setiap 4 jam. Untuk mengatasi masalah ini, tunggu timer pendinginan hingga volume berlalu, lalu keluarkan ulang perintah.

Langkah berikutnya