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

概要

Anthos clusters on AWS にインポートする AWS Elastic Block Store(EBS)ボリュームがすでにある場合は、PersistentVolume(PV)オブジェクトを作成して特定の PersistentVolumeClaim(PVC)用に確保しておくことができます。

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

始める前に

  • anthos-aws ディレクトリから anthos-gke を使用して、コンテキストをユーザー クラスタに切り替える。
    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    CLUSTER_NAME は、ユーザー クラスタ名に置き換えます。

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

既存の EBS ボリュームをインポートするには、新しい PV を指定します。

  1. 次の YAML を existing-volume.yaml という名前のファイルにコピーし、値を置き換えて構成を完了します。

    • volume-capacity: ボリュームのサイズ。例: 30GiKubernetes でのボリューム容量の指定の詳細については、Meaning of memory をご覧ください。
    • storage-class-name: ボリュームをプロビジョニングする StorageClass の名前。たとえば、デフォルトの standard-rwo を使用できます。

    • ebs-id: EBS のボリューム ID。例: vol-05786ec9ec9526b67

    • fs-type: ボリュームのファイル システム。例: ext4

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

    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
    
  2. YAML をクラスタに適用します。

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

    kubectl describe pv volume-name
    

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

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

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

以下の YAML は、PVC を作成し、Nginx ウェブサーバーを実行する Pod に接続します。これを nginx.yaml という名前のファイルにコピーし、値を置き換えて構成を完了します。

  • storage-class: 以前に作成した PersistentVolume の StorageClass の名前。例: standard-rwo
  • volume-name: 以前に作成したボリュームの名前。
  • volume-capacity: ボリュームのサイズ。例: 30Gi
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: my-pvc
  1. YAML をクラスタに適用します。

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

    kubectl describe pod web-server
    

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

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

AWS IAM のロール名を取得する手順は次のとおりです。

  1. Anthos clusters on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。

    cd anthos-aws

  2. Anthos clusters on AWS 環境を anthos-gke ツールで作成したか、AWS IAM プロファイルを手動で作成したかを選択します。

    anthos-gke ツール

    terraform output コマンドを使用して、iamInstanceProfile の値を検索します。

    terraform output | grep iamInstanceProfile
    

    anthos- gke ツールを使用して Anthos clusters on AWS 環境を作成した場合、出力は次のようになります。

      iamInstanceProfile: gke-CLUSTER_ID-controlplane
      iamInstanceProfile: gke-CLUSTER_ID-nodepool
    

    ここで、CLUSTER_ID はクラスタの ID です。gke-CLUSTER_ID-controlplane の値をコピーします。

    手動で作成した

    次のコマンドで terraform output の出力を調べます。

    terraform output | less
    

    出力をスクロールして、AWSCluster の定義の後にある iamInstanceProfile を見つけます。

    kind: AWSCluster
    metadata:
      name: cluster-0
    spec:
      ...
      controlPlane:
       ...
        iamInstanceProfile: INSTANCE_PROFILE_NAME
    

    INSTANCE_PROFILE_NAME の値をコピーします。

  3. コントロール プレーンに EBS ボリュームへのアクセス権を付与するには、EBS ボリュームの暗号化に使用された AWS KMS 鍵に、鍵ユーザーとして gke-xxxxxx-controlplane AWS IAM プロファイルを追加します。

次のステップ