Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

끄적끄적

쿠버네티스의볼륨 - 1 본문

클라우드

쿠버네티스의볼륨 - 1

yenacathy97 2020. 8. 10. 23:08

쿠버네티스를 처음 사용하면서 볼륨의 개념이 나오면서 정리가 필요하다고 느꼈다.

볼륨을 사용해야하는 이유는 컨테이너에 문제가 생겨 컨테이너를 삭제하게 되면 데이터도 삭제하게 된다. 따라서 중요한 데이터가 있으면 볼륨을 사용하여 데이터를 보관해주어야 한다.

 

나는 연구실 서버를 통해 master노드 하나와 slave1,2,3를 워크 노드로 사용하여 클러스터를 구성하였다.

클러스터의 구성

 

볼륨의 종류

볼륨의 종류

볼륨은 크게 임시 디스크, 로컬 디스크, 네트워크 디스크 등으로 구분할 수 있다. 

emptyDir

pod 생성 시에 만들어지고 삭제되면 사라지기 때문에 일시적이다. 같은 pod 내에 컨테이너들끼리 데이터를 공유할 수 있다. 최초 생성될 때 볼륨이 비어있기 때문에 emptyDir이라고 명명되었다고 한다. 

두개의 컨테이너가 emptyDir로 공유

우분투 컨테이너와 ngunx 컨테이너가 하나의 empty DIr을 공유하게 된다. 위와 같은 경우, data에 하나의 파일을 생성한 경우, 다른 컨테이너에서도 해당 파일에 접근할 수 있다. 

먼저 우분투 컨테이너에 접속하여 data로 이동하여 test.c라는 파일을 생성하였다. 

그 뒤 nginx 컨테이너에 접속하여 data로 이동해보면 test.c가 존재하는 것을 확인할 수 있다. 

hostpath

hostpath는 호스트의 디렉터리를 pod와 공유하는 방식이다. Pod가 삭제되어도 hostpath에 저장된 파일들은 호스트에 저장되어 남아있게된다. 하지만 pod가 재생성되었을 때 기존 Volme에 있는 Node에 다시 생성된다는 보장은 없다. 

나 또한 처음에 pod를 생성하였을때는 slave1에 생성되었다가 다시 생성했을 땐 slave3로 생성되었다. 따라서 yaml파일에 직접 master에 생성하도록 명시해두었다. 

또한 부끄럽게도 host노드의 파일 시스템이서 디렉터리를 마운트한다는 의미를 알지 못해 조금 헤매었다. 기존에 존재하는 tmp, var 등의 디렉터리를 사용해도 되지만, 나는 마스터 노드에 지정해두었기에 마운트 할 디렉터리 mydata라는 디렉터리를 생성하였다.

 /mydata-container라는 실행된 컨테이너 안에 마운트할 경로를 사용한다. 컨테이너에 해당 디렉터리가 없더라도 자동으로 생성해준다.

컨테이너가 마운트할 경로를 mydata로 지정해주고 해당 경로가 Directory라는 것을  명시해준다.

 

nginx 컨테이너에 접속하면 mydata-container가 존재하는 것을 확인할 수 있다.

그 뒤 mydata-container에 이동하여 hello.txt 파일을 생성하였다.

위에 생성된 파일은 호스트에 마운트 path에서 확인할 수 있다. master노드에서 mydata에 이동하여보면 hello.txt가 존재하는 것을 확인할 수 있다.

 

다음 글에서 네트워크 볼륨에 대해 정리하겠다. 

 

출처

https://baek.dev/post/6/

https://nirsa.tistory.com/156

https://bcho.tistory.com/1259

https://blog.naver.com/alice_k106/221348788068

'클라우드' 카테고리의 다른 글

쿠버네티스 jira, jenkins, gitlab을 통한 CICD  (0) 2020.10.19
쿠버네티스의 볼륨 -2  (0) 2020.08.12
도커 스웜 시작하기  (0) 2020.07.31
컨테이너 생성하기  (0) 2020.07.17
컨테이너  (0) 2020.07.09
Comments