Kubernetes 및 Trident 오브젝트
REST API를 사용하여 리소스 객체를 읽고 쓰면서 Kubernetes 및 Trident와 상호 작용할 수 있습니다. Kubernetes 및 Trident, Trident 및 스토리지와 Kubernetes 및 스토리지 간의 관계를 결정하는 몇 가지 리소스 개체가 있습니다. 이러한 오브젝트 중 일부는 Kubernetes를 통해 관리되며 나머지는 Trident를 통해 관리됩니다.
개체가 서로 어떻게 상호 작용합니까?
오브젝트, 목표 및 상호 작용 방식을 이해하는 가장 쉬운 방법은 Kubernetes 사용자의 스토리지에 대한 단일 요청을 따르는 것입니다.
-
사용자가 이전에 관리자가 구성한 Kubernetes에서 특정 크기의
StorageClass
새로운 것을 요청하는PersistentVolume
가 생성됩니다PersistentVolumeClaim
. -
Kubernetes에서는
StorageClass
Trident를 프로비저닝으로 식별하고 요청된 클래스에 대한 볼륨을 프로비저닝하는 방법을 Trident에 알려주는 매개 변수를 포함합니다. -
Trident는 일치하는 항목을 식별하고
StoragePools
클래스에 대한 볼륨을 프로비저닝하는 데 사용할 수 있는 동일한 이름을 사용하여 해당StorageClass
이름을Backends
확인합니다. -
Trident은 일치하는 백엔드에서 스토리지를 프로비저닝하고 두 개의 오브젝트를 생성합니다.: Kubernetes에서 볼륨을 검색, 마운트 및 처리하는 방법을 Kubernetes에 알려주는 Kubernetes와 실제 스토리지 간의 관계를 유지하는 Trident의 볼륨을
PersistentVolume
생성합니다.PersistentVolume
-
Kubernetes는 를 새로운
PersistentVolume
에 바인딩합니다.PersistentVolumeClaim
PersistentVolume이 실행되는 모든 호스트에서 마운트가 포함된 PodPersistentVolumeClaim
-
사용자가 Trident를 가리키는 를 사용하여 기존 PVC의
VolumeSnapshotClass
를VolumeSnapshot
작성합니다. -
Trident는 PVC와 연결된 볼륨을 식별하고 백엔드에 볼륨의 스냅샷을 생성합니다. `VolumeSnapshotContent`스냅샷을 식별하는 방법에 대해 Kubernetes에 지시하는 도 생성합니다.
-
사용자는 소스로 를 사용하여
VolumeSnapshot
을 만들 수PersistentVolumeClaim
있습니다. -
Trident는 필요한 스냅샷을 식별하고 및 를
Volume
생성하는 것과 관련된 동일한 단계를PersistentVolume
수행합니다.
Kubernetes 오브젝트에 대한 자세한 내용은 Kubernetes 설명서의 섹션을 읽어보는 것이 좋습니다 "영구 볼륨". |
Kubernetes PersistentVolumeClaim
오브젝트
Kubernetes PersistentVolumeClaim
개체는 Kubernetes 클러스터 사용자가 만든 스토리지에 대한 요청입니다.
Trident는 표준 사양 외에도 사용자가 백엔드 구성에서 설정한 기본값을 무효화하려는 경우 다음 볼륨별 주석을 지정할 수 있도록 합니다.
주석 | 볼륨 옵션 | 지원되는 드라이버 |
---|---|---|
trident.netapp.io/fileSystem |
파일 시스템 |
ONTAP-SAN, solidfire-SAN, ONTAP-SAN - 경제성 |
trident.netapp.io/cloneFromPVC |
CloneSourceVolume |
ONTAP-NAS, ONTAP-SAN, solidfire-SAN, Azure-NetApp-파일, GCP-CV, ONTAP-SAN - 경제성 |
trident.netapp.io/splitOnClone |
SplitOnClone 을 참조하십시오 |
ONTAP-NAS, ONTAP-SAN |
trident.netapp.io/protocol |
프로토콜 |
모두 |
trident.netapp.io/exportPolicy |
내보내기 정책 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup |
trident.netapp.io/snapshotPolicy |
스냅샷 정책 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN |
trident.netapp.io/snapshotReserve |
snapshotReserve |
ONTAP-NAS, ONTAP-NAS-flexgroup, ONTAP-SAN, GCP-CV |
trident.netapp.io/snapshotDirectory |
스냅샷 디렉토리 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup |
trident.netapp.io/unixPermissions |
unixPermissions |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup |
trident.netapp.io/blockSize |
블록 크기 |
solidfire-SAN |
생성된 PV에 Reclaim 정책이 있는 경우 Delete
, Trident는 PV가 해제될 때(즉, 사용자가 PVC를 삭제할 때) PV와 Backing Volume을 모두 삭제한다. 삭제 작업이 실패할 경우 Trident는 PV를 해당 상태로 표시하고 성공할 때까지 또는 PV를 수동으로 삭제할 때까지 주기적으로 작업을 다시 시도합니다. PV가 정책을 사용하는 경우 Retain
Trident는 이 정책을 무시하고 관리자가 Kubernetes 및 백엔드에서 이 정책을 정리하여 볼륨을 제거하기 전에 백업하거나 검사할 것이라고 가정합니다. PV를 삭제해도 Trident에서 백업 볼륨을 삭제하지 않습니다. REST API를 사용하여 (`tridentctl`제거해야 합니다.)
Trident는 CSI 사양을 사용하여 볼륨 스냅샷 생성을 지원합니다. 볼륨 스냅샷을 생성하고 이를 데이터 소스로 사용하여 기존 PVC를 복제할 수 있습니다. 이렇게 하면 PVS의 시점 복제본을 스냅샷 형태로 Kubernetes에 표시할 수 있습니다. 그런 다음 스냅샷을 사용하여 새 PVS를 생성할 수 있습니다. `On-Demand Volume Snapshots`이 방법이 어떻게 작동하는지 살펴보십시오.
Trident는 또한 cloneFromPVC
클론을 생성하기 위한 및 splitOnClone
주석을 제공합니다. CSI 구현을 사용하지 않고도 이러한 주석을 사용하여 PVC를 복제할 수 있습니다.
예를 들어, 사용자가 이미 PVC를 호출한 경우 mysql
와 같은 주석을 사용하여 trident.netapp.io/cloneFromPVC: mysql
호출된 새 PVC를 생성할 수 mysqlclone
있습니다. 이 주석을 설정하면 Trident가 볼륨을 처음부터 프로비저닝하는 대신 MySQL PVC에 해당하는 볼륨을 클론합니다.
다음 사항을 고려하십시오.
-
유휴 볼륨의 클론을 생성하는 것이 좋습니다.
-
PVC와 그 클론은 동일한 Kubernetes 네임스페이스에서 동일한 스토리지 클래스를 가져야 합니다.
-
및
ontap-san
드라이버에서는 와ontap-nas
함께trident.netapp.io/cloneFromPVC
PVC 주석을 설정하는 것이 좋습니다trident.netapp.io/splitOnClone
.trident.netapp.io/splitOnClone`로 `true
설정하면 Trident은 클론 복제된 볼륨을 상위 볼륨에서 분리하므로 스토리지 효율성이 약간 떨어지는 비용을 부담하여 클론 복제된 볼륨의 수명 주기를 상위 볼륨에서 완전히 분리합니다. 이 설정을 설정하거나false
설정하지trident.netapp.io/splitOnClone
않으면 상위 볼륨과 클론 볼륨 간에 종속성을 생성하는 대신 백엔드의 공간 소비가 줄어들어 클론이 먼저 삭제되지 않는 한 상위 볼륨을 삭제할 수 없게 됩니다. 클론을 분할하는 것이 올바른 시나리오는 빈 데이터베이스 볼륨을 복제하여 볼륨과 해당 클론이 크게 달라질 것으로 예상되며 ONTAP에서 제공하는 스토리지 효율성의 이점을 얻지 못하는 경우입니다.`sample-input`디렉토리에는 Trident와 함께 사용할 PVC 정의의 예가 포함되어 있습니다. Trident 볼륨과 관련된 매개 변수 및 설정에 대한 자세한 설명은 을 참조하십시오.
Kubernetes PersistentVolume
오브젝트
Kubernetes PersistentVolume
오브젝트는 Kubernetes 클러스터에 사용할 수 있는 스토리지 부분을 나타냅니다. 사용 포드와 독립적인 라이프 사이클이 있습니다.
Trident은 PersistentVolume 오브젝트를 생성하고 이 오브젝트가 프로비저닝하는 볼륨을 기반으로 Kubernetes 클러스터에 자동으로 등록합니다. 스스로 관리할 수 없습니다.
|
Trident 기반 PVC를 생성할 때 StorageClass
Trident는 해당 저장소 클래스를 사용하여 새 볼륨을 프로비저닝하고 해당 볼륨에 대한 새 PV를 등록합니다. 프로비저닝 볼륨과 해당 PV를 구성할 때 Trident는 다음 규칙을 따릅니다.
-
Trident는 Kubernetes의 PV 이름과 스토리지 프로비저닝에 사용되는 내부 이름을 생성합니다. 두 경우 모두 이름은 해당 범위에서 고유합니다.
-
볼륨의 크기는 플랫폼에 따라 가장 가까운 할당 가능한 수량으로 반올림될 수 있지만 PVC에서 요청된 크기와 최대한 가깝게 일치합니다.
Kubernetes StorageClass
오브젝트
일련의 속성을 사용하여 스토리지를 프로비저닝하기 위해 Kubernetes StorageClass
오브젝트는 에서 이름으로 PersistentVolumeClaims
지정됩니다. 스토리지 클래스 자체는 사용할 구축 소유자를 식별하고 프로비저닝이 이해할 수 있는 조건으로 해당 자산 세트를 정의합니다.
관리자가 만들고 관리해야 하는 두 가지 기본 개체 중 하나입니다. 다른 하나는 Trident 백엔드 객체입니다.
Trident를 사용하는 Kubernetes StorageClass
개체는 다음과 같습니다.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <Name> provisioner: csi.trident.netapp.io mountOptions: <Mount Options> parameters: <Trident Parameters> allowVolumeExpansion: true volumeBindingMode: Immediate
이러한 매개 변수는 Trident에만 해당되며 Trident에 클래스에 볼륨을 프로비저닝하는 방법을 알려줍니다.
스토리지 클래스 매개 변수는 다음과 같습니다.
속성 | 유형 | 필수 요소입니다 | 설명 |
---|---|---|---|
속성 |
[string] 문자열을 매핑합니다 |
아니요 |
아래의 특성 섹션을 참조하십시오 |
스토리지 풀 |
Map [string] StringList 입니다 |
아니요 |
내의 스토리지 풀 목록에 백엔드 이름 매핑 |
추가 StoragePools |
Map [string] StringList 입니다 |
아니요 |
내의 스토리지 풀 목록에 백엔드 이름 매핑 |
excludeStoragePools를 참조하십시오 |
Map [string] StringList 입니다 |
아니요 |
내의 스토리지 풀 목록에 백엔드 이름 매핑 |
스토리지 속성 및 가능한 값은 스토리지 풀 선택 특성 및 Kubernetes 속성으로 분류할 수 있습니다.
스토리지 풀 선택 특성입니다
이러한 매개 변수는 지정된 유형의 볼륨을 프로비저닝하는 데 사용해야 하는 Trident 관리 스토리지 풀을 결정합니다.
속성 | 유형 | 값 | 제공합니다 | 요청하십시오 | 에 의해 지원됩니다 |
---|---|---|---|---|---|
미디어 1 |
문자열 |
HDD, 하이브리드, SSD |
풀에는 이 유형의 미디어가 포함되어 있으며, 하이브리드는 둘 모두를 의미합니다 |
지정된 미디어 유형입니다 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN, solidfire-SAN |
프로비저닝 유형 |
문자열 |
얇고 두껍습니다 |
풀은 이 프로비저닝 방법을 지원합니다 |
프로비저닝 방법이 지정되었습니다 |
Thick: All ONTAP; Thin: All ONTAP & solidfire-SAN |
백엔드 유형 |
문자열 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN, solidfire-SAN, GCP-CV, Azure-NetApp-파일, ONTAP-SAN-이코노미 |
풀이 이 백엔드 유형에 속합니다 |
백엔드가 지정되었습니다 |
모든 드라이버 |
스냅샷 수 |
불입니다 |
참, 거짓 |
풀은 스냅샷이 있는 볼륨을 지원합니다 |
스냅샷이 활성화된 볼륨 |
ONTAP-NAS, ONTAP-SAN, solidfire-SAN, GCP-CV |
복제 |
불입니다 |
참, 거짓 |
풀은 볼륨 클론을 지원합니다 |
클론이 활성화된 볼륨 |
ONTAP-NAS, ONTAP-SAN, solidfire-SAN, GCP-CV |
암호화 |
불입니다 |
참, 거짓 |
풀은 암호화된 볼륨을 지원합니다 |
암호화가 활성화된 볼륨입니다 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroups, ONTAP-SAN |
IOPS |
내부 |
양의 정수입니다 |
풀은 이 범위에서 IOPS를 보장할 수 있습니다 |
볼륨은 이러한 IOPS를 보장합니다 |
solidfire-SAN |
1: ONTAP Select 시스템에서 지원되지 않습니다
대부분의 경우 요청된 값이 프로비저닝에 직접적인 영향을 미치며, 예를 들어 일반 프로비저닝을 요청하면 볼륨이 걸쭉하게 프로비저닝됩니다. 하지만 Element 스토리지 풀은 제공된 IOPS 최소 및 최대값을 사용하여 요청된 값이 아닌 QoS 값을 설정합니다. 이 경우 요청된 값은 스토리지 풀을 선택하는 데만 사용됩니다.
을 혼자 사용하여 특정 등급의 요구사항을 충족하는 데 필요한 스토리지 품질을 모델링하는 것이 좋습니다 attributes
. Trident는 사용자가 지정한 의 _ALL_과(와) 일치하는 스토리지 풀을 자동으로 검색하여 attributes
선택합니다.
를 사용하여 클래스에 적합한 풀을 자동으로 선택할 수 없는 경우 attributes
및 additionalStoragePools
매개 변수를 사용하여 storagePools
풀을 더 구체화하거나 특정 풀 세트를 선택할 수도 있습니다.
매개 변수를 사용하여 지정된 풀과 일치하는 풀 세트를 추가로 제한할 attributes
수 storagePools
있습니다. 즉, Trident는 및 storagePools
매개 변수로 식별되는 풀의 교집합을 attributes
프로비저닝에 사용합니다. 매개 변수만 사용하거나 둘 다 함께 사용할 수 있습니다.
매개 변수를 사용하면 및 storagePools
매개 변수로 선택한 풀에 관계없이 Trident에서 프로비저닝에 사용하는 풀 세트를 확장할 attributes
수 additionalStoragePools
있습니다.
매개 변수를 사용하여 Trident에서 프로비저닝에 사용하는 풀 세트를 필터링할 수 excludeStoragePools
있습니다. 이 매개 변수를 사용하면 일치하는 풀이 모두 제거됩니다.
및 additionalStoragePools
매개 변수에서 storagePools
각 항목은 형식으로 <backend>:<storagePoolList>`지정됩니다. 여기서 는 지정된 백엔드에 대해 쉼표로 구분된 스토리지 풀 목록입니다. `<storagePoolList>
예를 들어 에 대한 값은 additionalStoragePools
다음과 ontapnas_192.168.1.100:aggr1,aggr2;solidfire_192.168.1.101:bronze`같을 수 있습니다. 이러한 목록에는 백엔드 및 목록 값 모두에 대한 regex 값이 적용됩니다. 을 사용하여 백엔드 및 해당 풀의 목록을 가져올 수 `tridentctl get backend
있습니다.
Kubernetes 특성
이러한 특성은 동적 프로비저닝 중 Trident가 스토리지 풀/백엔드를 선택하는 데 아무런 영향을 주지 않습니다. 대신 이러한 특성은 Kubernetes 영구 볼륨에서 지원하는 매개 변수만 제공합니다. 작업자 노드는 파일 시스템 생성 작업을 담당하며 xfsprogs와 같은 파일 시스템 유틸리티가 필요할 수 있습니다.
속성 | 유형 | 값 | 설명 | 관련 드라이버 | Kubernetes 버전 |
---|---|---|---|---|---|
fsType입니다 |
문자열 |
ext4, ext3, xfs |
블록 볼륨의 파일 시스템 유형입니다 |
solidfire-SAN, ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN, ONTAP-SAN - 경제성 |
모두 |
allowVolumeExpansion |
부울 |
참, 거짓 |
PVC 크기 증가에 대한 지원을 활성화 또는 비활성화합니다 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN, ONTAP-SAN-이코노미, solidfire-SAN, GCP-CV, Azure-NetApp-파일 |
1.11 이상 |
볼륨BindingMode 를 선택합니다 |
문자열 |
Immediate, WaitForFirstConsumer입니다 |
볼륨 바인딩 및 동적 프로비저닝이 수행될 시기를 선택합니다 |
모두 |
1.19-1.26 |
|
Kubernetes VolumeSnapshotClass
오브젝트
Kubernetes VolumeSnapshotClass
오브젝트는 과 `StorageClasses`유사합니다. 이 기능을 사용하면 여러 스토리지 클래스를 정의할 수 있으며, 스냅샷을 필요한 스냅샷 클래스와 연결하기 위해 볼륨 스냅숏에서 참조할 수 있습니다. 각 볼륨 스냅샷은 단일 볼륨 스냅샷 클래스와 연결됩니다.
스냅샷을 생성하려면 관리자가 를 VolumeSnapshotClass
정의해야 합니다. 볼륨 스냅샷 클래스는 다음과 같은 정의로 생성됩니다.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-snapclass driver: csi.trident.netapp.io deletionPolicy: Delete
`driver`클래스의 볼륨 스냅샷에 대한 요청이 Trident에 의해 처리되도록 Kubernetes에 `csi-snapclass` 지정합니다. 는 `deletionPolicy` 스냅샷을 삭제해야 할 때 수행할 작업을 지정합니다. `deletionPolicy`를 로 설정하면 `Delete` 스냅샷이 삭제될 때 스토리지 클러스터의 기본 스냅샷과 볼륨 스냅샷 객체가 제거됩니다. 또는 로 설정하면 `Retain` `VolumeSnapshotContent` 및 물리적 스냅샷이 보존됩니다.
Kubernetes VolumeSnapshot
오브젝트
Kubernetes VolumeSnapshot
개체는 볼륨의 스냅샷 생성을 위한 요청입니다. PVC는 사용자가 볼륨에 대해 요청하는 것처럼 볼륨 스냅샷은 사용자가 기존 PVC의 스냅샷을 생성하도록 요청하는 것입니다.
볼륨 스냅샷 요청이 들어오면 Trident는 백엔드에서 볼륨의 스냅샷 생성을 자동으로 관리하고 고유한 개체를 생성하여 스냅샷을 표시합니다
VolumeSnapshotContent
. 기존 PVC에서 스냅샷을 생성하고 새 PVC를 생성할 때 스냅샷을 DataSource로 사용할 수 있습니다.
VolumeSnapshot의 생수는 소스 PVC와는 독립적입니다. 소스 PVC가 삭제된 후에도 스냅샷이 지속됩니다. 연관된 스냅샷이 있는 PVC를 삭제할 때 Trident는 이 PVC에 대한 백업 볼륨을 * Deleting * 상태로 표시하지만 완전히 제거하지는 않습니다. 연결된 모든 스냅샷이 삭제되면 볼륨이 제거됩니다. |
Kubernetes VolumeSnapshotContent
오브젝트
Kubernetes VolumeSnapshotContent
개체는 이미 프로비저닝된 볼륨에서 생성된 스냅샷을 나타냅니다. 이 스냅샷은 A와 유사하며 PersistentVolume
스토리지 클러스터에서 프로비저닝된 스냅샷을 나타냅니다. 및 PersistentVolume
객체와 마찬가지로 PersistentVolumeClaim
스냅샷이 생성될 때 VolumeSnapshotContent
객체는 스냅샷 생성을 요청한 객체에 대한 일대일 매핑을 VolumeSnapshot
유지합니다.
`VolumeSnapshotContent`객체에는 와 같이 스냅샷을 고유하게 식별하는 세부 정보가 `snapshotHandle` 포함됩니다. `snapshotHandle`PV의 이름과 개체 이름의 고유한 조합입니다. `VolumeSnapshotContent`
스냅샷 요청이 들어오면 Trident가 백엔드에 스냅샷을 생성합니다. 스냅샷이 생성된 후 Trident는 개체를 구성하여 VolumeSnapshotContent
스냅샷을 Kubernetes API에 노출합니다.
일반적으로 오브젝트를 관리할 필요가 VolumeSnapshotContent 없습니다. 단, Astra Trident 외부에 를 생성하려는 경우에는 "볼륨 스냅샷을 가져옵니다"예외입니다.
|
Kubernetes CustomResourceDefinition
오브젝트
Kubernetes 사용자 지정 리소스는 관리자가 정의하며 비슷한 객체를 그룹화하는 데 사용되는 Kubernetes API의 엔드포인트입니다. Kubernetes에서는 오브젝트 컬렉션을 저장하기 위한 사용자 지정 리소스의 생성을 지원합니다. 을 실행하여 이러한 리소스 정의를 가져올 수 kubectl get crds
있습니다.
사용자 정의 리소스 정의(CRD) 및 관련 오브젝트 메타데이터는 Kubernetes에서 메타데이터 저장소에 저장됩니다. 따라서 Trident를 위한 별도의 저장소가 필요하지 않습니다.
Astra Trident는 오브젝트를 사용하여 CustomResourceDefinition
Trident 백엔드, Trident 스토리지 클래스 및 Trident 볼륨과 같은 Trident 오브젝트의 ID를 유지합니다. 이러한 오브젝트는 Trident에서 관리합니다. 또한 CSI 볼륨 스냅샷 프레임워크는 볼륨 스냅샷을 정의하는 데 필요한 일부 CRD를 소개합니다.
CRD는 Kubernetes를 구성하는 것입니다. 위에 정의된 리소스의 객체는 Trident에 의해 생성됩니다. 간단히 말해, 을 사용하여 백엔드를 생성하면 tridentctl
Kubernetes에서 사용할 수 있도록 해당 tridentbackends
CRD 개체가 생성됩니다.
다음은 Trident의 CRD에 대해 고려해야 할 몇 가지 사항입니다.
-
Trident가 설치되면 일련의 CRD가 생성되어 다른 리소스 유형과 마찬가지로 사용할 수 있습니다.
-
명령을 사용하여 Trident를 제거하면
tridentctl uninstall
Trident Pod가 삭제되지만 생성된 CRD는 정리되지 않습니다. Trident를 완전히 제거하고 처음부터 다시 구성하는 방법은 을 참조하십시오"Trident를 제거합니다".
Astra Trident StorageClass
오브젝트
Trident은 Provisioner 필드에 지정된 csi.trident.netapp.io
Kubernetes 오브젝트와 일치하는 스토리지 클래스를 StorageClass
생성합니다. 스토리지 클래스 이름은 이 클래스가 나타내는 Kubernetes 개체의 이름과 StorageClass
일치합니다.
Kubernetes에서 이러한 오브젝트는 Trident을 Provisioner로 사용하는 Kubernetes를 등록할 때 자동으로 StorageClass 생성됩니다.
|
스토리지 클래스는 볼륨에 대한 일련의 요구 사항으로 구성됩니다. Trident는 이러한 요구 사항을 각 스토리지 풀에 있는 속성과 일치시킵니다. 일치하는 경우 해당 스토리지 풀이 해당 스토리지 클래스를 사용하여 볼륨을 프로비저닝할 수 있는 유효한 타겟입니다.
REST API를 사용하여 스토리지 클래스를 직접 정의하는 스토리지 클래스 구성을 생성할 수 있습니다. 하지만 Kubernetes 구축의 경우 새 Kubernetes 오브젝트를 등록할 때 새 Kubernetes 오브젝트를 생성할 것으로 StorageClass
예상됩니다.
Astra Trident 백엔드 개체
백엔드는 Trident가 볼륨을 프로비저닝하는 스토리지 공급자를 나타냅니다. 단일 Trident 인스턴스가 원하는 수의 백엔드를 관리할 수 있습니다.
이것은 직접 만들고 관리하는 두 가지 개체 유형 중 하나입니다. 다른 하나는 Kubernetes StorageClass 개체입니다.
|
이러한 개체를 구성하는 방법에 대한 자세한 내용은 을 "백엔드 구성 중"참조하십시오.
Astra Trident StoragePool
오브젝트
스토리지 풀은 각 백엔드에서 용량 할당에 사용할 수 있는 고유한 위치를 나타냅니다. ONTAP의 경우 SVM에 있는 애그리게이트와 대응합니다. NetApp HCI/SolidFire의 경우 관리자 지정 QoS 밴드에 해당합니다. Cloud Volumes Service의 경우 클라우드 공급자 지역에 해당합니다. 각 스토리지 풀에는 고유한 스토리지 특성 세트가 있으며, 이 특성 집합은 성능 특성과 데이터 보호 특성을 정의합니다.
다른 오브젝트와 달리 스토리지 풀 후보 는 항상 자동으로 검색되고 관리됩니다.
Astra Trident Volume
오브젝트
볼륨은 NFS 공유 및 iSCSI LUN과 같은 백엔드 엔드포인트로 구성된 기본 프로비저닝 단위입니다. Kubernetes에서 이러한 항목은 에 직접 PersistentVolumes
대응합니다. 볼륨을 생성할 때 볼륨의 용량을 할당할 수 있는 위치와 크기를 결정하는 스토리지 클래스가 있는지 확인합니다.
|
볼륨 구성은 프로비저닝된 볼륨에 있어야 하는 속성을 정의합니다.
속성 | 유형 | 필수 요소입니다 | 설명 |
---|---|---|---|
버전 |
문자열 |
아니요 |
Trident API 버전("1") |
이름 |
문자열 |
예 |
생성할 볼륨의 이름입니다 |
storageClass 를 선택합니다 |
문자열 |
예 |
볼륨을 프로비저닝할 때 사용할 스토리지 클래스입니다 |
크기 |
문자열 |
예 |
용량 할당할 볼륨의 크기(바이트)입니다 |
프로토콜 |
문자열 |
아니요 |
사용할 프로토콜 유형;"파일" 또는 "블록" |
내부 이름 |
문자열 |
아니요 |
스토리지 시스템에 있는 객체의 이름으로, Trident에서 생성 |
CloneSourceVolume |
문자열 |
아니요 |
ONTAP(NAS, SAN) 및 SolidFire - *: 복제할 볼륨의 이름입니다 |
SplitOnClone 을 참조하십시오 |
문자열 |
아니요 |
ONTAP(NAS, SAN): 상위 클론에서 클론을 분할합니다 |
스냅샷 정책 |
문자열 |
아니요 |
ONTAP - *: 사용할 스냅샷 정책 |
snapshotReserve |
문자열 |
아니요 |
ONTAP - *: 스냅숏용으로 예약된 볼륨의 비율입니다 |
내보내기 정책 |
문자열 |
아니요 |
ONTAP-NAS *: 사용할 엑스포트 정책 |
스냅샷 디렉토리 |
불입니다 |
아니요 |
ONTAP-NAS *: 스냅샷 디렉토리가 표시되는지 여부를 나타냅니다 |
unixPermissions |
문자열 |
아니요 |
ONTAP-NAS *: 초기 UNIX 권한 |
블록 크기 |
문자열 |
아니요 |
SolidFire - *: 블록/섹터 크기 |
파일 시스템 |
문자열 |
아니요 |
파일 시스템 유형입니다 |
Trident는 internalName
볼륨을 생성할 때 생성됩니다. 이 단계는 두 단계로 구성됩니다. 먼저 저장소 접두사(백엔드 구성의 기본값 또는 접두사)를 볼륨 이름에 접두사로 붙이고 trident
양식 이름이 <prefix>-<volume-name>
만들어집니다. 그런 다음 백엔드에서 허용되지 않는 문자를 대체하여 이름을 삭제하는 작업을 진행합니다. ONTAP 백엔드의 경우 하이픈을 밑줄로 바꿉니다(따라서 내부 이름은 이 됨 <prefix>_<volume-name>
). 요소 백엔드의 경우 밑줄을 하이픈으로 바꿉니다.
볼륨 구성을 사용하여 REST API를 사용하여 볼륨을 직접 프로비저닝할 수 있지만, Kubernetes 구축에서는 대부분의 사용자가 표준 Kubernetes 방법을 사용할 것으로 PersistentVolumeClaim
예상됩니다. Trident는 프로비저닝 프로세스의 일부로 이 볼륨 개체를 자동으로 만듭니다.
Astra Trident Snapshot
오브젝트
스냅샷은 볼륨의 시점 복제본으로, 새 볼륨을 용량 할당하거나 복구 상태를 복구하는 데 사용할 수 있습니다. Kubernetes에서 이들 항목은 오브젝트에 직접 VolumeSnapshotContent
대응합니다. 각 스냅샷은 스냅샷에 대한 데이터의 소스인 볼륨에 연결됩니다.
각 Snapshot
개체에는 아래 나열된 속성이 있습니다.
속성 | 유형 | 필수 요소입니다 | 설명 |
---|---|---|---|
버전 |
문자열 |
예 |
Trident API 버전("1") |
이름 |
문자열 |
예 |
Trident 스냅샷 개체의 이름입니다 |
내부 이름 |
문자열 |
예 |
스토리지 시스템의 Trident 스냅샷 개체의 이름입니다 |
볼륨 이름 |
문자열 |
예 |
스냅샷이 생성된 영구 볼륨의 이름입니다 |
볼륨 국제 이름 |
문자열 |
예 |
스토리지 시스템에서 연결된 Trident 볼륨 개체의 이름입니다 |
Kubernetes에서 이러한 오브젝트는 자동으로 관리됩니다. 프로비저닝 Trident를 보려면 해당 Trident를 확인하십시오. |
Kubernetes 오브젝트 요청이 생성될 때 VolumeSnapshot
Trident는 백업 스토리지 시스템에 스냅샷 개체를 생성하여 작동합니다. 이 스냅샷 객체의 은 internalName
UID
VolumeSnapshot
객체의 접두사와 결합하여 생성됩니다 snapshot-
(예: snapshot-e8d8a0ca-9826-11e9-9807-525400f3f660
). volumeName
및 volumeInternalName
는 백업 볼륨의 세부 정보를 가져와서 채워집니다.
Astra Trident ResourceQuota
객체
Trident deamonset은 system-node-critical
Trident가 정상적인 노드 종료 중에 볼륨을 식별 및 정리하고, Trident demonset Pod가 리소스 압력이 높은 클러스터에서 낮은 우선 순위로 워크로드를 사전 설정할 수 있도록 하기 위해 Kubernetes에서 사용 가능한 가장 높은 우선 순위 클래스인 우선 순위 클래스를 사용합니다.
이를 위해 Astra Trident는 객체를 사용하여 ResourceQuota
Trident demonset의 "시스템 노드 중요" 우선 순위 클래스가 충족되도록 합니다. 구축 및 demonset 생성 전에 Astra Trident가 오브젝트를 찾고 ResourceQuota
있지 않은 경우 이를 적용합니다.
기본 리소스 할당량 및 우선 순위 클래스에 대해 더 많은 제어가 필요한 경우 Helm 차트를 사용하여 개체를 생성하거나 구성할 ResourceQuota
수 custom.yaml
있습니다.
다음은 Trident 데모의 우선 순위를 지정하는 'ResourceQuota' 개체의 예입니다.
apiVersion: <version> kind: ResourceQuota metadata: name: trident-csi labels: app: node.csi.trident.netapp.io spec: scopeSelector: matchExpressions: - operator : In scopeName: PriorityClass values: ["system-node-critical"]
리소스 할당량에 대한 자세한 내용은 을 "Kubernetes: 리소스 할당량"참조하십시오.
설치가 실패하면 정리합니다 ResourceQuota
드물지만 개체를 만든 후 설치에 실패하는 경우 ResourceQuota
먼저 시도한 "제거 중"다음 다시 설치합니다.
이렇게 해도 문제가 해결되지 않으면 개체를 수동으로 ResourceQuota
제거합니다.
제거 ResourceQuota
자체 리소스 할당을 제어하려는 경우 명령을 사용하여 Astra Trident 개체를 제거할 수 있습니다 ResourceQuota
.
kubectl delete quota trident-csi -n trident