Auf dieser Seite wird gezeigt, wie Sie die Standard-StorageClass für einen Anthos-Cluster auf VMware (GKE On-Prem)-Cluster festlegen. Siehe auch Speicher.
Übersicht
Anthos-Cluster auf VMware können mit einem der folgenden Verfahren in Block- oder Dateispeicher eingebettet werden:
Wenn Sie einen Cluster erstellen, erstellt Anthos-Cluster auf VMware eine Kubernetes-StorageClass mit dem Namen standard
. Dies ist die standardmäßige StorageClass für den Cluster.
Geben Sie den folgenden Befehl ein, um detaillierte Informationen zur StorageClass standard
anzeigen zu lassen:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml
Dabei ist [CLUSTER_KUBECONFIG] der Pfad der kubeconfig-Datei für Ihren Cluster.
In der Ausgabe sehen Sie, dass der Name der StorageClass standard
lautet. Sie können auch die Annotation storageclass.kubernetes.io/is-default-class: "true"
sehen. Diese Annotation identifiziert die StorageClass mit dem Namen standard
als Standard-StorageClass.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... name: standard ... parameters: datastore: HOST2-DATASTORE2 diskformat: thin fstype: ext4 provisioner: kubernetes.io/vsphere-volume reclaimPolicy: Delete volumeBindingMode: Immediate
Ihr Cluster kann mehrere StorageClass-Objekte haben, aber nur eines davon kann die Annotation storageclass.kubernetes.io/is-default-class: "true"
haben und somit die Standard-StorageClass sein.
In der vorherigen Ausgabe sehen Sie auch, dass der Bereitsteller kubernetes.io/vsphere-volume ist.
Dies ist der Bereitsteller, der Maßnahmen ergreift, wenn ein Client ein Speicherelement der Klasse standard
anfordert.
Standard-StorageClass
Wenn Sie Speicher anfordern, können Sie eine StorageClass angeben. Wenn Sie keine StorageClass angeben, wird die Standard-StorageClass verwendet. Angenommen, Sie erstellen einen PersistentVolumeClaim, der keine StorageClass angibt. Der Volume-Controller erfüllt die Anforderung gemäß der Standard-StorageClass.
Standard-StorageClass ändern
Als Clusteradministrator können Sie die Standardspeicherklasse ändern. Dann werden alle Speicheranfragen, die keine StorageClass angeben, entsprechend der StorageClass Ihrer Wahl erfüllt. In diesem Abschnitt wird beschrieben, wie Sie die Standardeinstellung ändern.
Ein neues Speichersystem bereitstellen
Stellen Sie ein neues Speichersystem und alle Softwarekomponenten bereit, um den neuen Speichermechanismus in einen Kubernetes-Cluster zu integrieren. Möglicherweise müssen Sie einen CSI-Treiber im Cluster installieren.
Dieser Schritt hängt vom Speicheranbieter ab, den Sie verwenden. Für CSI-Treiber sollten Anbieter eine Anleitung zur Bereitstellung ihres CSI-Treibers in einem Kubernetes-Cluster zur Verfügung stellen. Die Dokumentation eines CSI-Treibers sollte auch die treiberspezifischen Parameter enthalten, die Sie in Ihrer StorageClass angeben, einschließlich des Bereitstellernamens.
Wenn Sie eine StorageClass für Ihre neue Appliance erstellen, sollten Sie die StorageClass nach ihren Eigenschaften benennen (z. B. "fast" oder "highly-replicated") und nicht nach dem Namen des entsprechenden Treibers oder Geräts. Dies erleichtert die Bereitstellung konsistenter Speicherrichtlinien für Cluster und Umgebungen.
Standardannotation aus der StorageClass standard
entfernen
Geben Sie den folgenden Befehl ein, um das Manifest der StorageClass standard
in einem Texteditor zu öffnen:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard
Entfernen Sie im Texteditor die Annotation storageclass.kubernetes.io/is-default-class: "true"
. Schließen Sie den Texteditor.
Um zu bestätigen, dass die Annotation entfernt wurde, geben Sie folgenden Befehl ein:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml
Neue StorageClass erstellen
Erstellen Sie ein Manifest für eine neue StorageClass.
Fügen Sie die Annotation storageclass.kubernetes.io/is-default-class: "true"
hinzu.
Beispiel:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... name: my-storage-class ... parameters: ... provisioner: [MY_PROVISIONER] ...
Speichern Sie das Manifest als YAML-Datei und erstellen Sie die neue StorageClass:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]
Dabei ist [MANIFEST_FILE] der Pfad zur neuen StorageClass-Manifestdatei.