Menggunakan Driver CSI persistent disk Compute Engine


Google Kubernetes Engine (GKE) menyediakan cara mudah bagi Anda untuk men-deploy dan mengelola Driver Antarmuka Penyimpanan Container (CSI) persistent disk Compute Engine secara otomatis di cluster. Driver CSI persistent disk Compute Engine selalu diaktifkan di cluster Autopilot dan tidak dapat dinonaktifkan atau diedit. Di cluster Standard, Anda harus mengaktifkan Driver CSI persistent disk Compute Engine.

Versi Driver CSI persistent disk Compute Engine terikat dengan nomor versi GKE. Versi Driver CSI persistent disk Compute Engine biasanya adalah driver terbaru yang tersedia pada saat versi GKE dirilis. Driver akan otomatis diupdate saat cluster diupgrade ke patch GKE terbaru.

Manfaat

Menggunakan Driver CSI persistent disk Compute Engine memberikan manfaat berikut:

  • Hal ini memungkinkan deployment dan pengelolaan driver disk persisten secara otomatis tanpa harus menyiapkannya secara manual.
  • Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK). Kunci ini digunakan untuk mengenkripsi kunci enkripsi data yang mengenkripsi data Anda. Untuk mempelajari CMEK di GKE lebih lanjut, silakan melihat Menggunakan CMEK.
  • Anda dapat menggunakan snapshot volume dengan Driver CSI persistent disk Compute Engine. Snapshot volume memungkinkan Anda membuat salinan volume pada titik waktu tertentu. Anda dapat menggunakan salinan ini untuk mengembalikan volume ke status sebelumnya atau untuk menyediakan volume baru.
  • Anda dapat menggunakan cloning volume dengan Driver CSI persistent disk Compute Engine di cluster yang menjalankan GKE versi 1.22 dan yang lebih baru. Dengan cloning volume, Anda dapat membuat duplikat volume pada titik waktu tertentu, yang disediakan dengan semua data dari volume sumber.
  • Perbaikan bug dan update fitur diluncurkan secara terpisah dari rilis Kubernetes minor. Jadwal rilis ini biasanya menghasilkan frekuensi rilis yang lebih cepat.

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 Driver CSI persistent disk Compute Engine, cluster Anda harus menggunakan versi berikut:

  • Cluster Linux: GKE versi 1.14 atau yang lebih baru.
  • Cluster Windows: GKE versi 1.18 atau yang lebih baru.

Pada versi 1.22 dan yang lebih baru, Migrasi CSI diaktifkan. Volume yang ada yang menggunakan penyedia gce-pd dimigrasikan untuk berkomunikasi melalui driver CSI. Tidak ada perubahan yang diperlukan pada StorageClass apa pun. Penyedia gce-pd terus tidak mendukung fitur seperti CMEK atau snapshot volume. Anda harus menggunakan penyedia pd.csi.storage.gke.io di StorageClass untuk mengaktifkan fitur ini.

Untuk menggunakan Driver CSI persistent disk Compute Engine dengan Workload Identity Federation untuk GKE, cluster Standard Anda harus menggunakan versi berikut:

  • Cluster Linux: GKE versi 1.16 atau yang lebih baru.
  • Cluster Windows: GKE versi 1.20.8-gke.900 atau yang lebih baru.

Mengaktifkan Driver CSI persistent disk Compute Engine pada cluster baru

Untuk membuat cluster Standard dengan versi yang tidak mengaktifkan Driver CSI persistent disk Compute Engine secara otomatis, Anda dapat menggunakan Google Cloud CLI atau Konsol Google Cloud.

Untuk mengaktifkan driver saat membuat cluster, selesaikan langkah-langkah berikut:

gcloud

gcloud container clusters create CLUSTER-NAME \
    --addons=GcePersistentDiskCsiDriver \
    --cluster-version=VERSION

Ganti kode berikut:

  • CLUSTER-NAME: nama cluster Anda.
  • VERSION: nomor versi GKE. Anda harus memilih versi 1.14 atau yang lebih tinggi untuk menggunakan fitur ini.

Untuk mengetahui daftar lengkap flag, silakan melihat dokumentasi gcloud container clusters create.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Di bagian Standard, klik Konfigurasikan.

  4. Mengonfigurasikan cluster sesuai keinginan.

  5. Dari panel navigasi, pada bagian Cluster, klik Fitur.

  6. Centang kotak Aktifkan Driver CSI persistent disk Compute Engine.

  7. Klik Buat.

