27.5. 볼륨 및 클레임 사전 바인딩
PersistentVolumeClaim
이 바인딩할 PersistentVolume을 정확히 알고 있는 경우
volumeName
필드를 사용하여 PVC에 PV를 지정할 수 있습니다. 이 메서드는 일반적인 일치 및 바인딩 프로세스를 건너뜁니다. PVC는 volumeName
에 지정된 것과 동일한 이름이 있는 PV에만 바인딩할 수 있습니다. 해당 이름의 PV가 존재하고 사용
가능한 경우 PV 및 PVC가 PVC의 라벨 선택기, 액세스 모드 및 리소스 요청을 충족하는지와 관계없이 바인딩됩니다.
예 27.1. volumeName을 사용한 영구 볼륨 클레임 오브젝트 정의
apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "claim1" spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" volumeName: "pv0001"
claimRefs
를 설정하는 기능은 설명된 사용 사례에 대한 임시 해결 방법입니다. 볼륨이 개발 중인 사용자를 제한할 수 있는 장기적인 솔루션입니다.
클러스터 관리자는 사용자 대신 claimRef
를 설정하기 전에 selector-label 볼륨 바인딩 을 구성하는 것이 좋습니다.
또한 클러스터 관리자가 클레임에 대한 볼륨만 "예약"하여 다른 사용자의 클레임이 없기 전에 해당 볼륨에 바인딩할 수 있습니다. 이 경우 관리자는 claimRef
필드를 사용하여 PV에서 PVC를 지정할 수 있습니다. PV는 claimRef
에 지정된 것과 동일한 이름과 네임스페이스가 있는 PVC에만 바인딩할 수 있습니다. 라벨 선택기는 무시되지만 PVC와 PVC를 바인딩하려면 PVC의 액세스 모드 및 리소스 요청을 계속 충족해야 합니다.
claimRef를 사용한 영구 볼륨 오브젝트 정의
apiVersion: v1 kind: PersistentVolume metadata: name: pv0001 spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce nfs: path: /tmp server: 172.17.0.2 persistentVolumeReclaimPolicy: Retain claimRef: name: claim1 namespace: default
PVC에 volumeName
을 지정하지 않으면 사용자보다 먼저 다른 PVC가 지정된 PV에 바인딩되지 않습니다. PV가 사용
가능할 때까지 클레임은 Pending
상태로 유지됩니다.
PV에 claimRef
를 지정하면 지정된 PVC가 다른 PV에 바인딩되지 않습니다. PVC는 일반 바인딩 프로세스에 따라 바인딩할 다른 PV를 자유롭게 선택할 수 있습니다. 따라서 이러한 시나리오를 방지하고 클레임이 원하는 볼륨에 바인딩되는지 확인하려면 volumeName
및 claimRef
를 모두 지정해야 합니다.
pv.kubernetes.io/bound-by-controller
주석에 대해 Bound
PV 및 PVC 쌍을 검사하여 volumeName
및/또는 claimRef
의 설정이 일치 및 바인딩 프로세스에 영향을 미쳤음을 알 수 있습니다. volumeName
및/또는 claimRef
를 직접 설정하는 PV 및 PVC에는 이러한 주석이 없지만 일반 PV와 PVC는 "yes"
로 설정됩니다.
PV의 claimRef
가 일부 PVC 이름과 네임스페이스로 설정되고 Retain
회수 정책에 따라 PV가 회수되면 PVC 또는 전체 네임스페이스가 더 이상 존재하지 않는 경우에도 claimRef
는 동일한 PVC 이름 및 네임스페이스로 설정됩니다.