Anthos-Cluster in AWS (GKE on AWS) stellen automatisch den Container Storage Interface-Treiber (CSI) für Amazon Elastic Block Store (EBS) bereit, um Amazon EBS-Volumes in Ihren Clustern bereitzustellen und zu verwalten.
Die EBCS-CSI-Treiberversion von Anthos-Cluster in AWS ist an eine Kubernetes-Version von Anthos-Cluster in AWS gebunden. Die Treiberversion ist in der Regel die neueste Version, die bei der Veröffentlichung der GKE-Version verfügbar war. Bei einem Upgrade des Clusters werden die Treiber automatisch aktualisiert.
Standard-StorageClass verwenden
Wenn Sie einen PersistentVolumeClaim ohne das Feld spec.storageClassName
erstellen, wird ein gp2
-Volume mit der standardmäßigen EBS-CSI-Treiber-StorageClass von GKE on AWS bereitgestellt.
Mit der folgenden YAML-Datei wird ein PersistentVolumeClaim (PVC) mit dem Namen mypvc
mit einer Größe von 30 Gibibyte erstellt.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
Andere vorinstallierte StorageClass verwenden
Die Anthos-Cluster des CSE-CSI-Treibers von AWS enthalten auch die StorageClass premium-rwo
, die io1
-Volumes mit höherem Durchsatz bereitstellt.
Geben Sie sie im spec.storageclassName
des PVC an, um sie zu verwenden.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
storageclassName: premium-rwo
Benutzerdefinierte StorageClass verwenden
Sie können zusätzliche StorageClasses für EBS-Volumes erstellen oder CSI-Treiber (Container Storage Interface) verwenden.
Wählen Sie aus, ob Sie ein EBS-Volume oder einen bestimmten CSI-Treiber verwenden möchten.
EBS-Volume
Sie können Ihre eigene benutzerdefinierte StorageClass erstellen, die einen EBS-Volume-Typ, einen Dateisystemtyp und andere Parameter angibt. Weitere StorageClass-Parameter finden Sie auf der GitHub-Seite zum EBS-CSI-Treiber von Anthos-Cluster in AWS.
Zum Konfigurieren einer benutzerdefinierten StorageClass kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer
Ersetzen Sie dabei
CLASS_NAME
durch den Namen Ihrer neuen StorageClass.Mit der folgenden YAML-Datei wird beispielsweise eine neue StorageClass erstellt, die mit dem XFS-Dateisystem Durchsatz-optimierte HDD-EBS-Volumes bereitstellt.
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-Treiber
Sie können im Feld
provisioner
einen anderen CSI-Treiber angeben.Zum Erstellen einer StorageClass mit einem anderen CSI-Treiber können Sie das folgende YAML-Beispiel verwenden:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Dabei gilt:
CSI_DRIVER_NAME
durch den Namen des CSI-Treibers, z. B.csi.example.com
CLASS_NAME
durch den Namen der StorageClass, z. B.my-custom-class
Konfigurieren Sie die untergeordneten Felder unter
parameters
gemäß Ihrem CSI-Treiber.Wenden Sie die YAML-Datei auf Ihren Cluster an.
kubectl apply -f my-custom-class.yaml
PersistentVolumeClaim mit einer benutzerdefinierten StorageClass erstellen
Nachdem die benutzerdefinierte StorageClass erstellt wurde, können Sie sie in einem PVC angeben. Im folgenden Beispiel wird ein PVC namens
my-pvc
erstellt, das auf die StorageClassmy-custom-class
verweist.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Standard-StorageClass festlegen
Anthos-Cluster in AWS verwenden die Standard-StorageClass standard-rwo
, die gp2 EBS-Volumes bereitstellt. Sie können diese Standardeinstellung in eine andere StorageClass ändern.
So ändern Sie die Standard-StorageClass:
Aktualisieren Sie die Annotation
is-default-class
für die StorageClassstandard-rwo
mitkubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Erstellen Sie eine neue StorageClass mit der Annotation
storageclass.kubernetes.io/is-default-class: true
.Die folgende Beispiel-StorageClass nutzt den Treiber
ebs.csi.aws.com
. Weitere Informationen zur Installation eines anderen Speichertreibers finden Sie unter CSI-Treiber installieren.Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen
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
Dabei gilt:
EBS_VOLUME_TYPE
ist der von der StorageClass erstellte AWS EBS-Volume-Typ.CLASS_NAME
durch den Namen Ihrer neuen StorageClass
Mit der folgenden YAML-Datei wird beispielsweise eine neue Standard-StorageClass erstellt, die mit dem XFS-Dateisystem Durchsatz-optimierte HDD-EBS-Volumes bereitstellt.
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
Wenden Sie die neue benutzerdefinierte Klasse auf Ihren Cluster an.
kubectl apply -f my-custom-class.yaml
Nachdem Sie dieses Manifest angewendet haben, verwenden Anthos-Cluster in AWS die StorageClass my-custom-default-class
für neue Speicheranfragen.
Auf StorageClass in einem StatefulSet verweisen
Verweisen Sie auf die StorageClass im volumeClaimTemplates
eines StatefulSet, um sie zu verwenden.
Wenn Sie in der Spezifikation volumeClaimTemplates
eines StatefulSet auf eine StorageClass verweisen, bietet Kubernetes stabilen Speicher mit PersistentVolumes (PVs).
Kubernetes ruft den in der StorageClass definierten Bereitsteller auf, um ein neues Speicher-Volume zu erstellen. Nachdem das Volume bereitgestellt wurde, erstellt Kubernetes automatisch eine Produktversion.
Das folgende StatefulSet verweist auf die StorageClass my-custom-class
und stellt ein 1-Gibibyte-Volume bereit:
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
Nächste Schritte
Installieren Sie Speichertreiber auf Ihren Anthos-Clustern auf dem AWS-Cluster.
Stellen Sie Ihre erste Arbeitslast mit der Kurzanleitung bereit.