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-rwxmit 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
Immediateein:volumeBindingMode: ImmediateVerwenden 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-sizeein 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 EOFPod-Replikate prüfen.
a. Führen Sie in der Befehlszeile den folgenden Befehl aus, um den PVC-Status zu prüfen:
kubectl get pvcDie 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 35mb. Führen Sie in der Befehlszeile den folgenden Befehl aus, um den Pod-Status zu prüfen:
kubectl get podDie 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 35mReplikate skalieren.
a. Führen Sie in der Befehlszeile den folgenden Befehl aus, um das Deployment zu bearbeiten:
kubectl edit deployment web-server-multishareb. Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.replicasund aktualisieren Sie den Wert auf10.c. Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get podDie 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 36mBeachten Sie, dass 10 Pods ausgeführt werden.
d. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get deploymentDie Ausgabe sollte in etwa so aussehen:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 10/10 10 10 36me. Führen Sie in der Befehlszeile den folgenden Befehl aus, um den PVC-gebundenen Status zu prüfen:
kubectl get pvcDie 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 37mf. Führen Sie in der Befehlszeile den folgenden Befehl aus, um das Deployment zu bearbeiten:
kubectl edit deployment web-server-multishareg. Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.replicasund aktualisieren Sie den Wert auf2.h. Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get podDie 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 38mStellen 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 EOFPrüfen Sie die zustandsorientierten Replikate und Volumes.
Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get podDie 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 57mBeachten 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 statefulsetDie Ausgabe sollte in etwa so aussehen:
NAME READY AGE web 2/2 2m8sFühren Sie in der Befehlszeile folgenden Befehl aus:
kubectl get pvcDie 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 38sDer PVC
test-pvc-fsist dem Deploymentweb-server-multisharezugeordnet.Die PVCs
test-pvc-multishare-web-0undtest-pvc-multishare-web-1sind 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 webb. Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.replicasund aktualisieren Sie den Wert auf9.c. Führen Sie in der Befehlszeile den folgenden Befehl aus, um die angewendete Änderung zu sehen:
kubectl get statefulsetDie Ausgabe sollte in etwa so aussehen:
NAME READY AGE web 9/9 13md. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get deploymentDie Ausgabe sollte in etwa so aussehen:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 2/2 2 2 65me. Führen Sie in der Befehlszeile folgenden Befehl aus:
kubectl get pvcDie 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 118sDen 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=REGIONDabei gilt:
YOUR_PROJECT_ID ist der Name des verwendeten Projekts. Beispiel:
my-projectREGION 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:30b. 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: ENTERPRISEDabei 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-sizeangegebene 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-0Die Datei wird in der Befehlszeile geöffnet. Suchen Sie das Feld
spec.resources.requests.storageund 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-0Die 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 28mDer 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: ENTERPRISEDabei 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 EOFDabei gilt:
HOST_PROJECT_ID ist die ID oder der Name des Hostprojekts des freigegebenen VPC-Netzwerks. Beispiel:
my-host-projectSHARED_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_NAMEDabei ist RESERVED_NAME der Name des reservierten IP-Adressbereichs, in dem eine Filestore-Instanz bereitgestellt werden kann. Beispiel:
filestore-reserved-ip-rangeWenn 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 EOFDabei 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.