Anthos clusters on AWS(GKE on AWS)は、Amazon Elastic Block Store(EBS)用の Container Storage Interface(CSI)ドライバを自動的にデプロイして、クラスタ内の Amazon EBS ボリュームのプロビジョニングと管理を行います。
Anthos clusters on AWS EBS CSI ドライバ バージョンは、Anthos clusters on AWS Kubernetes バージョンに関連付けられています。ドライバは通常、GKE がリリースされた時点で入手可能な最新バージョンになります。クラスタがアップグレードされると、ドライバも自動的に更新されます。
デフォルトの StorageClass の使用方法
PersistentVolumeClaim を、spec.storageClassName
フィールドを設定せずに作成すると、デフォルトの Anthos clusters on AWS EBS CSI ドライバの StorageClass を使用して gp2
ボリュームがプロビジョニングされます。
次の YAML は、mypvc
という PersistentVolumeClaim(PVC)を 30 GiB のサイズで作成します。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
プリインストールされている別の StorageClass を使用する方法
Anthos clusters on AWS EBS CSI ドライバには、高スループットの io1
ボリュームをプロビジョニングする premium-rwo
StorageClass も含まれています。
PVC の spec.storageclassName
で指定すると使用できます。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
storageclassName: premium-rwo
カスタム StorageClass の使用方法
EBS ボリューム用の追加の StorageClass を作成したり、Container Storage Interface(CSI)ドライバを使用したりできます。
EBS ボリュームと特定の CSI ドライバのどちらを使用するかを選択します。
EBS ボリューム
EBS ボリューム タイプ、ファイル システム タイプ、その他のパラメータを指定する独自のカスタム StorageClass を作成できます。Anthos clusters on AWS EBS CSI ドライバの GitHub ページで、追加の StorageClass パラメータを確認できます。
カスタム StorageClass を構成するには、次の YAML マニフェストを
my-custom-class.yaml
という名前のファイルにコピーします。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer
CLASS_NAME
を新しい StorageClass の名前に置き換えます。たとえば、次の YAML では、XFS ファイル システムでフォーマットされたスループット最適化 HDD EBS ボリュームをプロビジョニングする、新しい StorageClass が作成されます。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-class provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fsType: xfs type: st1
CSI ドライバ
provisioner
フィールドに別の CSI ドライバを指定できます。別の CSI ドライバを使用して StorageClass を作成するには、以下の YAML の例を使用します。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
次のように置き換えます。
CSI_DRIVER_NAME
は、CSI ドライバの名前に置き換えます(例:csi.example.com
)。CLASS_NAME
は、StorageClass の名前に置き換えます(例:my-custom-class
)。
CSI ドライバに応じて
parameters
でサブフィールドを構成します。YAML をクラスタに適用します。
kubectl apply -f my-custom-class.yaml
カスタム StorageClass を使用して PersistentVolumeClaim を作成する方法
カスタム StorageClass を作成したら、それを PVC で指定できます。次の例では、StorageClass
my-custom-class
を参照するmy-pvc
という名前の PVC を作成します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
デフォルトの StorageClass を設定する方法
Anthos clusters on AWS は、gp2 EBS ボリュームをプロビジョニングする standard-rwo
というデフォルトの StorageClass を使用します。デフォルトを別の StorageClass に変更できます。
デフォルトの StorageClass を変更するには:
standard-rwo
StorageClass のis-default-class
アノテーションをkubectl patch
で更新します。kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
アノテーション
storageclass.kubernetes.io/is-default-class: true
を持つ新しい StorageClass を作成します。次の例の StorageClass は、
ebs.csi.aws.com
ドライバを使用しています。別のストレージ ドライバをインストールするには、CSI ドライバのインストールをご覧ください。次の YAML を
my-custom-class.yaml
というファイルにコピーします。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME annotations: storageclass.kubernetes.io/is-default-class: true provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: EBS_VOLUME_TYPE
次のように置き換えます。
EBS_VOLUME_TYPE
: StorageClass が作成する AWS EBS ボリューム タイプ。CLASS_NAME
は、新しい StorageClass の名前に置き換えます。
たとえば、次の YAML では、XFS ファイル システムでフォーマットされたスループット最適化 HDD EBS ボリュームをプロビジョニングする、新しいデフォルトの StorageClass が作成されます。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-default-class annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fsType: xfs type: st1
新しいカスタムクラスをクラスタに適用します。
kubectl apply -f my-custom-class.yaml
このマニフェストを適用すると、Anthos clusters on AWS は新しいストレージ リクエストに my-custom-default-class
StorageClass を使用します。
StatefulSet で StorageClass を参照する
新しい StorageClass を使用するには、StatefulSet の volumeClaimTemplates
で参照する必要があります。
StatefulSet の volumeClaimTemplates
仕様で StorageClass を参照すると、Kubernetes は PersistentVolume(PV)を使用して安定したストレージを提供します。Kubernetes は、StorageClass で定義されたプロビジョナーを呼び出して新しいストレージ Volume を作成します。Volume がプロビジョニングされると、Kubernetes が自動的に PV を作成します。
次の StatefulSet は、my-custom-class
StorageClass を参照し、1 GiB のボリュームをプロビジョニングします。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates: # This is the specification in which you reference the StorageClass
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
storageClassName: my-custom-class # This field references the existing StorageClass
次のステップ
GKE の永続ボリュームについて学習する。
Anthos clusters on AWS クラスタにストレージ ドライバをインストールする。
クイックスタートで最初のワークロードをデプロイする。