In dieser Anleitung erfahren Sie, wie Sie Filestore Multishares für Google Kubernetes Engine mit dem CSI-Treiber von GKE Filestore verwenden.
Hinweise
Führen Sie zuerst die Einrichtungsschritte aus, die für die Verwendung von Filestore erforderlich sind.
Aktivieren Sie den GKE Filestore-CSI-Treiber (Version 1.23 oder höher):
Die Treiberversionen 1.23 bis 1.26 unterstützen bis zu 10 Freigaben pro Instanz.
Treiberversionen 1.27 oder höher unterstützen bis zu 80 Freigaben pro Instanz.
Die neuesten Anforderungen an den GKE Filestore-CSI-Treiber finden Sie unter Mit dem Filestore-CSI-Treiber auf Filestore-Instanzen zugreifen.
Filestore Multishares für mehrere Anwendungen verwenden
In diesem Abschnitt erfahren Sie, wie Sie zwei Anwendungen bereitstellen: ein Deployment und ein StatefulSet, die jeweils eine Filestore Multishares-StorageClass verwenden. Außerdem erfahren Sie, wie GKE alle Volumes in derselben zugrunde liegenden Filestore-Enterprise-Instanz mit Bin-Packing (ein Prozess zum effizienten Packen von Anwendungen in Ihre GKE-Knoten) packt.
Verwenden Sie die von GKE bereitgestellte StorageClass
enterprise-multishare-rwx
, um Instanzen zu erstellen, die bis zu 10 Freigaben unterstützen.- Wenn Sie Instanzen erstellen möchten, die bis zu 80 Freigaben unterstützen, müssen Sie eine benutzerdefinierte StorageClass erstellen. Für diese Anleitung verwenden Sie eine StorageClass mit einem Limit von zehn Freigaben pro Instanz.
Nachdem der GKE Filestore-CSI-Treiber aktiviert wurde, können Nutzer auf die von GKE bereitgestellte Multishare-StorageClass
enterprise-multishare-rwx
mit der folgenden Konfiguration zugreifen. Unter Verweis auf diese StorageClass verwendet der GKE-Filestore-CSI-Treiber die dynamische Volume-Bereitstellung, um automatisch nichtflüchtige Volumes (PVs) für neue Ansprüche auf nichtflüchtige Volumes (PVCs) zu erstellen, wenn die GKE-Arbeitslast dies erfordert:kubectl describe sc enterprise-multishare-rwx Name: enterprise-multishare-rwx IsDefaultClass: No Annotations: components.gke.io/component-name=filestorecsi,components.gke.io/component-version=0.7.2,components.gke.io/layer=addon Provisioner: filestore.csi.storage.gke.io Parameters: instance-storageclass-label=enterprise-multishare-rwx,multishare=true,tier=enterprise AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
Benutzerdefinierte StorageClass erstellen
Wenn Sie das neueste Kapazitätslimit von 80 Freigaben pro Filestore-Instanz nutzen möchten, erstellen Sie anhand der folgenden Vorlage eine benutzerdefinierte StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-filestore-multishare-128
provisioner: filestore.csi.storage.gke.io
parameters:
tier: enterprise
multishare: "true"
max-volume-size: "128Gi"
network: default
allowVolumeExpansion: true
Beachten Sie beim Umbenennen der StorageClass die folgenden Anforderungen:
Der Name der StorageClass muss ein gültiger Name der DNS-Subdomain sein.
Der Name der StorageClass mit mehreren Freigaben wird auch als Instanzlabel verwendet und sollte den Benennungsrichtlinien für Labels folgen.
Wenn für Ihre Anwendung eine sofortige Bereitstellung von Volumes erforderlich ist, schließen Sie den Volume-Bindungsmodus
Immediate
ein:volumeBindingMode: Immediate
Verwenden Sie diese Spezifikation beispielsweise, wenn Sie nicht möchten, dass die Volume-Bereitstellung vom GKE-Cluster abhängig ist.
Wenn Sie ab Treiberversion 1.27 mehr als zehn Freigaben pro Instanz zuweisen möchten, fügen Sie den Parameter
max-volume-size
ein und weisen Sie ihm einen der akzeptierten Werte aus der ersten Spalte zu:Maximale Volume-Größe (Freigabegröße) Maximale Anzahl Freigaben pro Instanz 128 GiB 80 256 GiB 40 512 GiB 20 1024 GiB 10 Wenn Sie beispielsweise das Schlüssel/Wert-Paar
max-volume-size: "128Gi"
hinzufügen, werden mit der StorageClass bis zu 80 Freigaben (von jeweils 10 GiB bis 128 GiB) zu einer einzelnen 10-TiB-Enterprise-Instanz zugeordnet.Diese Funktion ist abwärtskompatibel mit Filestore-Instanzen, die von GKE Filestore-CSI-Treiberversionen 1.23 bis 1.26 erstellt wurden.
Vorhandene Instanzen können neue PVCs oder Freigaben mit einer erweiterten Mindestfreigabegröße von 10 GiB erstellen.
Die GKE Filestore-CSI-Treiberversion 1.27 oder höher erkennt Legacy-Enterprise-Instanzen und weist ihnen eine standardmäßige maximale Freigabegröße von 1.024 GiB (1 TiB) zu. Daher sind Legacy-Instanzen auf maximal zehn Freigaben pro Instanz beschränkt.
Weitere Informationen finden Sie unter Filestore Multishares für GKE.
Erstellen Sie ein Deployment mit mehreren Pod-Replikaten über einen einzelnen PVC.
Erstellen Sie eine YAML-Konfigurationsdatei, die in etwa so aussieht:
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: test-pvc-fs --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: enterprise-multishare-rwx resources: requests: storage: 100Gi EOF
Pod-Replikate prüfen.
a. Führen Sie in der Befehlszeile den folgenden Befehl aus, um den PVC-Status zu prüfen:
kubectl get pvc
Die Ausgabe sollte in etwa so aussehen:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 35m
b. Führen Sie in der Befehlszeile den folgenden Befehl aus, um den Pod-Status zu prüfen:
kubectl get pod
Die Ausgabe sollte in etwa so aussehen:
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-csdbd 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-rgx82 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-zjl27 1/1 Running 0 35m
Replikate skalieren.
a. Führen Sie in der Befehlszeile den folgenden Befehl aus, um das Deployment zu bearbeiten:
kubectl edit deployment web-server-multishare
b. Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.replicas
und aktualisieren Sie den Wert auf10
.c. Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get pod
Die Ausgabe sollte in etwa so aussehen:
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-5ctkf 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-8dwmw 1/1 Running 0 2s web-server-multishare-76c9ffb4b5-csdbd 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-lndcq 1/1 Running 0 2s web-server-multishare-76c9ffb4b5-rgx82 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-vtd6p 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-xm49s 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-zjl27 1/1 Running 0 36m
Beachten Sie, dass 10 Pods ausgeführt werden.
d. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get deployment
Die Ausgabe sollte in etwa so aussehen:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 10/10 10 10 36m
e. Führen Sie in der Befehlszeile den folgenden Befehl aus, um den PVC-gebundenen Status zu prüfen:
kubectl get pvc
Die Ausgabe sollte in etwa so aussehen:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 37m
f. Führen Sie in der Befehlszeile den folgenden Befehl aus, um das Deployment zu bearbeiten:
kubectl edit deployment web-server-multishare
g. Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.replicas
und aktualisieren Sie den Wert auf2
.h. Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get pod
Die Ausgabe sollte in etwa so aussehen:
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 38m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 38m
Stellen Sie ein StatefulSet bereit.
Stellen Sie eine zweite Anwendung bereit, die die zugrunde liegende Filestore-Instanz nutzt.
Stellen Sie dazu 200 GiB Speicherplatz bereit und achten Sie darauf, dass die Anwendung dieselbe zugrunde liegende Filestore-Instanz wie die erste Anwendung verwendet.
Anschließend skalieren Sie die Anwendung auf neun Replikate mit insgesamt 900 GiB (9 Replikate mit jeweils 100 GiB) und prüfen, dass GKE dieselbe Filestore-Instanz verwendet, Geben Sie dazu die Instanz frei.
Erstellen Sie eine YAML-Konfigurationsdatei, die in etwa so aussieht:
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: test-pvc-multishare mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: test-pvc-multishare spec: accessModes: [ "ReadWriteMany" ] storageClassName: enterprise-multishare-rwx resources: requests: storage: 100Gi EOF
Prüfen Sie die zustandsorientierten Replikate und Volumes.
Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get pod
Die Ausgabe sollte in etwa so aussehen:
NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 4m48s web-1 1/1 Running 0 3m32s web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 57m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 57m
Beachten Sie, dass die ersten beiden Pods dem StatefulSet zugeordnet sind. Die letzten beiden Pods sind dem Deployment zugeordnet.
Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get statefulset
Die Ausgabe sollte in etwa so aussehen:
NAME READY AGE web 2/2 2m8s
Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get pvc
Die Ausgabe sollte in etwa so aussehen:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 54m test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 100Gi RWX enterprise-multishare-rwx 114s test-pvc-multishare-web-1 Bound pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe 100Gi RWX enterprise-multishare-rwx 38s
Der PVC
test-pvc-fs
ist dem Deploymentweb-server-multishare
zugeordnet.Die PVCs
test-pvc-multishare-web-0
undtest-pvc-multishare-web-1
sind dem StatefulSet zugeordnet.Die StatefulSet-Replikate skalieren.
Erhöhen Sie die Replikatanzahl auf neun. Wenn die Anzahl zunimmt, werden die entsprechenden PVCs erstellt.
a. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl edit statefulset web
b. Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.replicas
und aktualisieren Sie den Wert auf9
.c. Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get statefulset
Die Ausgabe sollte in etwa so aussehen:
NAME READY AGE web 9/9 13m
d. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get deployment
Die Ausgabe sollte in etwa so aussehen:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 2/2 2 2 65m
e. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get pvc
Die Ausgabe sollte in etwa so aussehen:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 65m test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 100Gi RWX enterprise-multishare-rwx 13m test-pvc-multishare-web-1 Bound pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe 100Gi RWX enterprise-multishare-rwx 12m test-pvc-multishare-web-2 Bound pvc-3fcbd132-939f-4364-807a-7c8ac6a3e64e 100Gi RWX enterprise-multishare-rwx 5m12s test-pvc-multishare-web-3 Bound pvc-5894afa5-2502-4ee7-9d5c-b7378cb85479 100Gi RWX enterprise-multishare-rwx 4m57s test-pvc-multishare-web-4 Bound pvc-ebbe452b-bc8f-4624-a830-a2094cce0d67 100Gi RWX enterprise-multishare-rwx 4m36s test-pvc-multishare-web-5 Bound pvc-5a73a698-d174-44cb-a3a1-e767966c3417 100Gi RWX enterprise-multishare-rwx 4m20s test-pvc-multishare-web-6 Bound pvc-102da6a9-2ca6-4f9e-9896-8fe14709db7a 100Gi RWX enterprise-multishare-rwx 3m55s test-pvc-multishare-web-7 Bound pvc-160e81cd-c5bf-4ae6-966e-518e8249e02d 100Gi RWX enterprise-multishare-rwx 3m38s test-pvc-multishare-web-8 Bound pvc-9b52d773-2e9a-40de-881c-dc06945ba3d7 100Gi RWX enterprise-multishare-rwx 118s
Den Status der Filestore-Instanz prüfen.
Sie haben jetzt ein Deployment mit zwei Pod-Replikaten und einem StatefulSet mit neun Pod-Replikaten und insgesamt zehn PVCs mit jeweils 100 GiB. Alle Volumes werden auf einer einzelnen Filestore Multishare-Instanz verpackt.
a. Führen Sie in der Befehlszeile den folgenden
instances list
-Befehl aus:gcloud beta filestore instances list --project=YOUR_PROJECT_ID --region=REGION
Dabei gilt:
YOUR_PROJECT_ID ist der Name des verwendeten Projekts. Beispiel:
my-project
REGION ist der Name der verwendeten Region. Beispiel:
us-central1
Die Ausgabe sollte in etwa so aussehen:
INSTANCE_NAME LOCATION TIER CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS STATE CREATE_TIME fs-a767cef8-738e-4c8e-b70b-09cbb872d016 us-central1 ENTERPRISE 1024 N/A 10.192.53.2 READY 2022-06-21T21:15:30
b. Führen Sie in der Befehlszeile den folgenden
instances describe
-Befehl aus:gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION capacityGb: '1024' capacityStepSizeGb: '256' createTime: '2022-06-21T21:15:30.464237089Z' labels: storage_gke_io_created-by: filestore_csi_storage_gke_io storage_gke_io_storage-class-id: enterprise-multishare-rwx maxCapacityGb: '10240' maxShareCount: '10' multiShareEnabled: true name: projects/YOUR_PROJECT_ID/locations/REGION/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016 networks: - connectMode: DIRECT_PEERING ipAddresses: - 10.192.53.2 modes: - MODE_IPV4 network: csi-filestore-test-network reservedIpRange: 10.192.53.0/26 state: READY tier: ENTERPRISE
Dabei gilt:
PVC erweitern und Filestore-Instanz prüfen
In diesem Abschnitt erfahren Sie, wie Sie einen vorhandenen PVC erweitern und die Filestore-Instanzgröße prüfen.
Einen PVC maximieren.
PVCs, die durch Freigaben in einer Filestore Multishare-Instanz unterstützt werden, können bis zur im Parameter
max-volume-size
angegebene maximalen Größe wachsen. Um dies zu prüfen, erweitern Sie eines der Volumes, die dem StatefulSet zugeordnet sind, während der Pod es verwendet.Führen Sie in der Befehlszeile den folgenden Befehl aus, um die aktuelle PVC-Größe von Replikat 0 zu prüfen:
kubectl get pvc test-pvc-multishare-web-0 -o json { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "annotations": { "pv.kubernetes.io/bind-completed": "yes", "pv.kubernetes.io/bound-by-controller": "yes", "volume.beta.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io", "volume.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io" }, "creationTimestamp": "2022-06-21T22:07:42Z", "finalizers": [ "kubernetes.io/pvc-protection" ], "labels": { "app": "nginx" }, "name": "test-pvc-multishare-web-0", "namespace": "default", "resourceVersion": "48395", "uid": "7aa21b5a-5343-4547-b7d7-414c16af15a7" }, "spec": { "accessModes": [ "ReadWriteMany" ], "resources": { "requests": { "storage": "100Gi" } }, "storageClassName": "enterprise-multishare-rwx", "volumeMode": "Filesystem", "volumeName": "pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7" }, "status": { "accessModes": [ "ReadWriteMany" ], "capacity": { "storage": "100Gi" }, "phase": "Bound" } }
Führen Sie in der Befehlszeile den folgenden Befehl aus, um die Größe auf 500 GiB zu erhöhen:
kubectl edit pvc test-pvc-multishare-web-0
Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.resources.requests.storage
und aktualisieren Sie den Wert auf500Gi
.Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get pvc test-pvc-multishare-web-0
Die Ausgabe sollte in etwa so aussehen:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 500Gi RWX enterprise-multishare-rwx 28m
Der Filestore-CSI-Treiber akzeptierte die Anfrage und erweiterte zuerst die zugrundeliegende Filestore-Instanz und dann die Freigabe, die der PVC zugrunde liegt.
Insbesondere hat der Filestore-CSI-Treiber die Instanz automatisch auf 1.536 GiB erweitert, um die neue Freigabegröße von 500 GiB zu berücksichtigen.
Führen Sie in der Befehlszeile den folgenden
instances describe
-Befehl aus, um die Kapazität der Filestore-Instanz zu prüfen:gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION capacityGb: '1536' capacityStepSizeGb: '256' createTime: '2022-06-21T21:15:30.464237089Z' labels: storage_gke_io_created-by: filestore_csi_storage_gke_io storage_gke_io_storage-class-id: enterprise-multishare-rwx maxCapacityGb: '10240' maxShareCount: '10' multiShareEnabled: true name: projects/YOUR_PROJECT_ID/locations/us-central1/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016 networks: - connectMode: DIRECT_PEERING ipAddresses: - 10.192.53.2 modes: - MODE_IPV4 network: csi-filestore-test-network reservedIpRange: 10.192.53.0/26 state: READY tier: ENTERPRISE
Dabei gilt:
Dynamische Bereitstellung in einer freigegebenen VPC
Der Filestore-CSI-Treiber für GKE unterstützt die dynamische Bereitstellung von Volumes in einem Dienstprojekt unter einer freigegebenen VPC. Der folgende Abschnitt zeigt, wie der Filestore-CSI-Treiber zur dynamischen Bereitstellung von Volumes auf Filestore Multishare-Instanzen in einem Dienstprojekt unter einem freigegebenen VPC-Netzwerk verwendet wird.
Führen Sie die Einrichtungsschritte für ein freigegebenes VPC-Netzwerk und den privaten Dienstzugriff aus.
Erstellen Sie eine StorageClass, um Volumes dynamisch bereitzustellen, die von einer Filestore Multishare-Instanz in einer freigegebenen VPC unterstützt werden.
Führen Sie den folgenden Befehl aus, um eine
StorageClass
-Ressource bereitzustellen:cat <<EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore-multishare-sharedvpc provisioner: filestore.csi.storage.gke.io parameters: network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME" connect-mode: PRIVATE_SERVICE_ACCESS tier: enterprise multishare: "true" allowVolumeExpansion: true EOF
Dabei gilt:
HOST_PROJECT_ID ist die ID oder der Name des Hostprojekts des freigegebenen VPC-Netzwerks. Beispiel:
my-host-project
SHARED_VPC_NAME ist der Name des freigegebenen VPC-Netzwerks. Beispiel:
my-shared-vpc
Wenn Sie Ihre Ressource in einem reservierten IP-Adressbereich bereitstellen möchten, fügen Sie den im Befehl verwendeten Parametern die folgende Zeile hinzu:
reserved-ip-range: RESERVED_NAME
Dabei ist RESERVED_NAME der Name des reservierten IP-Adressbereichs, in dem eine Filestore-Instanz bereitgestellt werden kann. Beispiel:
filestore-reserved-ip-range
Wenn ein reservierter IP-Bereich angegeben ist, muss er ein benannter Adressbereich anstelle eines direkten CIDR-Werts sein.Weitere Informationen finden Sie unter IP-Adressbereiche zuweisen oder Reservierten IP-Adressbereich konfigurieren. Ein Beispiel für das Erstellen eines reservierten Namens mit der Google Cloud Console finden Sie unter IP-Zuweisung erstellen.
Deployment erstellen.
Führen Sie den folgenden Befehl aus, um eine
Deployment
-Ressource zu erstellen:cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: test-pvc-fs-sharedvpc --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs-sharedvpc spec: accessModes: - ReadWriteMany storageClassName: csi-filestore-multishare-sharedvpc resources: requests: storage: 100Gi EOF
CMEK-fähige Filestore-Instanzen
Sie können GKE-Volumes erstellen, die auf CMEK-fähigen Filestore Multishare-Instanzen gehostet werden. In diesem Abschnitt erfahren Sie, wie Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) für Ihre Filestore-Instanz einrichten.
Details zum vom Kunden verwalteten Schlüssel können in der StorageClass bereitgestellt werden. Für jede vom Filestore-CSI-Treiber dynamisch erstellte Instanz, die auf diese StorageClass verweist, wird CMEK aktiviert.
CMEK-fähige StorageClass erstellen.
a. Führen Sie dazu diesen Befehl aus:
cat <<EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore-multishare-cmek provisioner: filestore.csi.storage.gke.io parameters: tier: enterprise multishare: "true" instance-encryption-kms-key: projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME allowVolumeExpansion: true EOF
Dabei gilt:
Deployment erstellen.
b. Führen Sie den folgenden Befehl aus, um eine
Deployment
-Ressource zu erstellen:cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: test-pvc-fs-cmek --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs-cmek spec: accessModes: - ReadWriteMany storageClassName: csi-filestore-multishare-cmek resources: requests: storage: 100Gi EOF
PVCs Filestore-Instanzen zuordnen
In diesem Abschnitt erfahren Sie, wie Sie Ihre PVCs Ihren Filestore-Instanzen zuordnen.
Mit Filestore Multishare-Instanzen wird jedes PVC vom Filestore-CSI-Treiber auf einer Filestore-Instanz gehostet. Die Details der zugrunde liegenden Filestore-Instanz, die das Volume hostet, und die Freigabe, die das Kubernetes-Volume darstellt, werden im Feld volumeHandle
der Spezifikation der nichtflüchtigen Volumes erfasst. Das Volume-Handle hat folgendes Format:
modeMultishare/<storageclass-prefix>/<project>/<region>/<filestore-instance-name>/<filestore-share-name>
Mit dem folgenden kubectl
-Befehl können Sie die Zuordnungen zwischen einer PVC, dem PV, der Filestore-Instanz und einer Filestore-Freigabe schnell ermitteln.
Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get pv -o jsonpath='{range .items[*]}{"pv="}{.metadata.name}{",pvc="}{.spec.claimRef.name}{",volumeHandle="}{.spec.csi.volumeHandle}{"\n"}{end}'
Die Ausgabe sollte in etwa so aussehen:
pv=pvc-67ad9abd-f25e-4130-b7ca-64d28bd29525,pvc=test-pvc-multishare,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_67ad9abd_f25e_4130_b7ca_64d28bd29525
pv=pvc-c80f4de0-9916-4957-b8ae-b21206650ac0,pvc=test-pvc-fs-sharedvpc,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_c80f4de0_9916_4957_b8ae_b21206650ac0
Dabei gilt:
- YOUR_PROJECT_ID ist der Name des verwendeten Projekts. Beispiel:
my-project
Beachten Sie, dass zwei nichtflüchtige Volumes im Cluster auf einer einzigen Filestore-Instanz gehostet werden.
Nächste Schritte
- Instanz in einem freigegebenen VPC-Netzwerk in Dienstprojekten erstellen.
- Vergleich der relativen Vorteile von Block-, Datei- und Objektspeicher.
- Speicheroptionen für HPC-Arbeitslasten in Google Cloud.