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.yaml
apiVersion: 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에 디렉토리가 없으면 자동 생성