자동 볼륨 확장
자동 볼륨 확장을 사용하면 Trident에서 프로비저닝한 영구 볼륨이 사용된 용량이 정의된 임계값에 도달할 때 자동으로 증가합니다. 이 기능은 운영 오버헤드를 줄이고 용량 고갈로 인한 애플리케이션 중단을 방지하는 데 도움이 됩니다.
자동 볼륨 확장은 Autogrow 정책을 사용하여 구현됩니다. Autogrow 정책은 다음을 정의합니다.
-
확장을 트리거하는 사용률 임계값
-
볼륨이 증가하는 양
-
볼륨이 도달할 수 있는 최대 크기
정의된 사용률 임계값을 초과하면 볼륨 크기가 자동으로 증가합니다. 볼륨은 자동으로 축소되지 않습니다.
요구 사항
자동 볼륨 확장을 구성하기 전에 다음 요구 사항을 충족하는지 확인하십시오.
-
Trident 26.02 이상
-
역할 기반 액세스 제어 권한으로
TridentAutogrowPolicy사용자 지정 리소스 생성 -
StorageClasses로 구성되었습니다
allowVolumeExpansion: true -
지원되는 ONTAP 프로토콜:
-
네트워크 파일 시스템
-
인터넷 소형 컴퓨터 시스템 인터페이스
-
Fibre Channel 프로토콜
-
패브릭을 통한 Non-Volatile Memory Express
-
제한 사항
-
ONTAP 9.16.1 이전 버전의 ONTAP Non-Volatile Memory Express 원시 블록 볼륨은 자동 확장을 지원하지 않습니다.
-
스토리지 영역 네트워크 볼륨의 경우, `growthAmount`이(가) 50메비바이트 이하이면 Trident는 크기 조정 전에 자동으로 값을 51메비바이트로 늘립니다. 단, 결과 크기가 `maxSize`을(를) 초과하지 않는 경우에 한합니다.
-
브라운필드 환경에서는 볼륨 게시 마이그레이션 동작으로 인해 특정 기존 볼륨에 대해 자동 확장이 작동하지 않을 수 있습니다.
-
볼륨이 `maxSize`에 도달하면 더 이상 확장되지 않습니다.
-
자동 볼륨 확장을 위해 지원되는 프로토콜:
-
네트워크 파일 시스템
-
인터넷 소형 컴퓨터 시스템 인터페이스
-
Fibre Channel 프로토콜
-
패브릭을 통한 Non-Volatile Memory Express
-
자동 확장 정책이 적용된 볼륨 프로비저닝
자동 확장 정책은 두 가지 수준에서 구성할 수 있습니다.
-
스토리지 클래스 수준: 모든 볼륨의 기본값을 설정합니다(주석 사용)
-
PVC 레벨: 스토리지 클래스 기본값을 재정의합니다(annotation 사용)
자동 증가 정책 생성
자동 확장 정책을 사용하면 볼륨이 정의된 용량 임계값에 도달할 때 볼륨이 자동으로 확장됩니다.
다음 사항을 확인하십시오.
-
Trident 26.02 이상이 설치되어 있습니다
-
역할 기반 액세스 제어 권한을 통해
TridentAutogrowPolicy리소스를 생성합니다 -
워크로드 증가 요구 사항에 대한 이해
자동 확장 정책은 볼륨이 정의된 용량 임계값에 도달했을 때 자동으로 확장되는 방식을 정의합니다.
워크플로의 어느 단계에서든 자동 확장 정책을 생성할 수 있습니다.
-
StorageClasses와 볼륨이 생성되기 전에
-
StorageClasses가 존재한 후
-
볼륨이 프로비저닝된 후
이러한 유연성을 통해 기존 리소스를 다시 생성하지 않고도 자동 확장을 도입할 수 있습니다.
자동 확장 정책 사양
자동 증가 정책은 다음과 같이 정의된 Kubernetes 사용자 지정 리소스입니다.
| 필드에 입력합니다 | 설명 | 형식 | 필수 요소입니다 | 예 | 기본값 |
|---|---|---|---|---|---|
이름 |
고유 정책 식별자 |
문자열 |
예 |
production-db-policy |
None |
usedThreshold |
확장을 트리거하는 용량 비율 |
백분율 문자열 |
예 |
"80%" |
None |
growthAmount |
임계값에 도달했을 때 증가할 양 |
백분율 또는 크기 |
아니요 |
"10%" 또는 "5Gi" |
"10%" |
maxSize |
최대 볼륨 크기 제한 |
Kubernetes 수량 |
아니요 |
"500Gi" |
무제한 |
자동 증가 정책 생성
-
Autogrow Policy를 정의하는 YAML 파일을 생성합니다.
apiVersion: trident.netapp.io/v1 kind: TridentAutogrowPolicy metadata: name: standard-autogrow spec: usedThreshold: "80%" growthAmount: "10%" maxSize: "500Gi" -
클러스터에 정책을 적용합니다.
kubectl apply -f autogrow-policy.yaml -
정책이 생성되었는지 확인하십시오.
kubectl get tridentautogrowpolicy standard-autogrow예상 출력NAME USED THRESHOLD GROWTH AMOUNT STATE standard-autogrow 80% 10% Success
정책 상태
정책을 생성하면 Trident가 사양을 검증하고 다음 상태 중 하나를 할당합니다.
| 상태 | 설명 | 조치 필요 |
|---|---|---|
성공 |
정책이 검증되어 사용할 준비가 되었습니다. |
없음. |
실패했습니다 |
유효성 검사 오류가 감지되었습니다. |
사양을 검토하고 수정하십시오. |
삭제 중 |
삭제가 진행 중입니다. |
완료될 때까지 기다립니다. |
정책을 StorageClass에 연결합니다
`trident.netapp.io/autogrowPolicy` 어노테이션을 사용하여 StorageClass에 자동 확장 정책을 연결할 수 있습니다. 해당 StorageClass에서 프로비저닝된 모든 볼륨은 이 정책을 상속받습니다.
|
|
StorageClass는 다음을 가져야 합니다 allowVolumeExpansion: true.
|
-
Autogrow Policy 어노테이션을 사용하여 StorageClass를 생성하거나 수정합니다.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ontap-gold annotations: trident.netapp.io/autogrowPolicy: "production-db-policy" provisioner: csi.trident.netapp.io parameters: backendType: "ontap-san" fsType: "ext4" allowVolumeExpansion: true -
StorageClass를 적용합니다.
kubectl apply -f storageclass.yaml -
주석을 확인하세요:
kubectl get storageclass ontap-gold -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'예상 출력production-db-policy
정책 우선 순위
StorageClass와 PVC 모두에 Autogrow Policy 어노테이션이 설정된 경우 Trident는 다음 우선순위 규칙을 적용합니다.
-
PVC 주석이 우선합니다. PVC에 `trident.netapp.io/autogrowPolicy`가 설정되면 해당 값이 항상 사용됩니다.
-
StorageClass 어노테이션은 PVC에 어노테이션이 없는 경우에만 적용됩니다.
-
어노테이션이 둘 다 없는 경우 Autogrow Policy가 적용되지 않습니다.
| StorageClass 어노테이션 | PVC 주석 | 효과적인 행동 |
|---|---|---|
|
설정되지 않음 |
용도 |
|
|
|
|
|
자동 증가 정책 없음(PVC에서 자동 증가 기능을 비활성화함). |
설정되지 않음 |
|
용도 |
설정되지 않음 |
설정되지 않음 |
자동 증가 정책 없음. |
구성 예
다음 예시는 다양한 사용 사례에 대한 일반적인 Autogrow Policy 구성을 보여줍니다.
운영 데이터베이스에 대한 보수적인 정책
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: production-db-policy
spec:
usedThreshold: "75%"
growthAmount: "20%"
maxSize: "5Ti"
고정 증가 단위로 로그 스토리지
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: log-storage-policy
spec:
usedThreshold: "90%"
growthAmount: "10Gi"
maxSize: "100Gi"
기본값이 포함된 최소 정책
`growthAmount`및 `maxSize`를 생략하면 Trident는 기본값(`10%` 증가, 무제한 크기)을 사용합니다.
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: logs-policy
spec:
usedThreshold: "85%"
사용자 지정 maxSize 및 기본 growthAmount가 있는 정책
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: default-ga-policy
spec:
usedThreshold: "70%"
maxSize: "100Gi"
무제한 maxSize로 공격적인 성장
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: aggressive-growth-policy
spec:
usedThreshold: "80%"
growthAmount: "150%"
소수 백분율이 포함된 정책
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: precise-policy
spec:
usedThreshold: "80.28%"
growthAmount: "10.65%"
maxSize: "100Gi"
|
|
소수점 이하 백분율도 지원됩니다. 소수점 이하 세 자리 이상을 지정하면 Trident가 값을 소수점 셋째 자리까지 반올림합니다. |
자동 확장 기능이 있는 NAS StorageClass
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
자동 확장 기능이 있는 SAN StorageClass
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