Setelah mengaktifkan Driver CSI persistent disk Compute Engine, Anda dapat menggunakan driver dalam volume Kubernetes menggunakan nama penyedia dan driver: pd.csi.storage.gke.io.

Mengaktifkan Driver CSI persistent disk Compute Engine pada cluster yang sudah ada

Untuk mengaktifkan Driver CSI persistent disk Compute Engine di cluster Standard yang sudah ada, gunakan Google Cloud CLI atau Konsol Google Cloud.

Untuk mengaktifkan driver di cluster yang sudah ada, selesaikan langkah-langkah berikut:

gcloud

gcloud container clusters update CLUSTER-NAME \
   --update-addons=GcePersistentDiskCsiDriver=ENABLED

Ganti CLUSTER-NAME dengan nama cluster yang sudah ada.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Fitur, di samping kolom Driver CSI persistent disk Compute Engine, klik Edit driver CSI Compute Engine.

  4. Centang kotak Aktifkan Driver CSI persistent disk Compute Engine.

  5. Klik Simpan Perubahan.

Menonaktifkan Driver CSI persistent disk Compute Engine

Anda dapat menonaktifkan Driver CSI persistent disk Compute Engine untuk cluster Standard menggunakan Google Cloud CLI atau Konsol Google Cloud.

Jika Anda menonaktifkan driver, semua Pod yang saat ini, yang menggunakan PersistentVolume yang dimiliki oleh driver, tidak akan dihentikan. Selain itu, setiap Pod baru yang mencoba menggunakan PersistentVolume tersebut juga tidak dapat dimulai.

Untuk menonaktifkan driver di cluster Standard yang sudah ada, selesaikan langkah-langkah berikut:

gcloud

gcloud container clusters update CLUSTER-NAME \
    --update-addons=GcePersistentDiskCsiDriver=DISABLED

Ganti CLUSTER-NAME dengan nama cluster yang sudah ada.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Fitur, di samping kolom Driver CSI persistent disk Compute Engine, klik Edit driver CSI Compute Engine.

  4. Hapus centang Aktifkan Driver CSI Persistent Disk Compute Engine.

  5. Klik Simpan Perubahan.

Menggunakan Driver CSI persistent disk Compute Engine untuk cluster Linux

Bagian berikut menjelaskan proses umum untuk menggunakan volume Kubernetes yang didukung oleh driver CSI di GKE. Bagian ini khusus untuk kluster yang menggunakan Linux.

Membuat StorageClass

Setelah Anda mengaktifkan Driver CSI persistent disk Compute Engine, GKE akan otomatis menginstal StorageClasses berikut:

  • standard-rwo, menggunakan persistent disk seimbang
  • premium-rwo, menggunakan persistent disk SSD

Untuk cluster Autopilot, StorageClass default-nya adalah standard-rwo, yang menggunakan Driver CSI persistent disk Compute Engine. Untuk cluster Standard, StorageClass default menggunakan plugin volume gcePersistentDisk dalam hierarki Kubernetes.

Anda dapat menemukan nama StorageClass yang diinstal dengan menjalankan perintah berikut:

kubectl get sc

Anda juga dapat menginstal StorageClass lain yang menggunakan Driver CSI persistent disk Compute Engine dengan menambahkan pd.csi.storage.gke.io di kolom penyedia.

Misalnya, Anda dapat membuat StorageClass menggunakan file berikut yang bernama pd-example-class.yaml:

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

Anda dapat menentukan jenis disk persisten berikut dalam parameter type:

  • pd-balanced
  • pd-ssd
  • pd-standard
  • pd-extreme (didukung di GKE versi 1.26 dan yang lebih baru)

Jika menggunakan pd-standard atau pd-extreme, silakan melihat Jenis mesin yang tidak didukung untuk batasan penggunaan tambahan.

Saat menggunakan opsi pd-extreme, Anda juga harus menambahkan kolom provisioned-iops-on-create ke manifes. Kolom ini harus ditetapkan ke nilai yang sama dengan nilai IOPS yang disediakan yang Anda tentukan saat membuat persistent disk.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-extreme-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-extreme
  provisioned-iops-on-create: '10000'

