Menggunakan Persistent Disk khusus sebagai volume sementara


Halaman ini menunjukkan cara menggunakan hardware penyimpanan eksternal, seperti Persistent Disk Compute Engine, sebagai volume sementara di workload Google Kubernetes Engine (GKE) Anda. Anda seharusnya sudah memahami Volumes dan StorageClasses Kubernetes.

Kapan penyimpanan sementara di Kubernetes digunakan

Penyimpanan sementara berguna dalam situasi apa pun saat workload hanya memerlukan data selama siklus proses aplikasi, seperti untuk pipeline pemrosesan data, tugas machine learning, batch processing, caching lokal, atau analisis. Secara default, bagian dari boot disk node GKE tersedia untuk digunakan sebagai penyimpanan sementara di Pod Anda. Pendekatan ini sering kali memerlukan perencanaan ruang yang cermat.

Volume sementara generik Kubernetes memungkinkan Anda meminta penyimpanan sementara untuk Pod secara eksplisit menggunakan PersistentVolumeClaims. GKE menyediakan Persistent Disk Compute Engine secara dinamis dan memasang disk tersebut ke node Anda. Jenis penyimpanan sementara ini berguna dalam situasi seperti berikut:

  • Workload memiliki persyaratan performa tinggi, jadi Anda perlu mengontrol hardware penyimpanan.
  • Anda memerlukan penyimpanan sementara khusus container sementara.
  • Anda ingin menghindari penggunaan emptyDir untuk menyediakan penyimpanan sementara. Volume emptyDir masih berguna jika Anda ingin beberapa container berbagi data di penyimpanan sementara.
  • Anda menginginkan kapasitas penyimpanan sementara yang lebih besar daripada default GKE bawaan.
  • Anda ingin menghindari keharusan untuk merencanakan ukuran dan jenis boot disk node di awal untuk cluster GKE mode Standard.

Jenis penyimpanan ephemeral di GKE

Secara umum, Anda dapat menggunakan kapasitas penyimpanan boot disk atau Persistent Disk khusus sebagai penyimpanan sementara di Pod dan container. Tabel berikut menjelaskan perbedaannya:

Jenis penyimpanan Cara menggunakan Deskripsi
Boot disk - Persistent Disk

Pasang volume menggunakan emptyDir dalam spesifikasi Pod dan minta kapasitas yang Anda perlukan.

Untuk mengetahui petunjuknya, lihat Membuat volume.

Penyimpanan efemeral yang diminta diambil dari bagian yang dicadangkan dari boot disk node. Ini adalah default pada cluster Autopilot dan Standard.

Gunakan saat Pod memiliki permintaan penyimpanan sementara yang kecil atau saat Anda ingin membagikan data sementara di antara beberapa container di Pod.

Autopilot

  • Permintaan harus antara 10 MiB dan 10 GiB.
  • Jenis hardware penyimpanan telah dikonfigurasi sebelumnya.

Standard

Tidak ada batas ukuran, tetapi memerlukan perencanaan ukuran boot disk node dan jenis hardware penyimpanan dengan cermat.

Untuk mengetahui detail tentang cara GKE menghitung reservasi penyimpanan sementara di boot disk node, lihat Reservasi penyimpanan sementara lokal.

Disk SSD lokal
  1. Buat kumpulan node dengan disk SSD Lokal yang terpasang dan rangkaian mesin yang kompatibel.
  2. Pasang volume menggunakan emptyDir dengan kapasitas yang diperlukan.
  3. Gunakan nodeSelector untuk menempatkan Pod pada node dengan disk SSD Lokal yang terpasang.

Untuk mengetahui petunjuknya, lihat Menyediakan penyimpanan sementara dengan SSD lokal.

Disk SSD lokal menggunakan kenaikan 375 GB tetap yang didukung dalam cluster GKE mode Standard dan dalam node Autopilot yang menjalankan GPU A100 (80 GB).

Gunakan saat Anda membutuhkan penyimpanan sementara dengan throughput tinggi.

Untuk mengetahui detailnya, lihat Tentang SSD lokal untuk GKE.

Persistent Disk Khusus
  1. Atau, buat Kubernetes StorageClass untuk hardware.
  2. Pasang volume menggunakan jenis volume ephemeral dalam spesifikasi Pod.

Dokumen ini memberikan petunjuk untuk meminta jenis penyimpanan sementara ini.

Google Cloud secara dinamis menyediakan hardware eksternal yang diminta, memasangnya ke node Anda, dan memasang volume yang diminta ke Pod Anda.

Gunakan saat Pod memiliki permintaan penyimpanan efemeral yang besar atau saat Anda ingin mengontrol jenis Persistent Disk yang mendasarinya. Volume ini memiliki properti berikut:

  • Hingga 64 TiB dalam mode Autopilot dan mode Standard.
  • Permintaan penyimpanan sementara Pod dapat mencapai 64 TiB.
  • Hardware khusus seperti volume yang didukung SSD didukung.
  • Network Attached Storage.
  • Menggunakan Volume Kubernetes untuk mendapatkan penyimpanan, bukan menggunakan emptyDir untuk berbagi boot disk node.

