Kubernetes 및 Trident 오브젝트
REST API를 사용하여 리소스 객체를 읽고 쓰면서 Kubernetes 및 Trident와 상호 작용할 수 있습니다. Kubernetes 및 Trident, Trident 및 스토리지와 Kubernetes 및 스토리지 간의 관계를 결정하는 몇 가지 리소스 개체가 있습니다. 이러한 오브젝트 중 일부는 Kubernetes를 통해 관리되며 나머지는 Trident를 통해 관리됩니다.
개체가 서로 어떻게 상호 작용합니까?
오브젝트, 목표 및 상호 작용 방식을 이해하는 가장 쉬운 방법은 Kubernetes 사용자의 스토리지에 대한 단일 요청을 따르는 것입니다.
-
사용자가 이전에 관리자가 구성한 Kubernetes의 torageClass에서 특정 크기의 새 PersistentVolume을 요청하는 PersistentVolumeClaim을 만듭니다.
-
Kubernetes의 torageClass는 Trident를 프로비저닝자로 식별하고 Trident에 요청된 클래스에 대한 볼륨 프로비저닝 방법을 알려주는 매개 변수를 포함합니다.
-
Trident는 클래스에 대한 볼륨을 프로비저닝하는 데 사용할 수 있는 일치하는 'backends'와 'toragePools'를 식별하는 이름과 동일한 이름의 자체 'torageClass'를 찾습니다.
-
Trident는 일치하는 백엔드에 스토리지를 프로비저닝하고 Kubernetes의 "PersistentVolume"과 "PersistentVolume"과 실제 스토리지 간의 관계를 유지하는 Trident의 볼륨을 찾고, 마운트하고, 처리하는 방법을 Kubernetes의 "PersistentVolume"과 두 개의 객체를 만듭니다.
-
Kubernetes는 PersistentVolumeClaim을 새로운 PersistentVolume에 바인딩합니다. PersistentVolumeClaim이 실행되는 모든 호스트에서 PersistentVolume이 마운트되는 "PersistentVolumeClaim"이 포함된 POD
-
사용자가 Trident를 가리키는 VolumeSnapshotClass를 사용하여 기존 PVC의 VolumeSnapshot을 생성합니다.
-
Trident는 PVC와 연결된 볼륨을 식별하고 백엔드에 볼륨의 스냅샷을 생성합니다. 또한 스냅샷을 식별하는 방법을 Kubernetes에 지시하는 'VolumeSnapshotContent'도 생성합니다.
-
사용자는 'VolumeSnapshot'을 소스로 사용하여 'PersistentVolumeClaim'을 생성할 수 있습니다.
-
Trident는 필요한 스냅샷을 식별하고 "PersistentVolume"과 "Volume"을 생성하는 것과 동일한 단계를 수행합니다.
|
Kubernetes 객체에 대한 자세한 내용은 를 읽는 것이 좋습니다 "영구 볼륨" 섹션을 참조하십시오. |
쿠버네티스 PersistentVolumeClaim
오브젝트
Kubernetes "PersistentVolumeClaim" 개체는 Kubernetes 클러스터 사용자가 만든 스토리지 요청입니다.
Trident는 표준 사양 외에도 사용자가 백엔드 구성에서 설정한 기본값을 무효화하려는 경우 다음 볼륨별 주석을 지정할 수 있도록 합니다.
주석 | 볼륨 옵션 | 지원되는 드라이버 |
---|---|---|
trident.netapp.io/fileSystem |
파일 시스템 |
ONTAP-SAN, solidfire-san, eseries-iscsi, 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에 'Delete' Reclaim 정책이 있는 경우, Trident는 PV가 해제될 때(즉, 사용자가 PVC를 삭제할 때) PV와 보조 볼륨을 모두 삭제합니다. 삭제 작업이 실패할 경우 Trident는 PV를 해당 상태로 표시하고 성공할 때까지 또는 PV를 수동으로 삭제할 때까지 주기적으로 작업을 다시 시도합니다. PV에서 'Retain' 정책을 사용할 경우 Trident는 이를 무시하고 관리자가 Kubernetes 및 백엔드에서 이를 정리하여 제거하기 전에 볼륨을 백업 또는 검사할 수 있다고 가정합니다. PV를 삭제해도 Trident에서 백업 볼륨을 삭제하지 않습니다. REST API('tridentctl')를 사용하여 제거해야 합니다.
Trident는 CSI 사양을 사용하여 볼륨 스냅샷 생성을 지원합니다. 볼륨 스냅샷을 생성하고 이를 데이터 소스로 사용하여 기존 PVC를 복제할 수 있습니다. 이렇게 하면 PVS의 시점 복제본을 스냅샷 형태로 Kubernetes에 표시할 수 있습니다. 그런 다음 스냅샷을 사용하여 새 PVS를 생성할 수 있습니다. 이 기능이 어떻게 동작하는지 알아보려면 "주문형 볼륨 스냅샷"를 살펴보십시오.
또한 Trident는 클론 생성을 위한 "cloneFromPVC" 및 "plitOnClone" 주석을 제공합니다. 이러한 주석을 사용하여 Kubernetes 1.13 이하 버전에서 CSI 구현을 사용하지 않고 PVC를 복제하거나 Kubernetes 릴리스가 베타 볼륨 스냅샷(Kubernetes 1.16 이하)을 지원하지 않을 경우 사용할 수 있습니다. Trident 19.10은 PVC를 통한 클론 생성을 위한 CSI 워크플로우를 지원합니다.
|
CSI Trident와 기존 비 CSI 프런트엔드 및 CLoneFromPVC와 'PlitOnClone' 주석을 사용할 수 있습니다. |
예를 들어 이미 mysql이라는 PVC가 있는 사용자는 trident.netapp.io/cloneFromPVC: mysql 같은 주석을 사용해 mysqlclone이라는 새로운 PVC를 만들 수 있습니다. 이 주석을 설정하면 Trident가 볼륨을 처음부터 프로비저닝하는 대신 MySQL PVC에 해당하는 볼륨을 클론합니다.
다음 사항을 고려하십시오.
-
유휴 볼륨의 클론을 생성하는 것이 좋습니다.
-
PVC와 그 클론은 동일한 Kubernetes 네임스페이스에서 동일한 스토리지 클래스를 가져야 합니다.
-
ONTAP-NAS와 ONTAP-SAN 드라이버를 함께 사용하면 trident.netapp.io/splitOnClone` 과 함께 PVC 주석 trident.netapp.io/cloneFromPVC` 을 설정하는 것이 바람직할 수 있습니다. Trident는 trident.netapp.io/splitOnClone` 를 true로 설정하면 상위 볼륨에서 복제된 볼륨을 분할하여 복제된 볼륨의 수명 주기를 부모 볼륨에서 완전히 분리하여 스토리지 효율성을 잃게 됩니다. trident.netapp.io/splitOnClone` 를 설정하지 않거나 "false"로 설정하지 않으면 상위 볼륨과 클론 볼륨 간의 종속성을 생성하여 클론이 먼저 삭제되지 않으면 상위 볼륨을 삭제할 수 없게 되어 백엔드에서 공간 소비가 줄어듭니다. 클론을 분할하는 것이 올바른 시나리오는 빈 데이터베이스 볼륨을 복제하여 볼륨과 해당 클론이 크게 달라질 것으로 예상되며 ONTAP에서 제공하는 스토리지 효율성의 이점을 얻지 못하는 경우입니다.
'ample-input' 디렉토리에는 Trident와 함께 사용할 PVC 정의의 예가 포함되어 있습니다. Trident 볼륨과 관련된 매개 변수 및 설정에 대한 자세한 설명은 Trident Volume 개체를 참조하십시오.
쿠버네티스 PersistentVolume
오브젝트
Kubernetes "PersistentVolume" 개체는 Kubernetes 클러스터에서 사용할 수 있는 스토리지 부분을 나타냅니다. 사용 포드와 독립적인 라이프 사이클이 있습니다.
|
Trident는 "PersistentVolume" 개체를 만들고 프로비저닝하는 볼륨을 기준으로 Kubernetes 클러스터에 자동으로 등록합니다. 스스로 관리할 수 없습니다. |
Trident 기반의 'torageClass'를 참조하는 PVC를 생성하면 Trident는 해당 스토리지 클래스를 사용하여 새 볼륨을 프로비저닝하고 해당 볼륨에 대한 새 PV를 등록합니다. 프로비저닝 볼륨과 해당 PV를 구성할 때 Trident는 다음 규칙을 따릅니다.
-
Trident는 Kubernetes의 PV 이름과 스토리지 프로비저닝에 사용되는 내부 이름을 생성합니다. 두 경우 모두 이름은 해당 범위에서 고유합니다.
-
볼륨의 크기는 플랫폼에 따라 가장 가까운 할당 가능한 수량으로 반올림될 수 있지만 PVC에서 요청된 크기와 최대한 가깝게 일치합니다.
쿠버네티스 StorageClass
오브젝트
Kubernetes의 torageClass 객체는 속성 세트를 사용하여 스토리지를 프로비저닝하기 위해 PersistentVolumeClaims의 이름으로 지정됩니다. 스토리지 클래스 자체는 사용할 구축 소유자를 식별하고 프로비저닝이 이해할 수 있는 조건으로 해당 자산 세트를 정의합니다.
관리자가 만들고 관리해야 하는 두 가지 기본 개체 중 하나입니다. 다른 하나는 Trident 백엔드 객체입니다.
Trident를 사용하는 Kubernetes의 torageClass 개체는 다음과 같습니다.
apiVersion: storage.k8s.io/v1beta1
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 |
프로비저닝 유형 |
문자열 |
얇고 두껍습니다 |
풀은 이 프로비저닝 방법을 지원합니다 |
프로비저닝 방법이 지정되었습니다 |
일반: 모든 ONTAP 및 eseries - iSCSI; 씬: All ONTAP & solidfire - SAN |
백엔드 유형 |
문자열 |
ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN, solidfire-SAN, eSeries-iSCSI, 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 값을 설정합니다. 이 경우 요청된 값은 스토리지 풀을 선택하는 데만 사용됩니다.
이상적으로는 '속성'을 단독으로 사용하여 특정 클래스의 요구 사항을 충족하는 데 필요한 스토리지의 품질을 모델링할 수 있습니다. Trident는 사용자가 지정한 '속성'의 _ALL_과 일치하는 스토리지 풀을 자동으로 검색하여 선택합니다.
클래스에 맞는 풀을 자동으로 선택하기 위해 속성(attributes)을 사용할 수 없는 경우, 'toragePools' 및 'additionalStoragePools' 매개 변수를 사용하여 풀을 더 세분화하거나 특정 풀 세트를 선택할 수도 있습니다.
'toragePools' 매개 변수를 사용하면 지정된 'attributes'와 일치하는 풀 세트를 추가로 제한할 수 있습니다. 즉, Trident는 프로비저닝에서 'attributes'와 'toragePools' 매개 변수로 식별되는 풀의 교집합을 사용합니다. 매개 변수만 사용하거나 둘 다 함께 사용할 수 있습니다.
"additionalStoragePools" 매개 변수를 사용하면 "attributes" 및 "toragePools" 매개 변수로 선택한 풀에 관계없이 Trident에서 프로비저닝에 사용하는 풀 집합을 확장할 수 있습니다.
'excludeStoragePools' 매개 변수를 사용하여 Trident에서 프로비저닝을 위해 사용하는 풀 집합을 필터링할 수 있습니다. 이 매개 변수를 사용하면 일치하는 풀이 모두 제거됩니다.
'toragePools' 및 'additionalStoragePools' 매개 변수에서 각 항목은 '<backend>:<storagePoolList>' 형식을 사용합니다. 여기서 '<storagePoolList>'는 지정된 백엔드에 대한 쉼표로 구분된 스토리지 풀 목록입니다. 예를 들어, additionalStoragePools 값은 ontapnas_192.168.1.100:aggr1,aggr2;solidfire_192.168.1.101:bronze처럼 보일 수 있습니다. 이러한 목록에는 백엔드 및 목록 값 모두에 대한 regex 값이 적용됩니다. tridentctl 백엔드 가져오기 를 사용하여 백엔드와 해당 풀의 목록을 가져올 수 있습니다.
Kubernetes 특성
이러한 특성은 동적 프로비저닝 중 Trident가 스토리지 풀/백엔드를 선택하는 데 아무런 영향을 주지 않습니다. 대신 이러한 특성은 Kubernetes 영구 볼륨에서 지원하는 매개 변수만 제공합니다. 작업자 노드는 파일 시스템 생성 작업을 담당하며 xfsprogs와 같은 파일 시스템 유틸리티가 필요할 수 있습니다.
속성 | 유형 | 값 | 설명 | 관련 드라이버 | Kubernetes 버전 |
---|---|---|---|---|---|
fsType입니다 |
문자열 |
ext4, ext3, xfs 등 |
블록 볼륨의 파일 시스템 유형입니다 |
solidfire-SAN, ONTAP-NAS, ONTAP-NAS-이코노미, ONTAP-NAS-Flexgroup, ONTAP-SAN, ONTAP-SAN-이코노미, eseries-iSCSI가 있습니다 |
모두 |
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.17+ |
|
|
쿠버네티스 VolumeSnapshotClass
오브젝트
쿠버네티스 VolumeSnapshotClass 객체는 'torageClaes'와 유사합니다. 이 기능을 사용하면 여러 스토리지 클래스를 정의할 수 있으며, 스냅샷을 필요한 스냅샷 클래스와 연결하기 위해 볼륨 스냅숏에서 참조할 수 있습니다. 각 볼륨 스냅샷은 단일 볼륨 스냅샷 클래스와 연결됩니다.
스냅샷을 생성하려면 관리자가 VolumeSnapshotClass를 정의해야 합니다. 볼륨 스냅샷 클래스는 다음과 같은 정의로 생성됩니다.
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
name: csi-snapclass
driver: csi.trident.netapp.io
deletionPolicy: Delete
driver는 CSI-snapclass 클래스의 볼륨 스냅샷을 요청하는 Kubernetes를 Trident에서 처리하도록 지정합니다. "eletionPolicy"는 스냅샷을 삭제할 때 수행할 작업을 지정합니다. "eletionPolicy"를 "Delete"로 설정하면 스냅샷이 삭제될 때 스토리지 클러스터의 기본 스냅샷과 볼륨 스냅샷 객체가 제거됩니다. 또는 '유지'로 설정하면 VolumeSnapshotContent와 물리적 스냅샷이 보존됩니다.
쿠버네티스 VolumeSnapshot
오브젝트
Kubernetes 'VolumeSnapshot' 개체는 볼륨의 스냅샷을 생성하는 요청입니다. PVC는 사용자가 볼륨에 대해 요청하는 것처럼 볼륨 스냅샷은 사용자가 기존 PVC의 스냅샷을 생성하도록 요청하는 것입니다.
볼륨 스냅샷 요청이 들어오면 Trident는 백엔드의 볼륨에 대한 스냅샷 생성을 자동으로 관리하고 고유한 'VolumeSnapshotContent' 객체를 생성하여 스냅샷을 표시합니다. 기존 PVC에서 스냅샷을 생성하고 새 PVC를 생성할 때 스냅샷을 DataSource로 사용할 수 있습니다.
|
VolumeSnapshot의 생수는 소스 PVC와는 독립적입니다. 소스 PVC가 삭제된 후에도 스냅샷이 지속됩니다. 연관된 스냅샷이 있는 PVC를 삭제할 때 Trident는 이 PVC에 대한 백업 볼륨을 * Deleting * 상태로 표시하지만 완전히 제거하지는 않습니다. 연결된 모든 스냅샷이 삭제되면 볼륨이 제거됩니다. |
쿠버네티스 VolumeSnapshotContent
오브젝트
Kubernetes의 'VolumeSnapshotContent' 객체는 이미 프로비저닝된 볼륨에서 생성된 스냅샷을 나타냅니다. 이 스냅샷은 "PersistentVolume"과 유사하며 스토리지 클러스터에서 프로비저닝된 스냅샷을 나타냅니다. 스냅샷이 생성될 때 PersistentVolumeClaim 및 PersistentVolume 개체와 마찬가지로 VolumeSnapshotContent 개체는 스냅샷 생성을 요청한 VolumeSnapshot 객체에 대한 일대일 매핑을 유지합니다.
|
Trident는 'VolumeSnapshotContent' 객체를 생성한 후 프로비저닝하는 볼륨을 기준으로 Kubernetes 클러스터에 자동으로 등록합니다. 스스로 관리할 수 없습니다. |
VolumeSnapshotContent 객체에는 스냅샷 스냅샷(스냅샷 핸들 등)을 고유하게 식별하는 세부 정보가 포함되어 있습니다. 이 나프산Handle은 PV의 이름과 VolumeSnapshotContent 객체의 이름을 조합한 독특한 것이다.
스냅샷 요청이 들어오면 Trident가 백엔드에 스냅샷을 생성합니다. 스냅샷이 생성된 후 Trident는 'VolumeSnapshotContent' 객체를 구성하여 해당 스냅샷을 Kubernetes API에 노출합니다.
쿠버네티스 CustomResourceDefinition
오브젝트
Kubernetes 사용자 지정 리소스는 관리자가 정의하며 비슷한 객체를 그룹화하는 데 사용되는 Kubernetes API의 엔드포인트입니다. Kubernetes에서는 오브젝트 컬렉션을 저장하기 위한 사용자 지정 리소스의 생성을 지원합니다. kubeck Get CRD를 실행하여 이러한 리소스 정의를 얻을 수 있습니다.
사용자 정의 리소스 정의(CRD) 및 관련 오브젝트 메타데이터는 Kubernetes에서 메타데이터 저장소에 저장됩니다. 따라서 Trident를 위한 별도의 저장소가 필요하지 않습니다.
19.07 릴리스부터 Trident는 다양한 "CustomResourceDefinition" 개체를 사용하여 Trident 백 엔드, Trident 스토리지 클래스 및 Trident 볼륨과 같은 Trident 개체의 ID를 보존합니다. 이러한 오브젝트는 Trident에서 관리합니다. 또한 CSI 볼륨 스냅샷 프레임워크는 볼륨 스냅샷을 정의하는 데 필요한 일부 CRD를 소개합니다.
CRD는 Kubernetes를 구성하는 것입니다. 위에 정의된 리소스의 객체는 Trident에 의해 생성됩니다. 간단히 예로, 'tridentctl'을 사용하여 백엔드를 생성할 때 해당하는 'tridentbackends' CRD 객체는 Kubernetes에서 사용할 수 있도록 생성됩니다.
다음은 Trident의 CRD에 대해 고려해야 할 몇 가지 사항입니다.
-
Trident가 설치되면 일련의 CRD가 생성되어 다른 리소스 유형과 마찬가지로 사용할 수 있습니다.
-
Trident의 이전 버전('etcd'를 사용하여 상태를 유지 관리)에서 업그레이드할 경우 Trident 설치 프로그램이 'etcd' 키 값 데이터 저장소에서 데이터를 마이그레이션하고 해당 CRD 개체를 만듭니다.
-
tridentctl uninstall 명령을 사용하여 Trident를 제거할 때 Trident Pod는 삭제되지만 생성된 CRD는 정리되지 않습니다. 을 참조하십시오 "Trident를 제거합니다" Trident를 완전히 제거하고 처음부터 다시 구성할 수 있는 방법을 이해합니다.
트라이던트 StorageClass
오브젝트
Trident는 Kubernetes의 torageClass 오브젝트에 대해 공급자 필드에 csi.trident.netapp.io`/netapp.io/trident
를 지정하는 일치하는 스토리지 클래스를 만듭니다. 스토리지 클래스 이름은 이 이름이 나타내는 Kubernetes의 torageClass 개체와 일치합니다.
|
Kubernetes를 사용하면 Trident를 프로비저닝한 Kubernetes의 torageClass가 등록되면 이러한 객체가 자동으로 생성됩니다. |
스토리지 클래스는 볼륨에 대한 일련의 요구 사항으로 구성됩니다. Trident는 이러한 요구 사항을 각 스토리지 풀에 있는 속성과 일치시킵니다. 일치하는 경우 해당 스토리지 풀이 해당 스토리지 클래스를 사용하여 볼륨을 프로비저닝할 수 있는 유효한 타겟입니다.
REST API를 사용하여 스토리지 클래스를 직접 정의하는 스토리지 클래스 구성을 생성할 수 있습니다. 그러나 Kubernetes 구축의 경우 새로운 Kubernetes의 torageClass 오브젝트를 등록할 때 이러한 객체가 생성되기를 기대합니다.
Trident 백엔드 객체
백엔드는 Trident가 볼륨을 프로비저닝하는 스토리지 공급자를 나타냅니다. 단일 Trident 인스턴스가 원하는 수의 백엔드를 관리할 수 있습니다.
|
이것은 직접 만들고 관리하는 두 가지 개체 유형 중 하나입니다. 다른 하나는 Kubernetes의 torageClass 오브젝트입니다. |
이러한 객체를 구성하는 방법에 대한 자세한 내용은 백엔드 구성 을 참조하십시오.
트라이던트 StoragePool
오브젝트
스토리지 풀은 각 백엔드에서 용량 할당에 사용할 수 있는 고유한 위치를 나타냅니다. ONTAP의 경우 SVM에 있는 애그리게이트와 대응합니다. NetApp HCI/SolidFire의 경우 관리자 지정 QoS 밴드에 해당합니다. Cloud Volumes Service의 경우 클라우드 공급자 지역에 해당합니다. 각 스토리지 풀에는 고유한 스토리지 특성 세트가 있으며, 이 특성 집합은 성능 특성과 데이터 보호 특성을 정의합니다.
다른 오브젝트와 달리 스토리지 풀 후보 는 항상 자동으로 검색되고 관리됩니다.
트라이던트 Volume
오브젝트
볼륨은 NFS 공유 및 iSCSI LUN과 같은 백엔드 엔드포인트로 구성된 기본 프로비저닝 단위입니다. Kubernetes에서는 이러한 항목이 "PersistentVolumes"에 직접 해당합니다. 볼륨을 생성할 때 볼륨의 용량을 할당할 수 있는 위치와 크기를 결정하는 스토리지 클래스가 있는지 확인합니다.
|
Kubernetes에서 이러한 오브젝트는 자동으로 관리됩니다. 프로비저닝 Trident를 보려면 해당 Trident를 확인하십시오. |
|
연결된 스냅샷이 있는 PV를 삭제하면 해당 Trident 볼륨이 * Deleting * 상태로 업데이트됩니다. Trident 볼륨을 삭제하려면 볼륨의 스냅샷을 제거해야 합니다. |
볼륨 구성은 프로비저닝된 볼륨에 있어야 하는 속성을 정의합니다.
속성 | 유형 | 필수 요소입니다 | 설명 |
---|---|---|---|
버전 |
문자열 |
아니요 |
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'을 생성합니다. 이 단계는 두 단계로 구성됩니다. 먼저, 저장소 접두사(기본 "트리덴트" 또는 백엔드 구성의 접두사)를 볼륨 이름에 추가하여 "<prefix>-<volume-name>" 형식의 이름을 만듭니다. 그런 다음 백엔드에서 허용되지 않는 문자를 대체하여 이름을 삭제하는 작업을 진행합니다. ONTAP 백엔드의 경우 하이픈을 밑줄로 바꿉니다. 따라서 내부 이름은 "<prefix>_<volume-name>"이 됩니다. 요소 백엔드의 경우 밑줄을 하이픈으로 바꿉니다.
볼륨 구성을 사용하여 REST API를 사용하여 볼륨을 직접 프로비저닝할 수 있지만 Kubernetes 배포에서는 대부분의 사용자가 표준 Kubernetes "PersistentVolumeClaim" 방법을 사용할 것으로 예상됩니다. Trident는 프로비저닝 프로세스의 일부로 이 볼륨 개체를 자동으로 만듭니다.
트라이던트 Snapshot
오브젝트
스냅샷은 볼륨의 시점 복제본으로, 새 볼륨을 용량 할당하거나 복구 상태를 복구하는 데 사용할 수 있습니다. Kubernetes에서는 이러한 객체가 'VolumeSnapshotContent' 객체와 직접 일치합니다. 각 스냅샷은 스냅샷에 대한 데이터의 소스인 볼륨에 연결됩니다.
각 '스냅샷' 개체에는 아래 나열된 속성이 포함됩니다.
속성 | 유형 | 필수 요소입니다 | 설명 |
---|---|---|---|
버전 |
문자열 |
예 |
Trident API 버전("1") |
이름 |
문자열 |
예 |
Trident 스냅샷 개체의 이름입니다 |
내부 이름 |
문자열 |
예 |
스토리지 시스템의 Trident 스냅샷 개체의 이름입니다 |
볼륨 이름 |
문자열 |
예 |
스냅샷이 생성된 영구 볼륨의 이름입니다 |
볼륨 국제 이름 |
문자열 |
예 |
스토리지 시스템에서 연결된 Trident 볼륨 개체의 이름입니다 |
|
Kubernetes에서 이러한 오브젝트는 자동으로 관리됩니다. 프로비저닝 Trident를 보려면 해당 Trident를 확인하십시오. |
Kubernetes 'VolumeSnapshot' 객체 요청이 생성되면 Trident는 백업 스토리지 시스템에 스냅샷 객체를 생성하여 작동합니다. 이 스냅샷 개체의 인터날Name은 볼륨 스냅샷 개체의 UID(예: 스냅샷-e8d8a0ca-9826-11e9-9807-525400f3f660)와 접두사 스냅샷-UID를 결합하여 생성됩니다. 볼륨 이름 과 볼륨 InternalName 은 백업 볼륨의 세부 정보를 가져오는 방식으로 채워집니다.