概要
GKE on AWS にインポートする AWS Elastic Block Store(EBS)
ボリュームがすでにある場合は、PersistentVolume(PV)オブジェクトを作成して特定の PersistentVolumeClaim(PVC)用に予約できます。
このページでは、データが入力された既存の EBS ボリュームを使用して PV を作成する方法と、Pod で PV を使用する方法について説明します。
始める前に
これらの操作を行う前に、次の作業を行う必要があります。
- GKE on AWS クラスタを作成し、
kubectl
を使用して作成したクラスタへのアクセスを構成する。 - クラスタに接続して認証する
暗号化された EBS ボリュームの使用
EBS ボリュームを AWS Key Management Service(KMS)で暗号化している場合、GKE on AWS コントロール プレーンの AWS IAM ロールに KMS 鍵へのアクセス権を付与する必要があります。
コントロール プレーンのロールに鍵へのアクセス権を付与するには:
クラスタのコントロール プレーンのロールの名前を確認します。
鍵ユーザーに KMS 鍵の使用を許可するの手順に沿って、EBS ボリュームの暗号化に使用する AWS KMS 鍵を選択し、コントロール プレーンのロールを鍵ユーザーとして追加します。
既存の EBS ボリューム用の PersistentVolume の作成
既存の EBS ボリュームをインポートするには、新しい PV を指定してクラスタに追加します。
次の 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
)。
YAML をクラスタに適用します。
kubectl apply -f existing-volume.yaml
PV の作成を確認します。
kubectl describe pv volume-name
このコマンドの出力には、PV のステータスが含まれます。
PersistentVolumeClaim と Pod でのボリュームの使用
ボリュームをインポートしたら、PVC とその PVC を接続する Pod を作成できます。
以下の 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
)。
YAML をクラスタに適用します。
kubectl apply -f nginx.yaml
kubectl describe
で Nginx インスタンスのステータスを確認します。出力には、Running
のSTATUS
が含まれます。kubectl describe pod web-server
次のステップ
- GKE on AWS で追加のストレージ ドライバを使用する。