4.8. hostPath를 사용하는 영구 스토리지
OpenShift Container Platform 클러스터의 hostPath 볼륨은 호스트 노드 파일 시스템의 파일 또는 디렉터리를 Pod에 마운트합니다. 대부분의 Pod에는 hostPath 볼륨이 필요하지 않지만 테스트에 필요한 빠른 옵션을 제공합니다.
클러스터 관리자는 권한으로 실행되도록 Pod를 구성해야 합니다. 이를 통해 동일한 노드의 Pod에 액세스 권한이 부여됩니다.
4.8.1. 개요
OpenShift Container Platform은 단일 노드 클러스터에서 개발 및 테스트를 위해 hostPath 마운트를 지원합니다.
프로덕션 클러스터에서는 hostPath를 사용할 수 없습니다. 대신, 클러스터 관리자는 GCE 영구 디스크 볼륨, NFS 공유 또는 Amazon EBS 볼륨과 같은 네트워크 리소스를 프로비저닝합니다. 네트워크 리소스는 스토리지 클래스 사용을 지원하여 동적 프로비저닝을 설정합니다.
hostPath 볼륨은 정적으로 프로비저닝해야 합니다.
컨테이너 루트, /
또는 호스트와 컨테이너에서 동일한 경로에 마운트하지 마십시오. 컨테이너에 충분한 권한이 있는 경우 호스트 시스템이 손상될 수 있습니다. /host
를 사용하여 호스트를 마운트하는 것이 안전합니다. 다음 예는 /host
의 컨테이너에 마운트되는 호스트의 /
디렉터리를 보여줍니다.
apiVersion: v1 kind: Pod metadata: name: test-host-mount spec: containers: - image: registry.access.redhat.com/ubi8/ubi name: test-container command: ['sh', '-c', 'sleep 3600'] volumeMounts: - mountPath: /host name: host-slash volumes: - name: host-slash hostPath: path: / type: ''
4.8.2. 정적으로 hostPath 볼륨을 프로비저닝
hostPath 볼륨을 사용하는 Pod는 수동(정적) 프로비저닝을 통해 참조해야 합니다.
절차
PV(영구 볼륨)를 정의합니다.
PersistentVolume
오브젝트 정의를 사용하여pv.yaml
파일을 생성합니다.apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume 1 labels: type: local spec: storageClassName: manual 2 capacity: storage: 5Gi accessModes: - ReadWriteOnce 3 persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/data" 4
파일에서 PV를 생성합니다.
$ oc create -f pv.yaml
PVC(영구 볼륨 클레임)를 정의합니다.
PersistentVolumeClaim
오브젝트 정의를 사용하여pvc.yaml
파일을 생성합니다.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: task-pvc-volume spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: manual
파일에서 PVC를 생성합니다.
$ oc create -f pvc.yaml
4.8.3. 권한이 있는 Pod에서 hostPath 공유 마운트
영구 볼륨 클레임을 생성한 후 애플리케이션에 의해 내부에서 사용될 수 있습니다. 다음 예시는 Pod 내부에서 이 공유를 마운트하는 방법을 보여줍니다.
사전 요구 사항
- 기본 hostPath 공유에 매핑된 영구 볼륨 클레임이 있습니다.
절차
기존 영구 볼륨 클레임을 마운트하는 권한이 있는 Pod를 생성합니다.
apiVersion: v1 kind: Pod metadata: name: pod-name 1 spec: containers: ... securityContext: privileged: true 2 volumeMounts: - mountPath: /data 3 name: hostpath-privileged ... securityContext: {} volumes: - name: hostpath-privileged persistentVolumeClaim: claimName: task-pvc-volume 4