Setelah membuat file pd-example-class.yaml, jalankan perintah berikut:

kubectl create -f pd-example-class.yaml

Membuat PersistentVolumeClaim

Anda dapat membuat PersistentVolumeClaim yang mereferensikan StorageClass Driver CSI persistent disk Compute Engine.

File berikut, yang bernama pvc-example.yaml, menggunakan kelas penyimpanan bawaan standard-rwo:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: standard-rwo
  resources:
    requests:
      storage: 6Gi

Setelah membuat manifes PersistentVolumeClaim, jalankan perintah berikut:

kubectl create -f pvc-example.yaml

Di StorageClass (standard-rwo) bawaan, volumeBindingMode disetel ke WaitForFirstConsumer. Jika volumeBindingMode disetel ke WaitForFirstConsumer, PersistentVolume tidak akan disediakan hingga Pod yang mereferensikan PersistentVolumeClaim dijadwalkan. Jika volumeBindingMode di StorageClass ditetapkan ke Immediate (atau dihilangkan), PersistentVolume yang didukung persistent disk akan disediakan setelah PersistentVolumeClaim dibuat.

Membuat Pod yang memakai volume

Saat menggunakan Pod dengan PersistentVolume, sebaiknya gunakan pengontrol workload (seperti Deployment atau StatefulSet). Meskipun biasanya Anda tidak akan menggunakan Pod mandiri, contoh berikut menggunakannya untuk memudahkan.

Contoh berikut menggunakan volume yang Anda buat di bagian sebelumnya:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
   - name: web-server
     image: nginx
     volumeMounts:
       - mountPath: /var/lib/www/html
         name: mypvc
  volumes:
   - name: mypvc
     persistentVolumeClaim:
       claimName: podpvc
       readOnly: false

Menggunakan Driver CSI persistent disk Compute Engine untuk cluster Windows

Bagian berikut menjelaskan proses umum untuk menggunakan volume Kubernetes yang didukung oleh driver CSI di GKE. Bagian ini khusus untuk kluster yang menggunakan Windows.

Pastikan bahwa:

  • Versi cluster adalah 1.19.7-gke.2000, 1.20.2-gke.2000, atau yang lebih baru.
  • Versi node adalah 1.18.12-gke.1203, 1.19.6-gke.800, atau yang lebih baru.

Membuat StorageClass

Proses pembuatan StorageClass untuk Windows sangat mirip dengan Linux. Perlu diketahui bahwa StorageClass yang diinstal secara default tidak akan berfungsi untuk Windows karena jenis sistem filenya berbeda. Driver CSI persistent disk Compute Engine untuk Windows mewajibkan NTFS sebagai jenis sistem file.

Misalnya, Anda dapat membuat StorageClass menggunakan file berikut yang bernama pd- windows-class.yaml. Pastikan untuk menambahkan csi.storage.k8s.io/fstype: NTFS ke daftar parameter:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-sc-windows
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-balanced
  csi.storage.k8s.io/fstype: NTFS

Membuat PersistentVolumeClaim

Setelah membuat StorageClass untuk Windows, sekarang Anda dapat membuat PersistentVolumeClaim yang merujuk StorageClass tersebut:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc-windows
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: pd-sc-windows
  resources:
    requests:
      storage: 6Gi

Membuat Pod yang memakai volume

Contoh berikut memakai volume yang Anda buat di tugas sebelumnya:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  nodeSelector:
    kubernetes.io/os: windows
  containers:
    - name: iis-server
      image: mcr.microsoft.com/windows/servercore/iis
      ports:
      - containerPort: 80
      volumeMounts:
      - mountPath: /var/lib/www/html
        name: mypvc
  volumes:
    - name: mypvc
      persistentVolumeClaim:
        claimName: podpvc-windows
        readOnly: false

Menggunakan Driver CSI persistent disk Compute Engine dengan jenis sistem file non-default

Jenis sistem file default untuk persistent disk Compute Engine di GKE adalah ext4. Anda juga dapat menggunakan jenis penyimpanan xfs selama image node Anda mendukungnya. Lihat Dukungan driver penyimpanan untuk daftar driver yang didukung berdasarkan image node.

Contoh berikut menunjukkan cara menggunakan xfs sebagai jenis sistem file default, bukan ext4, dengan Driver CSI persistent disk Compute Engine.

