kube 4

persistent volume
cloud-computing

퍼시스턴트 볼륨(PV), 퍼시스턴트 볼륨 클레임(PVC)


로컬볼륨: hostPath, emptyDir

# hostPath
apiVersion: v1
kind: Pod
metadata:
  name: hostpath-pod
spec:
  containers:
    - name: my-container
      image: busybox
      args: ["tail", "-f", "/dev/null"]
      volumeMounts:
        - name: my-hostpath-volume
          mountPath: /etc/data
  volumes:
    - name: my-hostpath-volume
      hostPath:
        path: /tmp


apiVersion: v1
kind: Pod
metadata:
  name: emptydir-pod
spec:
  containers:
    - name: content-creator
      image: alicek106/alpine-wget:latest
      args: ["tail", "-f", "/dev/null"]
      volumeMounts:
        - name: my-emptydir-volume
          # 1. 이 컨테이너가 /data 에 파일을 생성하면
          mountPath: /data

    - name: apache-webserver
      image: httpd:2
      volumeMounts:
        - name: my-emptydir-volume
          # 2. 아파치 웹 서버에서 접근 가능합니다.
          mountPath: /usr/local/apache2/htdocs/

  volumes:
    - name: my-emptydir-volume
      # 포드 내에서 파일을 공유하는 emptyDir
      emptyDir: {}


네트워크 볼륨

NFS는 그냥 파일 시스템 서버이고,
외부에 있는 파일시스템을 로컬 OS가 외부에 있는 파일 시스템을 가져와서 로컬에 있는 것처럼 쓸 수 있게 해주는 것
마운팅한다는 것은 로컬의 공간을 차지하지 않고 외부의 시스템을 로컬에 있는 것처럼 쓸 수 있게 해주는 것이다.
ex. 파일을 저장할 때 외부의 시스템을 마운트한 상태이면, 내 로컬이 아니라 그 마운팅한 시스템의 컴퓨터 공간을 쓴다.

우리는 애져 스토리지 붙일 것임

PV, PVC 사용하는 이유


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-ebs-pvc # 1. my-ebs-pvc라는 이름의 pvc 를 생성합니다.
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce # 2.1 속성이 ReadWriteOnce인 퍼시스턴트 볼륨과 연결합니다.
  resources:
    requests:
      storage: 5Gi # 2.2 볼륨 크기가 최소 5Gi인 퍼시스턴트 볼륨과 연결합니다.
---
apiVersion: v1
kind: Pod
metadata:
  name: ebs-mount-container
spec:
  containers:
    - name: ebs-mount-container
      image: busybox
      args: ["tail", "-f", "/dev/null"]
      volumeMounts:
        - name: ebs-volume
          mountPath: /mnt
  volumes:
    - name: ebs-volume
      persistentVolumeClaim:
        claimName: my-ebs-pvc # 3. my-ebs-pvc라는 이름의 pvc를 사용합니다.


퍼시스턴트 볼륨의 라이프사이클