Volumen erweitern
Trident bietet Kubernetes-Benutzern die Möglichkeit, ihre Volumes nach der Erstellung zu erweitern. Hier finden Sie Informationen zu den Konfigurationen, die zum Erweitern von iSCSI-, NFS-, SMB-, NVMe/TCP- und FC-Volumes erforderlich sind.
Erweitern eines iSCSI-Volumes
Sie können ein iSCSI Persistent Volume (PV) mithilfe des CSI-Provisioners erweitern.
|
|
Die iSCSI-Volume-Erweiterung wird unterstützt von ontap-san , ontap-san-economy , solidfire-san Treiber und erfordert Kubernetes 1.16 oder höher.
|
Schritt 1: Konfigurieren Sie die StorageClass zur Unterstützung der Volume-Erweiterung.
Bearbeiten Sie die StorageClass-Definition, um die allowVolumeExpansion Feld zu true .
cat storageclass-ontapsan.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-san
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
allowVolumeExpansion: True
Bearbeiten Sie eine bereits vorhandene StorageClass, um Folgendes einzuschließen: allowVolumeExpansion Parameter.
Schritt 2: Erstellen Sie ein PVC mit der von Ihnen erstellten StorageClass.
Bearbeiten Sie die PVC-Definition und aktualisieren Sie die spec.resources.requests.storage um die neu gewünschte Größe widerzuspiegeln, die größer als die ursprüngliche Größe sein muss.
cat pvc-ontapsan.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: san-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-san
Trident erstellt ein Persistent Volume (PV) und verknüpft es mit diesem Persistent Volume Claim (PVC).
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO ontap-san 8s kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO Delete Bound default/san-pvc ontap-san 10s
Schritt 3: Definieren Sie eine Halterung, an der das PVC befestigt wird.
Befestigen Sie das PV an einer Kapsel, damit es in seiner Größe angepasst werden kann. Beim Ändern der Größe eines iSCSI PV gibt es zwei Szenarien:
-
Wenn das PV an einen Pod angehängt ist, erweitert Trident das Volume im Speicher-Backend, scannt das Gerät erneut und passt die Größe des Dateisystems an.
-
Beim Versuch, die Größe eines nicht zugeordneten PV zu ändern, erweitert Trident das Volumen im Speicher-Backend. Nachdem die PVC an einen Pod gebunden wurde, scannt Trident das Gerät erneut und passt die Größe des Dateisystems an. Kubernetes aktualisiert anschließend die PVC-Größe, nachdem der Erweiterungsvorgang erfolgreich abgeschlossen wurde.
In diesem Beispiel wird ein Pod erstellt, der Folgendes verwendet: san-pvc .
kubectl get pod
NAME READY STATUS RESTARTS AGE
ubuntu-pod 1/1 Running 0 65s
kubectl describe pvc san-pvc
Name: san-pvc
Namespace: default
StorageClass: ontap-san
Status: Bound
Volume: pvc-8a814d62-bd58-4253-b0d1-82f2885db671
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: ubuntu-pod
Schritt 4: PV erweitern
Um die Größe des erstellten PV von 1 GiB auf 2 GiB zu ändern, bearbeiten Sie die PVC-Definition und aktualisieren Sie die spec.resources.requests.storage bis 2 GiB.
kubectl edit pvc san-pvc
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
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: csi.trident.netapp.io
creationTimestamp: "2019-10-10T17:32:29Z"
finalizers:
- kubernetes.io/pvc-protection
name: san-pvc
namespace: default
resourceVersion: "16609"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/san-pvc
uid: 8a814d62-bd58-4253-b0d1-82f2885db671
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
# ...
Schritt 5: Die Erweiterung validieren
Sie können überprüfen, ob die Erweiterung korrekt funktioniert hat, indem Sie die Größe des PVC, PV und des Trident -Volumens kontrollieren:
kubectl get pvc san-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO ontap-san 11m kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO Delete Bound default/san-pvc ontap-san 12m tridentctl get volumes -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-8a814d62-bd58-4253-b0d1-82f2885db671 | 2.0 GiB | ontap-san | block | a9b7bfff-0505-4e31-b6c5-59f492e02d33 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
FC-Volume erweitern
Sie können ein FC Persistent Volume (PV) mithilfe des CSI-Provisioners erweitern.
|
|
Die FC-Volumenerweiterung wird unterstützt durch ontap-san Treiber und erfordert Kubernetes 1.16 oder höher.
|
Schritt 1: Konfigurieren Sie die StorageClass zur Unterstützung der Volume-Erweiterung.
Bearbeiten Sie die StorageClass-Definition, um die allowVolumeExpansion Feld zu true .
cat storageclass-ontapsan.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-san
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
allowVolumeExpansion: True
Bearbeiten Sie eine bereits vorhandene StorageClass, um Folgendes einzuschließen: allowVolumeExpansion Parameter.
Schritt 2: Erstellen Sie ein PVC mit der von Ihnen erstellten StorageClass.
Bearbeiten Sie die PVC-Definition und aktualisieren Sie die spec.resources.requests.storage um die neu gewünschte Größe widerzuspiegeln, die größer als die ursprüngliche Größe sein muss.
cat pvc-ontapsan.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: san-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-san
Trident erstellt ein Persistent Volume (PV) und verknüpft es mit diesem Persistent Volume Claim (PVC).
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO ontap-san 8s kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO Delete Bound default/san-pvc ontap-san 10s
Schritt 3: Definieren Sie eine Halterung, an der das PVC befestigt wird.
Befestigen Sie das PV an einer Kapsel, damit es in seiner Größe angepasst werden kann. Bei der Größenänderung einer FC-PV gibt es zwei Szenarien:
-
Wenn das PV an einen Pod angehängt ist, erweitert Trident das Volume im Speicher-Backend, scannt das Gerät erneut und passt die Größe des Dateisystems an.
-
Beim Versuch, die Größe eines nicht zugeordneten PV zu ändern, erweitert Trident das Volumen im Speicher-Backend. Nachdem die PVC an einen Pod gebunden wurde, scannt Trident das Gerät erneut und passt die Größe des Dateisystems an. Kubernetes aktualisiert anschließend die PVC-Größe, nachdem der Erweiterungsvorgang erfolgreich abgeschlossen wurde.
In diesem Beispiel wird ein Pod erstellt, der Folgendes verwendet: san-pvc .
kubectl get pod
NAME READY STATUS RESTARTS AGE
ubuntu-pod 1/1 Running 0 65s
kubectl describe pvc san-pvc
Name: san-pvc
Namespace: default
StorageClass: ontap-san
Status: Bound
Volume: pvc-8a814d62-bd58-4253-b0d1-82f2885db671
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: ubuntu-pod
Schritt 4: PV erweitern
Um die Größe des erstellten PV von 1 GiB auf 2 GiB zu ändern, bearbeiten Sie die PVC-Definition und aktualisieren Sie die spec.resources.requests.storage bis 2 GiB.
kubectl edit pvc san-pvc
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
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: csi.trident.netapp.io
creationTimestamp: "2019-10-10T17:32:29Z"
finalizers:
- kubernetes.io/pvc-protection
name: san-pvc
namespace: default
resourceVersion: "16609"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/san-pvc
uid: 8a814d62-bd58-4253-b0d1-82f2885db671
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
# ...
Schritt 5: Die Erweiterung validieren
Sie können überprüfen, ob die Erweiterung korrekt funktioniert hat, indem Sie die Größe des PVC, PV und des Trident -Volumens kontrollieren:
kubectl get pvc san-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO ontap-san 11m kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO Delete Bound default/san-pvc ontap-san 12m tridentctl get volumes -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-8a814d62-bd58-4253-b0d1-82f2885db671 | 2.0 GiB | ontap-san | block | a9b7bfff-0505-4e31-b6c5-59f492e02d33 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Erweitern eines NFS-Volumes
Trident unterstützt die Volumenerweiterung für NFS-PVs, die auf ontap-nas , ontap-nas-economy , ontap-nas-flexgroup , gcp-cvs , Und azure-netapp-files Backends.
Schritt 1: Konfigurieren Sie die StorageClass zur Unterstützung der Volume-Erweiterung.
Um ein NFS-PV zu vergrößern oder zu verkleinern, muss der Administrator zunächst die Speicherklasse so konfigurieren, dass eine Volumenerweiterung möglich ist. allowVolumeExpansion Feld zu true :
cat storageclass-ontapnas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontapnas
provisioner: csi.trident.netapp.io
parameters:
backendType: ontap-nas
allowVolumeExpansion: true
Wenn Sie bereits eine Speicherklasse ohne diese Option erstellt haben, können Sie die vorhandene Speicherklasse einfach bearbeiten, indem Sie kubectl edit storageclass um eine Volumenausdehnung zu ermöglichen.
Schritt 2: Erstellen Sie ein PVC mit der von Ihnen erstellten StorageClass.
cat pvc-ontapnas.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ontapnas20mb
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Mi
storageClassName: ontapnas
Trident sollte für dieses PVC ein 20 MiB NFS PV erstellen:
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ontapnas20mb Bound pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 20Mi RWO ontapnas 9s kubectl get pv pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 20Mi RWO Delete Bound default/ontapnas20mb ontapnas 2m42s
Schritt 3: PV erweitern
Um die neu erstellte 20 MiB PV auf 1 GiB zu skalieren, bearbeiten Sie die PVC und stellen Sie sie entsprechend ein. spec.resources.requests.storage bis 1 GiB:
kubectl edit pvc ontapnas20mb
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
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: csi.trident.netapp.io
creationTimestamp: 2018-08-21T18:26:44Z
finalizers:
- kubernetes.io/pvc-protection
name: ontapnas20mb
namespace: default
resourceVersion: "1958015"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/ontapnas20mb
uid: c1bd7fa5-a56f-11e8-b8d7-fa163e59eaab
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
# ...
Schritt 4: Die Erweiterung validieren
Sie können überprüfen, ob die Größenänderung korrekt durchgeführt wurde, indem Sie die Größe des PVC, PV und des Trident -Volumens überprüfen:
kubectl get pvc ontapnas20mb NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ontapnas20mb Bound pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 1Gi RWO ontapnas 4m44s kubectl get pv pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 1Gi RWO Delete Bound default/ontapnas20mb ontapnas 5m35s tridentctl get volume pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 | 1.0 GiB | ontapnas | file | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+