개요
쿠버네티스에서 Persistent 볼륨을 마운트하는 방법을 예제를 통해 알아보자.
이 예제에서는 postgres pod에 PV(Persistent Volume)을 추가하는 것으로 구성하였다. 이유는 docker로 DB를 구성하더라도 데이터는 Persistent하게 구성하는게 일반적이기 때문에 실용적인 유즈케이스라고 판단하였다.
예제 postgres-pvc.yaml
예를 들어 postgres에서 사용할 Persistent Volume을 생성한다고 가정해보자.
YAML은 아래와 같다.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
아래 명령어로 적용해준다.
이후 제대로 볼륨이 생성되었는지 확인해보자.
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
postgres-pvc Bound pvc-d0cfa5cf-e31a-11e8-88a2-fa163e51bc6a 100Gi RWO standard 9s
deployment에 mount하기
postgres deployment에 /data로 마운트 시키는 예제이다.
volumeMounts, volumes 부분을 추가해주었다.
volumeMounts와 volumes의 indentation이 다른것에 주의하자.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
io.kompose.service: postgres-deploy
name: postgres-deploy
spec:
replicas: 1
template:
metadata:
labels:
io.kompose.service: postgres-deploy
spec:
containers:
- image: postgres:10.5-alpine
name: postgres-deploy
volumeMounts:
- mountPath: "/data"
name: postgres-vol
volumes:
- name: postgres-vol
persistentVolumeClaim:
claimName: postgres-pvc
restartPolicy: Always
재기동
아래와 같은 형태로 deployment를 재기동 해준다.
예제에서는 deployment이름이 postgres-deploy이다.
검증하기
실제로 마운트가 정상적으로 되었는지 확인해보자.
우선 pod이름을 알아낸다.
이후 pod안쪽으로 접속해보자.
이후 마운트 정보를 보면 /data가 약 100GB로 정상적으로 마운트 된것을 볼 수 있다.
bash-4.4# df -h
Filesystem Size Used Available Use% Mounted on
overlay 48.4G 8.6G 39.8G 18% /
tmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vdb 98.3G 59.6M 93.2G 0% /data
/dev/vda1 48.4G 8.6G 39.8G 18% /dev/termination-log
/dev/vda1 48.4G 8.6G 39.8G 18% /etc/resolv.conf
/dev/vda1 48.4G 8.6G 39.8G 18% /etc/hostname
/dev/vda1 48.4G 8.6G 39.8G 18% /etc/hosts
shm 64.0M 8.0K 64.0M 0% /dev/shm
/dev/vda1 48.4G 8.6G 39.8G 18% /var/lib/postgresql/data
tmpfs 3.9G 12.0K 3.9G 0% /run/secrets/kubernetes.io/serviceaccount
tmpfs 3.9G 0 3.9G 0% /proc/kcore
tmpfs 3.9G 0 3.9G 0% /proc/timer_list
tmpfs 3.9G 0 3.9G 0% /proc/timer_stats
tmpfs 3.9G 0 3.9G 0% /proc/sched_debug
tmpfs 3.9G 0 3.9G 0% /sys/firmware