Untuk mengetahui detail tentang jenis volume sementara ini, lihat Volume sementara umum.

Harga

Penyimpanan yang Anda sediakan melalui volume sementara umum seperti yang dijelaskan dalam panduan ini ditagih berdasarkan harga disk Compute Engine.

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.
  • Pastikan Anda memiliki cluster GKE Autopilot atau Standard yang menjalankan versi 1.23 atau yang lebih baru.
  • Pastikan Anda memiliki cukup kuota di project Google Cloud untuk hardware penyimpanan. Untuk mengelola kuota, baca artikel Melihat kuota untuk project Anda.

Membuat StorageClass

Dengan membuat StorageClass Kubernetes kustom, Anda dapat menentukan jenis penyimpanan yang akan disediakan berdasarkan persyaratan harga dan performa. Langkah ini bersifat opsional, tetapi direkomendasikan. Jika Anda ingin menggunakan StorageClass default GKE, yang memiliki jenis Persistent Disk pd-balanced, lewati langkah ini.

  1. Simpan manifes berikut sebagai ephemeral-pd-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ephemeral-ssd
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: STORAGE_TYPE
    

    Ganti STORAGE_TYPE dengan nama jenis Persistent Disk yang diinginkan, seperti pd-ssd. Untuk daftar jenis yang didukung, baca Jenis Persistent Disk dalam dokumentasi Compute Engine.

  2. Buat StorageClass:

    kubectl create -f ephemeral-pd-class.yaml
    

Meminta kapasitas penyimpanan sementara di Pod

Untuk menyediakan, memasang, dan menggunakan hardware eksternal sebagai penyimpanan sementara, tambahkan volume yang sesuai ke manifes Pod Anda dan tambahkan pemasangan volume ke spesifikasi container.

  1. Simpan manifes berikut sebagai ephemeral-ssd-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ephemeral-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          storage: ephemeral
      template:
        metadata:
          labels:
            storage: ephemeral
        spec:
          containers:
          - name: ephemeral-container
            image: nginx
            resources:
              requests:
                cpu: 500m
                memory: 2Gi
                ephemeral-storage: 2Gi
            volumeMounts:
            - mountPath: "/short-term"
              name: ephemeral-volume
          volumes:
          - name: ephemeral-volume
            ephemeral:
              volumeClaimTemplate:
                metadata:
                  labels:
                    type: ephemeral
                spec:
                  accessModes: ["ReadWriteOnce"]
                  storageClassName: "ephemeral-ssd"
                  resources:
                    requests:
                      storage: 1Ti
    

    Manifes ini membuat PersistentVolumeClaim Kubernetes baru yang meminta PersistentVolume baru bernama ephemeral-volume dengan properti berikut:

    • spec.volumes.ephemeral: Jenis volume ephemeral.
    • .spec.accessModes: Mode akses volume, yang menentukan akses baca-tulis dari Pod dan berbagi volume antar-node. Contoh ini menggunakan ReadWriteOnce, yang memasang PersistentVolume ke satu node untuk mengakses satu atau beberapa Pod pada node tersebut. Untuk mengetahui detailnya, lihat Mode akses.
    • .spec.storageClassName: Opsional, nama StorageClass yang Anda buat. Jika Anda menghapus kolom ini, GKE akan menggunakan StorageClass default dan menyediakan Persistent Disk pd-balanced.
    • .spec.resources.requests.storage: Kapasitas penyimpanan yang Anda inginkan.
  2. Membuat Deployment:

    kubectl create -f ephemeral-ssd-deployment.yaml
    

GKE menyediakan disk Compute Engine yang memenuhi persyaratan PersistentVolumeClaim dan memasang disk ke node. GKE memasang volume ke dalam Pod dan menyediakan kapasitas yang diminta ke container.

Memastikan GKE telah memasang volume sementara

  1. Buat sesi shell di Pod:

    kubectl exec -it deploy/ephemeral-deployment -- bash
    
  2. Periksa volume yang terpasang:

    df -h

    Outputnya mirip dengan hal berikut ini:

    Filesystem                Size      Used Available Use% Mounted on
    ...
    /dev/sdb               1006.9G     28.0K   1006.8G   0% /short-term
    /dev/sda1                94.3G      3.6G     90.6G   4% /etc/hosts
    /dev/sda1                94.3G      3.6G     90.6G   4% /dev/termination-log
    /dev/sda1                94.3G      3.6G     90.6G   4% /etc/hostname
    /dev/sda1                94.3G      3.6G     90.6G   4% /etc/resolv.conf
    ...
    
  3. Keluar dari sesi shell:

    exit
    

Langkah berikutnya