자동 증가 정책 관리
Autogrow 정책을 생성한 후에는 필요에 따라 정책을 보고, 업데이트하고, 삭제할 수 있습니다. 또한 특정 정책을 사용 중인 볼륨을 모니터링할 수도 있습니다.
자동 증가 정책 보기
모든 정책 나열
`kubectl`를 사용하여 클러스터의 모든 Autogrow 정책을 나열합니다.
kubectl get tridentautogrowpolicy
또는 다음을 사용하십시오 tridentctl:
tridentctl get autogrowpolicy
정책 세부 정보 보기
정책의 전체 사양 및 상태를 보려면 다음을 수행합니다.
kubectl describe tridentautogrowpolicy production-db-policy
YAML 형식으로 정책과 해당 정책에 연결된 볼륨을 보려면 다음을 수행합니다.
tridentctl get autogrowpolicy production-db-policy -o yaml
자동 증가 정책 업데이트
기존 정책을 수정하여 임계값, 증가량 또는 최대 크기를 변경할 수 있습니다. 변경 사항은 해당 정책을 사용하는 모든 볼륨에 즉시 적용됩니다.
|
|
변경 사항은 현재 해당 정책을 사용 중인 모든 볼륨에 적용됩니다. 가능하면 먼저 비운영 환경에서 변경 사항을 테스트하십시오. |
-
정책을 편집합니다.
kubectl edit tridentautogrowpolicy production-db-policy -
spec필드를 필요에 따라 수정합니다.spec: usedThreshold: "75%" # Changed from 80% growthAmount: "20%" # Changed from 10% maxSize: "1Ti" # Changed from 500Gi -
저장하고 종료하세요. 변경 사항은 즉시 적용됩니다.
업데이트 고려 사항
-
즉시 효력 발생: 해당 정책을 사용하는 모든 볼륨은 다음 증가 평가 시 새로운 매개변수를 적용받습니다.
-
볼륨 재시작이 필요 없습니다. 변경 사항은 다음 확장 작업에 적용됩니다.
-
먼저 테스트: 가능하면 비운영 환경에서 변경 사항을 검증하십시오.
-
변경 사항 전달: 공유 정책을 수정할 때 팀에 알립니다.
자동 증가 정책 삭제
자동 확장 정책은 볼륨이 활발하게 사용 중인 동안 실수로 삭제되는 것을 방지하기 위해 finalizer 보호 기능을 사용합니다.
-
정책을 삭제합니다.
kubectl delete tridentautogrowpolicy production-db-policy -
볼륨이 여전히 정책을 사용 중인 경우 삭제 작업이
Deleting상태로 전환됩니다. 어떤 볼륨이 영향을 받는지 확인하십시오:tridentctl get autogrowpolicy production-db-policy -o yaml -
영향을 받는 각 볼륨에서 정책을 제거합니다. 다음 옵션 중 하나를 선택하십시오.
-
옵션 A: 주석을 `"none"`로 설정하여 자동 크기 증가를 명시적으로 비활성화:
kubectl annotate pvc <pvc-name> \ trident.netapp.io/autogrowPolicy="none" \ --overwrite -
옵션 B: 주석을 완전히 제거합니다.
kubectl annotate pvc <pvc-name> \ trident.netapp.io/autogrowPolicy-
-
삭제 동작
| 시나리오 | 동작 |
|---|---|
해당 정책을 사용하는 볼륨은 없습니다 |
정책은 즉시 삭제됩니다. |
볼륨이 정책을 사용하고 있습니다 |
정책이 |
모든 볼륨이 정책에서 제거됩니다 |
최종 결정자가 제거되고 정책이 삭제됩니다. |
자동 증가 정책 사용량 모니터링
정책을 사용하여 볼륨 확인
tridentctl get autogrowpolicy production-db-policy -o json | jq '.volumes'
볼륨이 사용하는 정책 찾기
kubectl get pvc database-pvc -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
정책 이벤트 모니터링
kubectl get events --field-selector involvedObject.kind=TridentAutogrowPolicy
지원되는 프로토콜
Autogrow는 다음과 같은 스토리지 프로토콜을 지원합니다:
-
NFS 를 참조하십시오
-
iSCSI
-
FCP
-
NVMe
|
|
SAN 볼륨의 경우, 구성된 `growthAmount`이 50MiB 이하이면 Trident는 크기 조정 작업 시 증가량을 자동으로 51MB로 늘립니다. 단, 최종 크기가 `maxSize`를 초과하지 않는 경우에 한합니다. |
알려진 제한 사항
-
* ONTAP NVMe 원시 블록 볼륨:* ONTAP 9.16.1 이전 버전으로 생성된 볼륨은 자동 확장을 지원하지 않습니다.
-
기존 볼륨(브라운필드 배포): 유효한 Autogrow Policy가 적용되었더라도 기존 볼륨에서는 Autogrow 기능이 작동하지 않을 수 있습니다. 이는 볼륨 게시 마이그레이션이 진행 중이기 때문입니다. 마이그레이션이 완료되었는지 확인하려면 Trident 컨트롤러 로그에서
"Migration completed"메시지를 확인하십시오.
자주 묻는 질문
Trident는 언제 임계값을 평가합니까?
Trident는 볼륨 사용량을 지속적으로 모니터링합니다. 사용 용량이 `usedThreshold`를 초과하면 Trident는 내부 크기 조정 요청을 생성하고 구성된 `growthAmount`만큼 볼륨을 확장합니다.
예를 들어, 이 정책은 용량의 80%에 도달하면 확장을 시작하고 매번 10%씩 증가시켜 최대 500 GiB까지 늘립니다.
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: standard-autogrow
spec:
usedThreshold: "80%"
growthAmount: "10%"
maxSize: "500Gi"
볼륨이 이미 프로비저닝된 후에도 정책을 적용할 수 있습니까?
예. 자동 증가 정책은 언제든지 생성할 수 있으며, trident.netapp.io/autogrowPolicy 어노테이션을 추가하거나 업데이트하여 기존 PVC에 적용할 수 있습니다. PVC나 StorageClass를 다시 생성할 필요가 없습니다.
기존 PVC에 정책을 적용하려면:
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="production-db-policy" \
--overwrite
기존 StorageClass에 정책을 적용하려면 다음을 수행합니다.
kubectl annotate storageclass ontap-gold \
trident.netapp.io/autogrowPolicy="production-db-policy" \
--overwrite
StorageClass와 PVC 모두에 자동 증가 정책을 설정하면 어떻게 되나요?
PVC 어노테이션이 항상 우선합니다. PVC에 trident.netapp.io/autogrowPolicy 어노테이션이 있는 경우 Trident는 StorageClass에서 지정한 값과 관계없이 해당 값을 사용합니다. 자세한 내용은 "정책 우선 순위"를 참조하십시오.
예를 들어, 다음과 같은 StorageClass가 있습니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
annotations:
trident.netapp.io/autogrowPolicy: "standard-agp"
provisioner: csi.trident.netapp.io
allowVolumeExpansion: true
그리고 StorageClass 정책을 재정의하는 이 PVC는 다음과 같습니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-pvc
annotations:
trident.netapp.io/autogrowPolicy: "logs-policy"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: ontap-gold
Trident는 `logs-policy`를 위해 `database-pvc`를 사용하며, `standard-agp`는 사용하지 않습니다.
특정 볼륨의 자동 확장을 비활성화하려면 어떻게 해야 하나요?
PVC 주석을 `"none"`로 설정합니다. 이렇게 하면 해당 볼륨에 대한 StorageClass 수준 정책이 재정의됩니다.
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="none" \
--overwrite
자동 크기 증가 기능이 비활성화되어 있는지 확인할 수 있습니다.
kubectl get pvc <pvc-name> -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
none
볼륨이 maxSize에 도달하면 어떻게 됩니까?
Trident가 볼륨 확장을 중지합니다. 사용량이 `usedThreshold`를 초과하여 계속 증가하더라도 해당 볼륨에 대한 추가 크기 조정 요청은 생성되지 않습니다.
예를 들어, 이 정책을 사용하면 Trident는 볼륨이 100GiB에 도달하면 볼륨 증가를 중지합니다.
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: capped-policy
spec:
usedThreshold: "90%"
growthAmount: "10Gi"
maxSize: "100Gi"
무제한 성장을 허용하려면 `maxSize`을 생략하거나 `0`로 설정하십시오:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: unlimited-policy
spec:
usedThreshold: "85%"
growthAmount: "10%"
볼륨을 재시작하지 않고 정책을 변경할 수 있습니까?
예. 정책을 업데이트하면 해당 정책을 사용하는 모든 볼륨이 다음 용량 증가 평가 시 새 매개변수를 적용합니다. 볼륨을 다시 시작할 필요는 없습니다.
정책을 업데이트하려면 다음을 수행합니다.
kubectl edit tridentautogrowpolicy production-db-policy
필요에 따라 필드를 수정합니다.
spec:
usedThreshold: "75%" # Changed from 80%
growthAmount: "20%" # Changed from 10%
maxSize: "1Ti" # Changed from 500Gi
저장 후 종료합니다. 업데이트된 정책을 확인합니다.
kubectl get tridentautogrowpolicy production-db-policy
NAME USED THRESHOLD GROWTH AMOUNT STATE
production-db-policy 75% 20% Success
내 정책이 실패 상태인 이유는 무엇입니까?
`Failed` 상태는 정책 사양에 유효성 검사 오류가 있음을 나타냅니다. 다음 명령을 실행하여 오류 세부 정보를 확인하십시오.
kubectl describe tridentautogrowpolicy <policy-name>
일반적인 원인으로는 유효하지 않은 usedThreshold(1~99%여야 함), growthAmount`을 초과하는 `maxSize 또는 유효하지 않은 Kubernetes 수량 형식이 있습니다. 사양을 수정하고 다시 적용하십시오:
kubectl apply -f autogrow-policy.yaml
정책을 삭제할 수 없는 이유는 무엇인가요?
정책은 finalizer 보호 기능을 사용합니다. 볼륨이 여전히 정책을 사용 중인 경우 삭제 작업은 Deleting 상태로 들어가며 모든 볼륨이 정책에서 제거될 때까지 대기합니다.
영향을 받는 볼륨을 식별하십시오.
tridentctl get autogrowpolicy production-db-policy -o yaml
그런 다음 각 PVC에서 주석을 제거합니다.
# Option A: Explicitly disable autogrow
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="none" \
--overwrite
# Option B: Remove the annotation entirely
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy-
모든 볼륨이 제거되면 파이널라이저가 해제되고 정책이 삭제됩니다.
자동 크기 증가 기능은 모든 ONTAP 백엔드에서 작동하나요?
자동 확장 기능은 NFS, iSCSI, FCP 및 NVMe 프로토콜을 지원합니다. 단, NVMe 원시 블록 볼륨을 사용하려면 ONTAP 9.16.1 이상 버전이 필요합니다.
기존 배포 환경의 경우 자동 확장이 적용되기 전에 볼륨 게시 마이그레이션이 완료되어야 할 수 있습니다. Trident 컨트롤러 로그를 확인하여 마이그레이션 상태를 확인하십시오.
kubectl logs -l app=trident-controller -n trident | grep "Migration completed"
다음 StorageClass 예제는 NAS 및 SAN 백엔드에 대해 자동 확장이 구성된 방식을 보여줍니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-nas-autogrow
annotations:
trident.netapp.io/autogrowPolicy: "standard-autogrow"
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
fsType: "ext4"
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: database-storage
annotations:
trident.netapp.io/autogrowPolicy: "production-db-policy"
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
fsType: "ext4"
allowVolumeExpansion: true
SAN 볼륨의 최소 증가량은 얼마입니까?
SAN 볼륨의 경우, 유효 최소 증가량은 51MB입니다. `growthAmount`를 50MiB 이하로 설정한 경우, Trident는 크기 조정 작업 시 증가량을 자동으로 51MB로 늘립니다.
예를 들어, 이 정책은 `growthAmount`을 `"40Mi"`로 설정하지만, Trident는 이 정책을 사용하는 모든 SAN 볼륨에 대해 51MB의 증가분을 적용합니다.
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: san-minimal-policy
spec:
usedThreshold: "85%"
growthAmount: "40Mi"
maxSize: "100Gi"
이러한 자동 조정을 방지하려면 `growthAmount`을 50 MiB보다 큰 값으로 설정하십시오.
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: san-policy
spec:
usedThreshold: "85%"
growthAmount: "100Mi"
maxSize: "500Gi"