01. Java
02. git
03. Database
04. Jsp [Server]
05. HTML,CSS
07. JS
06. 미니프로젝트-2W
08. SpringFramework , SrpingBoot
19. 중간프로젝트 (1M)
10. Linux 명령어
11. AWS
12. Docker
13. Kubernetes(v)
14. React JS
15. App - Android
16. 최종프로젝트 (1M)
![]()
쿠버네티스 클러스터에 존재하는 독립된 저장 공간
쿠버네티스 호스트 시스템 어딘가에 있는 디렉토리, 컨테이너 외부에 데이터를 저장
PV는 특정 스토리지 백엔드와 연결
클라우드 스토리지, 네트워크 파일시스템(NFS), 로컬 디스크 등 다양한 유형의 스토리지 백엔드를 지원
데이터베이스가 포함된 pod가 삭제되면 데이터 또한 유실 -> pod내부의 데이터를 host시스템 바깥으로 매핑시켜 pod가 삭제되더라도, 데이터는 영구히 저장되도록 해야함
- docker의 volume마운트와 같으며 쿠버네티에서는 Persistent Volume(PV)를 사용
- 개발과 테스트환경에서는
hostPath를 사용하지만, 운영단계에서는 변경됨hostPath는 쿠버네티스 노드(서버)의 로컬 파일 시스템에 접근할 수 있게 해줌- 하지만, hosPath는 본인의 노드(컴퓨터)에 종속되기 때문에 다른 노드(컴퓨터)에서는 접근이 불가능하고 클러스터가 전환되면 데이터가 유지되지 않음
database.yamlapiVersion: apps/v1 # 큐에 대한 롤링배포 kind: Deployment metadata: name: postgres spec: selector: matchLabels: app: postgres replicas: 1 # 몇 개의 Pod 인스턴스를 유지할지 template: # Pod의 템플릿을 정의 metadata: labels: app: postgres spec: containers: - name: postgres image: postgres:14 # 포스트그레 공식 도커 이미지 env: - name: POSTGRES_USER # 초기슈퍼사용자 유저명 value: "postgres" - name: POSTGRES_PASSWORD # 비밀번호 value: "1234" - name: POSTGRES_DB # 기본 데이터베이스 이름 value: "postgres" - name: PGDATA # 데이터 저장 경로 (선택적) value: "/var/lib/postgresql/data/pgdata" volumeMounts: - name: postgres-persistent-storage # 마운트할 볼륨이름 mountPath: /var/lib/postgresql/data # DB컨테이너가 데이터 저장시 사용하는 폴더명 volumes: - name: postgres-persistent-storage hostPath: # 호스트머신에 물리적 경로를 만듬 path: /mnt/some/mydata # 물리적경로 type: DirectoryOrCreate # path에 디렉토리가 없으면 자동 생성