※주의
이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서
글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다.
공식문서가 더욱 더 큰 도움이 될 수 있습니다!
궁금점
볼륨의 전체적인 개념과 볼륨을 지정을 안해줬을 때, 해줬을 때의 차이점에 대해서 궁금했습니다.
행동
볼륨
볼륨은 저장소와 관련된 오브젝트로,
컨테이너를 사용하고 있을 때 컨테이너가 갑자기 종료되어서 재시작 되었을 때
컨테이너에서 새로 만들거나 새로 추가한 파일들은 전부 날아갑니다.
그럴 때 필요한 것이 볼륨으로 컨테이너가 없어졌을 때,
파드가 없어졌을 때 유지할 수 있는 볼륨으로 emptyDir 과 hostPath로 나눌 수 있습니다.
default
volume을 지정해주지 않으면 emptyDir 옵션으로 지정이 됩니다.
(그래서 같은 파드안에 컨테이너들은 저장소를 공유하는 느낌이 나는것이 이 때문입니다.)
emptyDir
emptryDir은 Pod가 사라지면 볼륨도 같이 삭제되는 임시 볼륨의 성격을 가지고 있고
Pod가 실행되는 디스크의 공간에 볼륨 마운트를 하게 됩니다.
Pod가 삭제될 경우 emptyDir 또한 삭제되기 때문에
Pod 내부 컨테이너 간에 공유해야 하는 휘발성 데이터를 저장하기 위해서 사용될 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: emptydir-pod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: /emptydir
name: emptydir-volume
volumes:
- name: emptydir-volume
emptyDir: {}
spec.containers.volumeMounts.mountPath →
실행될 컨테이너 안에 마운트할 경로 입니다. 컨테이너 안에 해당 디렉토리가 없더라도 자동으로 생성 해줍니다.
spec.containers.volumeMounts.mountPath →
마운트할 볼륨의 이름 입니다.
spec.voluems →
위에 작성한 emptydir-volume을 사용하도록 지정 해줍니다.
hostPath
hostPath는 노드의 디스크에 볼륨을 생성하여 Pod가 삭제 되더라도 볼륨에 있던 데이터는 유지 됩니다.
hostPath로 볼륨을 생성하면 pod가 삭제되어도 데이터는 그대로 유지가 됩니다.
node가 삭제가 되면 볼륨 데이터도 없어집니다. (노드에 생성하기 때문)
하는 도중 문제점 ↓
저는 minikube를 통해서 해서 단일노드의 형태로 진행을 했는데,
hostPath의 path가 minikube의 디스크에 볼륨을 형성하는데
minikube의 노드에 접속하는 방법을 몰라서 확인할 길이 없습니다ㅜ.. 혹시 아시는분
해결 해버렸습니다.
저는 minikube를 사용하기 때문에
local - minikube mount 후에minikube에서 local과 mount된 파일과 컨테이너의 볼륨과 마운트를 또 시켜줘야 합니다.
그래서 저의 로컬에 있는 /mounttest 와 minikube의 node에 있는 /mounttest-minikube(없으면 생성해줌 옵션)
위에 사진의 local에서 mounttest 라는 파일이 저희가 마운트 시켜줄 아이입니다.
그리고 그 안에는 a, b, c 라는 파일을 생성 해놓았습니다. 이제 마운트가 잘 되나 확인해보자고요
디플로이먼트를 다시 생성해주고..
저희가 hostPath로 마운트한 디플로이먼트는 mariadb 디플로이먼트입니다.
mariadb 컨테이너를 실행 시킨 다음에
생성 되어있는 것을 볼 수 있습니다..
또 생긴 궁금점..
그런데 minikube는 항상 이렇게 mount를 시켜줘야하나?
해결되면 또 올리겠습니다
참고
https://kubernetes.io/ko/docs/concepts/storage/volumes/
'Kubernetes & Docker > 궁금한 것' 카테고리의 다른 글
쿠버네티스 YAML 파일 작성 시 실행 순서에 대해서 (0) | 2020.07.17 |
---|---|
쿠버네티스 apiVersion에 대해서 (0) | 2020.07.17 |
쿠버네티스 minikube status 명령어를 입력하면 나오는 kubelet, apiserver,kubeconfig에 대해서 (0) | 2020.07.17 |
쿠버네티스 노드와 마스터 서버에 대해서(kubelet, kubeadm) (0) | 2020.07.17 |
쿠버네티스 서비스(service)의 노드포트(NodePort)의 포트가 겹쳤을 때 어떻게 될까? (0) | 2020.07.17 |