볼륨 확장
Trident는 Kubernetes 사용자에게 볼륨 생성 후 확장 기능을 제공합니다. iSCSI, NFS, SMB, NVMe/TCP 및 FC 볼륨 확장에 필요한 구성에 대한 정보를 확인하십시오.
iSCSI 볼륨 확장
CSI 프로비저너를 사용하여 iSCSI 영구 볼륨(PV)을 확장할 수 있습니다.
|
|
iSCSI 볼륨 확장은 ontap-san, ontap-san-economy, solidfire-san 드라이버에서 지원되며 Kubernetes 1.16 이상이 필요합니다.
|
1단계: 볼륨 확장을 지원하도록 StorageClass 구성
StorageClass 정의를 편집하여 allowVolumeExpansion 필드를 `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
이미 존재하는 StorageClass의 경우 allowVolumeExpansion 매개 변수를 포함하도록 편집합니다.
2단계: 생성한 StorageClass로 PVC 만들기
PVC 정의를 편집하고 새로 원하는 크기를 반영하도록 `spec.resources.requests.storage`을 업데이트합니다(원래 크기보다 커야 함).
cat pvc-ontapsan.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: san-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-san
Trident는 영구 볼륨(PV)을 생성하고 이 영구 볼륨 클레임(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
3단계: PVC를 연결하는 POD 정의
크기를 조정할 PV를 파드에 연결합니다. iSCSI PV의 크기를 조정할 때는 두 가지 시나리오가 있습니다.
-
PV가 포드에 연결된 경우 Trident는 스토리지 백엔드에서 볼륨을 확장하고 장치를 다시 스캔한 후 파일 시스템 크기를 조정합니다.
-
연결되지 않은 PV의 크기를 조정하려고 할 때 Trident는 스토리지 백엔드에서 볼륨을 확장합니다. PVC가 파드에 바인딩된 후 Trident는 디바이스를 다시 스캔하고 파일 시스템의 크기를 조정합니다. 그런 다음 Kubernetes는 확장 작업이 성공적으로 완료된 후 PVC 크기를 업데이트합니다.
이 예에서는 `san-pvc`를 사용하는 Pod가 생성됩니다.
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
4단계: PV 확장
1Gi에서 2Gi로 생성된 PV의 크기를 조정하려면 PVC 정의를 편집하고 `spec.resources.requests.storage`을 2Gi로 업데이트합니다.
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
# ...
5단계: 확장 유효성 검사
PVC, PV 및 Trident 볼륨의 크기를 확인하여 확장이 올바르게 작동하는지 확인할 수 있습니다.
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 볼륨 확장
CSI 프로비저너를 사용하여 FC 영구 볼륨(PV)을 확장할 수 있습니다.
|
|
FC 볼륨 확장은 ontap-san 드라이버에서 지원되며 Kubernetes 1.16 이상이 필요합니다.
|
1단계: 볼륨 확장을 지원하도록 StorageClass 구성
StorageClass 정의를 편집하여 allowVolumeExpansion 필드를 `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
이미 존재하는 StorageClass의 경우 allowVolumeExpansion 매개 변수를 포함하도록 편집합니다.
2단계: 생성한 StorageClass로 PVC 만들기
PVC 정의를 편집하고 새로 원하는 크기를 반영하도록 `spec.resources.requests.storage`을 업데이트합니다(원래 크기보다 커야 함).
cat pvc-ontapsan.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: san-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-san
Trident는 영구 볼륨(PV)을 생성하고 이 영구 볼륨 클레임(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
3단계: PVC를 연결하는 POD 정의
크기를 조정할 PV를 포드에 연결합니다. FC PV의 크기를 조정할 때는 두 가지 시나리오가 있습니다.
-
PV가 포드에 연결된 경우 Trident는 스토리지 백엔드에서 볼륨을 확장하고 장치를 다시 스캔한 후 파일 시스템 크기를 조정합니다.
-
연결되지 않은 PV의 크기를 조정하려고 할 때 Trident는 스토리지 백엔드에서 볼륨을 확장합니다. PVC가 파드에 바인딩된 후 Trident는 디바이스를 다시 스캔하고 파일 시스템의 크기를 조정합니다. 그런 다음 Kubernetes는 확장 작업이 성공적으로 완료된 후 PVC 크기를 업데이트합니다.
이 예에서는 `san-pvc`를 사용하는 Pod가 생성됩니다.
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
4단계: PV 확장
1Gi에서 2Gi로 생성된 PV의 크기를 조정하려면 PVC 정의를 편집하고 `spec.resources.requests.storage`을 2Gi로 업데이트합니다.
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
# ...
5단계: 확장 유효성 검사
PVC, PV 및 Trident 볼륨의 크기를 확인하여 확장이 올바르게 작동하는지 확인할 수 있습니다.
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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
NFS 볼륨 확장
Trident는 ontap-nas, ontap-nas-economy, ontap-nas-flexgroup 및 azure-netapp-files 백엔드에서 프로비저닝된 NFS PV의 볼륨 확장을 지원합니다.
1단계: 볼륨 확장을 지원하도록 StorageClass 구성
NFS PV의 크기를 조정하려면 관리자가 먼저 allowVolumeExpansion 필드를 `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
이 옵션 없이 이미 스토리지 클래스를 생성한 경우 `kubectl edit storageclass`을 사용하여 기존 스토리지 클래스를 편집하여 볼륨 확장을 허용할 수 있습니다.
2단계: 생성한 StorageClass로 PVC 만들기
cat pvc-ontapnas.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ontapnas20mb
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Mi
storageClassName: ontapnas
Trident는 이 PVC에 대해 20MiB NFS PV를 생성해야 합니다.
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
3단계: PV 확장
새로 생성한 20 MiB PV의 크기를 1 GiB로 조정하려면 PVC를 편집하고 `spec.resources.requests.storage`을 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
# ...
4단계: 확장 검증
PVC, PV 및 Trident 볼륨의 크기를 확인하여 크기 조정이 올바르게 작동하는지 확인할 수 있습니다.
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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+