Volume

Ryu·2021년 12월 1일
0

Kubernetes

목록 보기
8/9

컨테이너 특성 상 어떠한 문제가 발생하여 컨테이너가 삭제 된다면 데이터도 같이 삭제
로그파일 보관 및 데이터 베이스로 사용할 경우 실시간으로 생성되던 데이터가 사라지면 큰 장애 발생
→ 중요한 데이터가 있다면 볼륨을 사용하여 데이터 보관

EmptyDir

Pod가 실행되는 디스크의 공간에 볼륨 마운트하는 임시 볼륨의 성격 띄는 볼륨
Pod 단위로 마운트 되어 컨테이너에 문제가 발생해 삭제되어도 emptydir은 유지
그러나 Pod가 삭제되면 emptydir에 보관중이던 데이터 모두 삭제

Pod 접속 후 아래와 같이 emptydir이 생성된 것을 확인

EmptyDir안에 text.txt 파일 생성

Worker Node에서 컨테이너 제거

아래와 같이 컨테이너를 지우면 새로운 컨테이너가 생성된 것을 확인

컨테이너 재생성과 상관없이 파일이 유지된 것을 확인

Pod 삭제 후 재생성

아래와 같이 Pod 재생성 후 emptydir 디렉터리 안에 파일이 제거된 것을 확인

HostPath

노드의 디스크에 볼륨을 생성하여 Pod가 삭제 되더라도 볼륨에 있던 데이터는 유지

HostPath는 Node의 볼륨을 사용하는 형태로 위에 /tmp/hostpath를 Node에 생성해 주어야 한다.

Node에 /tmp/hostpath가 없어 time out된 것을 확인


Worker Node에서 디렉터리 생성

아래와 같이 Pod가 Running상태로 바뀐 것을 확인

Pod 접속 후 아래와 같이 hostpath가 생성된 것을 확인

Pod 재생성 후 hostpath 확인

PV / PVC

PV(Persistent Volume) = 관리자에 의해 생성된 볼륨
PVC(Persistent Volume Claim) = 사용자가 볼륨을 사용하기 위해 PV에 요청

LifeCycle (4단계)

  • 프로비저닝 (provisioning)
    - 정적(static) 또는 동적(dynamic)의 pv를 생성하는 단계
    - 정적 프로비저닝 = 매니페스트 파일 등을 통해 특정 용량을 가진 PV를 미리 생성 후 요청이 있을 시 미리 생성한 PV을 할당
    - 동적 프로비저닝 = 사용자가 요청할 때 pv를 생성하여 할당, 사용자는 원하는 만큼의 용량을 생성해서 자유롭게 사용

  • 바인딩 (binding)
    - PV를 PVC에 연결시키는 단계, 1:1 관계
    - PVC는 PV에 요청하고 PV는 그에 맞는 볼륨이 있으면 할당
    - PVC가 요청하는 볼륨이 PV에 없다면 해당 요청은 무한정 남아있어 PVC가 요청하는 볼륨이 PV에 생성되면 그 요청은 받아들여져 할당

  • 사용 (using)
    - Pod는 PVC를 볼륨을 사용
    - 클러스터는 PVC를 확인하여 바인딩된 PV를 찾고 해당 볼륨을 Pod에서 사용
    - Pod가 사용중인 PVC를 삭제하려고 하면 Storage Object in Use Protection에 의해 삭제

  • 회수 (Reclamiming)
    - PV는 기존에 사용했던 PVC가 아니더라도 다른 PVC로 재활용이 가능
    - 사용이 종료된 PVC를 삭제할 때, 사용했던 PV의 데이터를 어떻게 처리할지에 대한 설정 필요
    - Retain : PV의 데이터를 그대로 보존
    - Recycle : 재사용하게 될 경우 기존의 PV 데이터들을 모두 삭제 후 재사용
    - Delete : 사용이 종료되면 해당 볼륨을 삭제

ReadWriteOnce : 하나의 Pod 노드에서만 읽고 쓸 수 있습니다.
ReadOnlyMany : 여러개의 Pod 노드에서 읽을 수 있습니다.
ReadWriteMany : 여러개의 Pod 노드에서 읽고 쓸 수 있습니다.

아래와 같이 pv, pvc, pod가 생성된 것을 확인

Pod 접속 후 test.log가 생성된 것을 확인

Can Do It
brb

profile
Let me start

0개의 댓글