Dev./Kubernetes & Helm

Kubernetes: PersistentVolumeClaim

Ivan'show 2023. 9. 27.
728x90
반응형

DB: PersistentVolumeClaim

지금은 DB 볼륨을 emptyDir 로 만들었기 때문에 파드가 내려질 떄마다 모든 DB 정보가 사라지게 된다. DB와 연결해서 데이터를 저장헀는데 모든 데이터가 계속 초기화 되면 안되지 않을까?

그래서 PVC 형태로 DB 를 저장할 수 있게 셋팅값을 바꿔주고 연결해보자.

# db-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: lion-db
  labels:
    app: lion-db
spec:
  imagePullSecrets:
  - name: regcred
  containers:
    - name: lion-db
      image: postgres:13
      imagePullPolicy: Always # 기존의 이미지를 쓰지않고 항상 가져오게 끔
      env:
      - name: PGDATA
        value: "var/lib/postgresql/data/k8s"
      envFrom:
      - secretRef:
          name: db-secret
      ports: 
        - containerPort: 5432
      volumeMounts:
      - name: postgres-data
        mountPath: "var/lib/postgresql/data"
  volumes:
  - name: postgres-data
    persistentVolumeClaim:
      claimName: db-pod-pvc
  • emptyDir 로 사용하긴 했지만 경로가 이미 사용중이 라는 에러가 발생하기 떄문에 환경변수에 경로를 추가해서 DB 가 경로 탐색을 할 수 있도록 해서 연결한다.
  • env: - name: PGDATA value: "var/lib/postgresql/data/k8s"
  • emptyDir 에서 pvc 형태로 바꿔주고 설정값을 추가한다.
  • # db-pvc.yaml # persistance volume claim apiVersion: v1 kind: PersistentVolumeClaim metadata: name: db-pod-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: nks-block-storage

설정을 끝내고 DB 를 삭제했다가 재시작하는데, 기존 rs 에서는 여전히 이전 설정값으로 연결되어 있기 때문에 rs 가 관리하는 파드를 하나 삭제했다가 재생성되가 하므로 새롭게 migrations 이 될 수있게 한다.

k delete po lion-app-hgs2h
728x90
반응형

댓글