3.3. PV(영구 볼륨)
각 PV에는 사양
및 상태
가 포함됩니다. 이는 볼륨의 사양과 상태이고 예는 다음과 같습니다.
PersistentVolume
오브젝트 정의 예
apiVersion: v1 kind: PersistentVolume metadata: name: pv0001 1 spec: capacity: storage: 5Gi 2 accessModes: - ReadWriteOnce 3 persistentVolumeReclaimPolicy: Retain 4 ... status: ...
3.3.1. PV 유형
OpenShift Container Platform에서는 다음과 같은 영구 볼륨 플러그인을 지원합니다.
- AWS Elastic Block Store (EBS)
- Azure Disk
- Azure File
- Cinder
- 파이버 채널
- GCE 영구 디스크
- HostPath
- iSCSI
- 로컬 볼륨
- NFS
- OpenStack Manila
- Red Hat OpenShift 컨테이너 스토리지
- VMware vSphere
3.3.2. 용량
일반적으로 PV(영구 볼륨)에는 특정 스토리지 용량이 있습니다. 이는 PV의 용량
속성을 사용하여 설정됩니다.
현재는 스토리지 용량이 설정 또는 요청할 수 있는 유일한 리소스뿐입니다. 향후 속성에는 IOPS, 처리량 등이 포함될 수 있습니다.
3.3.3. 액세스 모드
영구 볼륨은 리소스 공급자가 지원하는 방식으로 호스트에 볼륨을 마운트될 수 있습니다. 공급자에 따라 기능이 다르며 각 PV의 액세스 모드는 해당 볼륨에서 지원하는 특정 모드로 설정됩니다. 예를 들어, NFS에서는 여러 읽기-쓰기 클라이언트를 지원할 수 있지만 특정 NFS PV는 서버에서 읽기 전용으로 내보낼 수 있습니다. 각 PV는 특정 PV의 기능을 설명하는 자체 액세스 모드 세트를 가져옵니다.
클레임은 액세스 모드가 유사한 볼륨과 매칭됩니다. 유일하게 일치하는 두 가지 기준은 액세스 모드와 크기입니다. 클레임의 액세스 모드는 요청을 나타냅니다. 따라서 더 많이 부여될 수 있지만 절대로 부족하게는 부여되지 않습니다. 예를 들어, 클레임 요청이 RWO이지만 사용 가능한 유일한 볼륨이 NFS PV(RWO+ROX+RWX)인 경우, RWO를 지원하므로 클레임이 NFS와 일치하게 됩니다.
항상 직접 일치가 먼저 시도됩니다. 볼륨의 모드는 사용자의 요청과 일치하거나 더 많은 모드를 포함해야 합니다. 크기는 예상되는 크기보다 크거나 같아야 합니다. NFS 및 iSCSI와 같은 두 개의 볼륨 유형에 동일한 액세스 모드 세트가 있는 경우 둘 중 하나를 해당 모드와 클레임과 일치시킬 수 있습니다. 볼륨 유형과 특정 유형을 선택할 수 있는 순서는 없습니다.
모드가 동일한 모든 볼륨이 그룹화된 후 크기 오름차순으로 크기가 정렬됩니다. 바인더는 모드가 일치하는 그룹을 가져온 후 크기가 일치하는 그룹을 찾을 때까지 크기 순서대로 각 그룹에 대해 반복합니다.
다음 표에는 액세스 모드가 나열되어 있습니다.
액세스 모드 | CLI 약어 | 설명 |
---|---|---|
ReadWriteOnce |
| 볼륨은 단일 노드에서 읽기-쓰기로 마운트할 수 있습니다. |
ReadOnlyMany |
| 볼륨은 여러 노드에서 읽기 전용으로 마운트할 수 있습니다. |
ReadWriteMany |
| 볼륨은 여러 노드에서 읽기-쓰기로 마운트할 수 있습니다. |
볼륨 액세스 모드는 볼륨 기능에 대한 설명자입니다. 제한 조건이 적용되지 않습니다. 리소스를 잘못된 사용으로 인한 런타임 오류는 스토리지 공급자가 처리합니다.
예를 들어, NFS는 ReadWriteOnce
액세스 모드를 제공합니다. 볼륨의 ROX 기능을 사용하려면 클레임을 읽기 전용
으로 표시해야 합니다. 공급자에서의 오류는 런타임 시 마운트 오류로 표시됩니다.
iSCSI 및 파이버 채널 볼륨은 현재 펜싱 메커니즘을 지원하지 않습니다. 볼륨을 한 번에 하나씩만 사용하는지 확인해야 합니다. 노드 드레이닝과 같은 특정 상황에서는 두 개의 노드에서 볼륨을 동시에 사용할 수 있습니다. 노드를 드레인하기 전에 먼저 이러한 볼륨을 사용하는 Pod가 삭제되었는지 확인합니다.
볼륨 플러그인 | ReadWriteOnce [1] | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
AWS EBS [2] |
✅ |
- |
- |
Azure File |
✅ |
✅ |
✅ |
Azure Disk |
✅ |
- |
- |
Cinder |
✅ |
- |
- |
파이버 채널 |
✅ |
✅ |
- |
GCE 영구 디스크 |
✅ |
- |
- |
HostPath |
✅ |
- |
- |
iSCSI |
✅ |
✅ |
- |
로컬 볼륨 |
✅ |
- |
- |
NFS |
✅ |
✅ |
✅ |
OpenStack Manila |
- |
- |
✅ |
Red Hat OpenShift Container Storage |
✅ |
- |
✅ |
VMware vSphere |
✅ |
- |
- |
- ReadWriteOnce(RWO) 볼륨은 여러 노드에 마운트할 수 없습니다. 시스템이 이미 실패한 노드에 할당되어 있기 때문에, 노드가 실패하면 시스템은 연결된 RWO 볼륨을 새 노드에 마운트하는 것을 허용하지 않습니다. 이로 인해 다중 연결 오류 메시지가 표시되면 동적 영구 볼륨이 연결된 경우와 같이 중요한 워크로드에서의 데이터가 손실되는 것을 방지하기 위해 종료되거나 충돌이 발생한 노드에서 Pod를 삭제해야 합니다.
- AWS EBS 기반 Pod에 재생성 배포 전략을 사용합니다.
3.3.4. 단계
볼륨은 다음 단계 중 하나에서 찾을 수 있습니다.
단계 | 설명 |
---|---|
Available | 아직 클레임에 바인딩되지 않은 여유 리소스입니다. |
Bound | 볼륨이 클레임에 바인딩됩니다. |
해제됨 | 클레임이 삭제되었지만, 리소스가 아직 클러스터에 의해 회수되지 않았습니다. |
실패 | 볼륨에서 자동 회수가 실패했습니다. |
다음을 실행하여 PV에 바인딩된 PVC의 이름을 확인할 수 있습니다.
$ oc get pv <pv-claim>
3.3.4.1. 마운트 옵션
mountOptions
속성을 사용하여 PV를 마운트하는 동안 마운트 옵션을 지정할 수 있습니다.
예를 들면 다음과 같습니다.
마운트 옵션 예
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
mountOptions: 1
- nfsvers=4.1
nfs:
path: /tmp
server: 172.17.0.2
persistentVolumeReclaimPolicy: Retain
claimRef:
name: claim1
namespace: default
- 1
- 지정된 마운트 옵션이 PV를 디스크에 마운트하는 동안 사용됩니다.
다음 PV 유형에서는 마운트 옵션을 지원합니다.
- AWS Elastic Block Store (EBS)
- Azure Disk
- Azure File
- Cinder
- GCE 영구 디스크
- iSCSI
- 로컬 볼륨
- NFS
- Red Hat OpenShift 컨테이너 스토리지(Ceph RBD 전용)
- VMware vSphere
파이버 채널 및 HostPath PV는 마운트 옵션을 지원하지 않습니다.