Mengimpor volume EBS yang sudah ada

Ringkasan

Jika Anda sudah memiliki Elastic Block Store (EBS) AWS

yang perlu diimpor ke GKE di AWS, Anda dapat membuat objek PersistentVolume (PV) dan mencadangkannya untuk PersistentVolumeClaim (PVC) tertentu.

Halaman ini menjelaskan cara membuat PV menggunakan volume EBS yang ada yang diisi dengan data, dan cara menggunakan PV dalam Pod.

Sebelum memulai

Sebelum menyelesaikan langkah-langkah ini, Anda harus:

Menggunakan volume EBS terenkripsi

Jika volume EBS Anda dienkripsi dengan AWS Key Management Service (KMS), Anda harus memberikan akses peran IAM AWS ke kunci KMS kepada GKE di bidang kontrol AWS.

Untuk memberikan akses peran bidang kontrol ke kunci Anda:

  1. Temukan nama peran bidang kontrol cluster Anda.

  2. Pilih kunci AWS KMS yang digunakan untuk mengenkripsi volume EBS Anda, lalu tambahkan peran bidang kontrol sebagai pengguna kunci dengan mengikuti petunjuk di artikel Mengizinkan pengguna kunci untuk menggunakan kunci KMS.

Membuat PersistentVolume untuk volume EBS yang sudah ada

Anda dapat mengimpor volume EBS yang ada dengan menentukan PV baru dan menambahkannya ke cluster Anda.

  1. Salin YAML berikut ke dalam file bernama existing-volume.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
      annotations:
        pv.kubernetes.io/provisioned-by: ebs.csi.aws.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: ebs.csi.aws.com
        volumeHandle: EBS_VOLUME_ID
        fsType: FILE_SYSTEM_TYPE
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.ebs.csi.aws.com/zone
              operator: In
              values:
              - ZONE
    
    Replace the following:
    
    • VOLUME_NAME: Nama volume.
    • VOLUME_CAPACITY: ukuran volume— misalnya, 30G. Untuk mengetahui informasi selengkapnya tentang cara menentukan kapasitas volume di Kubernetes, lihat Arti memori.
    • STORAGE_CLASS_NAME: nama StorageClass yang menyediakan volume—misalnya, standard-rwo.

    • EBS_VOLUME_ID: ID volume EBS Anda. Misalnya, vol-05786ec9ec9526b67.

    • FS_TYPE: Sistem file volume—misalnya, ext4.

    • ZONE: Zona Ketersediaan AWS yang menghosting volume EBS— misalnya, us-east-1c.

  2. Menerapkan YAML ke cluster Anda

    kubectl apply -f existing-volume.yaml
    
  3. Konfirmasi pembuatan PV Anda

    kubectl describe pv volume-name
    

    Output dari perintah ini berisi status PV.

Menggunakan volume dengan PersistentVolumeClaim dan Pod

Setelah mengimpor volume, Anda dapat membuat PVC dan Pod yang menyertakan PVC.

  1. YAML di bawah membuat PVC dan melampirkannya ke Pod yang menjalankan server web Nginx. Salin ke dalam file bernama nginx.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: PVC_NAME
    

    Ganti kode berikut:

    • STORAGE_CLASS: Nama StorageClass dari PersistentVolume yang Anda buat sebelumnya—misalnya, standard-rwo.
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: Nama PVC— misalnya, my-pvc.
  2. Menerapkan YAML ke cluster Anda

    kubectl apply -f nginx.yaml
    
  3. Periksa status instance Nginx Anda dengan kubectl describe. Output harus memiliki STATUS berupa Running.

    kubectl describe pod web-server
    

Langkah selanjutnya