概要
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 を指定します。
次の YAML を
existing-volume.yaml
という名前のファイルにコピーし、値を置き換えて構成を完了します。- volume-capacity: ボリュームのサイズ。例:
30Gi
Kubernetes でのボリューム容量の指定の詳細については、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
- volume-capacity: ボリュームのサイズ。例:
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
という名前のファイルにコピーし、値を置き換えて構成を完了します。
- 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
YAML をクラスタに適用します。
kubectl apply -f nginx.yaml
kubectl describe
で Nginx インスタンスのステータスを確認します。出力には、Running
のSTATUS
が含まれます。kubectl describe pod web-server
暗号化された EBS ボリュームの使用
EBS ボリュームを AWS Key Management Service(KMS)で暗号化している場合、Anthos clusters on AWS のコントロール プレーンに AWS IAM ロールの KMS 鍵へのアクセス権を付与する必要があります。
AWS IAM のロール名を取得する手順は次のとおりです。
Anthos clusters on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
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
の値をコピーします。コントロール プレーンに EBS ボリュームへのアクセス権を付与するには、EBS ボリュームの暗号化に使用された AWS KMS 鍵に、鍵ユーザーとして
gke-xxxxxx-controlplane
AWS IAM プロファイルを追加します。
次のステップ
- Anthos clusters on AWS で追加のストレージ ドライバを使用する。