Membuat StorageClass

  1. Simpan manifes berikut sebagai file YAML bernama pd-xfs-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: xfs-class
    provisioner: pd.csi.storage.gke.io
    parameters:
      type: pd-balanced
      csi.storage.k8s.io/fstype: xfs
    volumeBindingMode: WaitForFirstConsumer
    
  2. Terapkan manifes:

    kubectl apply -f pd-xfs-class.yaml
    

Membuat PersistentVolumeClaim

  1. Simpan manifes berikut sebagai pd-xfs-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: xfs-pvc
    spec:
      storageClassName: xfs-class
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. Terapkan manifes:

    kubectl apply -f pd-xfs-pvc.yaml
    

Membuat Pod yang memakai volume

  1. Simpan manifes berikut sebagai pd-xfs-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pd-xfs-pod
    spec:
      containers:
      - name: cloud-sdk
        image: google/cloud-sdk:slim
        args: ["sleep","3600"]
        volumeMounts:
        - mountPath: /xfs
          name: xfs-volume
      volumes:
      - name: xfs-volume
        persistentVolumeClaim:
          claimName: xfs-pvc
    
  2. Terapkan manifes:

    kubectl apply -f pd-xfs-pod.yaml
    

Memastikan bahwa volume telah terpasang dengan benar

  1. Buka sesi shell di Pod:

    kubectl exec -it pd-xfs-pod -- /bin/bash
    
  2. Cari partisi xfs:

    df -aTh --type=xfs
    

    Output-nya akan mirip dengan berikut ini:

    Filesystem     Type  Size  Used Avail Use% Mounted on
    /dev/sdb       xfs    30G   63M   30G   1% /xfs
    

Melihat log untuk Driver CSI persistent disk Compute Engine

Anda dapat menggunakan Cloud Logging untuk melihat peristiwa yang terkait dengan Driver CSI persistent disk Compute Engine. Log dapat membantu Anda memecahkan masalah.

Untuk mengetahui informasi selengkapnya tentang Cloud Logging, silakan membaca Melihat log GKE Anda.

Untuk melihat log Driver CSI persistent disk Compute Engine, selesaikan langkah-langkah berikut:

  1. Buka halaman Cloud Logging di konsol Google Cloud.

    Buka Cloud Logging

  2. Jalankan kueri berikut:

     resource.type="k8s_container"
     resource.labels.project_id="PROJECT_ID"
     resource.labels.location="LOCATION"
     resource.labels.cluster_name="CLUSTER_NAME"
     resource.labels.namespace_name="kube-system"
     resource.labels.container_name="gce-pd-driver"
    

    Ganti kode berikut:

    • PROJECT_ID: nama project Anda.
    • LOCATION: region atau zona Compute Engine cluster.
    • CLUSTER_NAME: nama cluster Anda.

Masalah umum

Jenis mesin yang tidak didukung

Jika Anda menggunakan kelompok mesin seri C3, jenis persistent disk pd-standard tidak didukung.

Jika Anda mencoba menjalankan Pod di mesin, dan Pod menggunakan jenis persistent disk yang tidak didukung, Anda akan melihat pesan peringatan seperti berikut yang ditampilkan di Pod:

AttachVolume.Attach failed for volume "pvc-d7397693-5097-4a70-9df0-b10204611053" : rpc error: code = Internal desc = unknown Attach error: failed when waiting for zonal op: operation operation-1681408439910-5f93b68c8803d-6606e4ed-b96be2e7 failed (UNSUPPORTED_OPERATION): [pd-standard] features are not compatible for creating instance.

Jika cluster Anda memiliki beberapa node pool dengan kelompok mesin yang berbeda, Anda dapat menggunakan taint node dan afinitas node untuk membatasi tempat workload dapat dijadwalkan. Misalnya, Anda dapat menggunakan pendekatan ini untuk membatasi workload yang menggunakan pd-standard agar tidak berjalan pada kelompok mesin yang tidak didukung.

Jika menggunakan jenis persistent disk pd-extreme, Anda harus memastikan bahwa disk terpasang ke instance VM dengan bentuk mesin yang sesuai. Untuk mempelajari lebih lanjut, silakan melihat Dukungan bentuk mesin.

Langkah berikutnya