docker run
의 -v
옵션인 도커 볼륨과 유사한 역할을 한다고 이해할 수 있습니다.minikube 를 생성하면, 기본적으로 minikube 와 함께 설치되는 storageclass 가 존재합니다.
kubectl get storageclass
를 통해 이미 설치된 storageclass 를 확인할 수 있습니다.PVC 를 생성합니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
spec: # pvc 의 정보를 입력하는 파트입니다.
accessModes:
- ReadWriteMany # ReadWriteOnce, ReadWriteMany 옵션을 선택할 수 있습니다.
volumeMode: Filesystem
resources:
requests:
storage: 10Mi # storage 용량을 설정합니다.
storageClassName: standard # 방금 전에 확인한 storageclass 의 name 을 입력합니다.
vi pvc.yaml
kubectl apply -f pvc.yaml
kubectl get pvc,pv
# pvc 와 동시에 pv 까지 방금 함께 생성된 것을 확인할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html" # mount 할 pvc 를 mount 할 pod 의 경로를 적습니다.
name: mypd # 어떤 이름이든 상관없으나, 아래 volumes[0].name 과 일치해야 합니다.
volumes:
- name: mypd # 어떤 이름이든 상관없으나, 위의 volumeMounts[0].name 과 일치해야 합니다.
persistentVolumeClaim:
claimName: myclaim # mount 할 pvc 의 name 을 적습니다.
vi pod-pvc.yaml
kubectl apply -f pod-pvc.yaml
kubectl exec -it mypod -- bash
touch hi-fast-campus
cd /var/www/html
touch hi-fast-campus
kubectl delete pod mypod
kubectl get pvc,pv
kubectl apply -f pod-pvc.yaml
kubectl exec -it mypod -- bash
ls
# hi-fast-campus 파일이 사라진 것을 확인할 수 있습니다.
cd /var/www/html
ls
# hi-fast-campus 파일이 그대로 보존되는 것을 확인할 수 있습니다.
추가적으로 쿠버네티스에 대해 조금 더 알아보고 싶으신 분들은 kubernetes 공식 문서 혹은 해당 페이지에서 제공하는 interactive tutorial 을 따라해보시면 많은 도움이 될 것입니다.