既存の EBS ボリュームのインポート

概要

GKE on AWS にインポートする AWS Elastic Block Store(EBS)

ボリュームがすでにある場合は、PersistentVolume(PV)オブジェクトを作成して特定の PersistentVolumeClaim(PVC)用に予約できます。

このページでは、データが入力された既存の EBS ボリュームを使用して PV を作成する方法と、Pod で PV を使用する方法について説明します。

始める前に

これらの操作を行う前に、次の作業を行う必要があります。

暗号化された EBS ボリュームの使用

EBS ボリュームを AWS Key Management Service(KMS)で暗号化している場合、GKE on AWS コントロール プレーンの AWS IAM ロールに KMS 鍵へのアクセス権を付与する必要があります。

コントロール プレーンのロールに鍵へのアクセス権を付与するには:

  1. クラスタのコントロール プレーンのロールの名前を確認します。

  2. 鍵ユーザーに KMS 鍵の使用を許可するの手順に沿って、EBS ボリュームの暗号化に使用する AWS KMS 鍵を選択し、コントロール プレーンのロールを鍵ユーザーとして追加します。

既存の EBS ボリューム用の PersistentVolume の作成

既存の EBS ボリュームをインポートするには、新しい PV を指定してクラスタに追加します。

  1. 次の YAML を 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: ボリュームの名前。
    • VOLUME_CAPACITY: ボリュームのサイズ(例: 30G)。Kubernetes でのボリューム容量の指定の詳細については、メモリの意味をご覧ください。
    • STORAGE_CLASS_NAME: ボリュームをプロビジョニングする StorageClass の名前。例: standard-rwo

    • EBS_VOLUME_ID: EBS ボリューム ID。例: vol-05786ec9ec9526b67

    • FS_TYPE: ボリュームのファイル システム(例: ext4)。

    • ZONE: EBS ボリュームをホストする AWS アベイラビリティ ゾーン(例: us-east-1c)。

  2. YAML をクラスタに適用します。

    kubectl apply -f existing-volume.yaml
    
  3. PV の作成を確認します。

    kubectl describe pv volume-name
    

    このコマンドの出力には、PV のステータスが含まれます。

PersistentVolumeClaim と Pod でのボリュームの使用

ボリュームをインポートしたら、PVC とその PVC を接続する Pod を作成できます。

  1. 以下の YAML は、PVC を作成し、Nginx ウェブサーバーを実行する Pod に接続します。このコードを 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
    

    次のように置き換えます。

    • STORAGE_CLASS: 以前に作成した PersistentVolume の StorageClass の名前(例: standard-rwo)。
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: PVC の名前(例: my-pvc)。
  2. YAML をクラスタに適用します。

    kubectl apply -f nginx.yaml
    
  3. kubectl describe で Nginx インスタンスのステータスを確認します。出力には、RunningSTATUS が含まれます。

    kubectl describe pod web-server
    

次のステップ