출처: [Kubernetes] 7. 쿠버네티스 volume 마운트 (tistory.com)
[ 디스크 볼륨 종류 ]
Temp | Local | Network |
emptyDir | hostPath | GlusterFS gitRepo NFS iSCSI gcePersistentDisk AWS EBS azureDisk Fiber Channel Secret VshereVolume |
다양한 방법으로 Pod에 볼륨을 마운트 가능하다.
emptyDir : Pod가 생성될때 생성되고, Pod가 삭제 될때 같이 삭제되는 임시 볼륨
hostPath : 노드의 로컬 디스크의 경로를 Pod에서 마운트해서 사용. 같은 hostPath에 있는 볼륨은 여러 Pod 사이에서 공유되어 사용된다.
위의 방식 및 네트워크 볼륨에 관련된 내용은 조대협님의 블로그에서 자세히 볼 수 있다.
(https://bcho.tistory.com/1259 )
[ nginx의 index.html 파일 마운트 실습 ]
위 처럼 Deployment.yaml에서 Pod의 spec을 명시해주는 부분에 volumes 색션을 추가할 수 있다.
해당 컨테이너의 mountPath를 외부의 hostPath를 지정하여 볼륨을 마운트할 수 있다.
다음 예제는 nginx 컨테이너에서 /usr/share/nginx/html 의 디렉터리를 외부에서 관리할 수 있게 마운트를 한다.
이 디렉터리 안에 있는 index.html 파일을 바꿔서 실제로 홈페이지가 바뀌는지 확인한다.
[ nginx-deployment-volume.yaml 파일 ]
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-volume
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
volumes:
- name: shared-data
hostPath:
path: /home/yoon/Workspace/k8sstudy/shared # 경로 변경 필요
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 8080
targetPort: 80
protocol: TCP
name: http
selector:
app: nginx
[ minikube 사용 시 주의할 점 ]
minikube는 말 그대로 컨테이너이다. ($ minikube ssh 명령으로 컨테이너에 접속할 수 있다.) 경로도 마찬가지로 해당 컨테이너의 경로로 인식하여, 아무리 로컬의 경로를 써주어도 찾아주지 못한다. 따라서 minikube를 생성할 때 로컬의 경로와 해당 minikube의 경로를 마운트하여 사용하도록 한다.
$ minikube start --mount --mount-string="/host/path:/minikubeContainer/path"
minikube를 실행할 때 로컬의 /host/path 와 minikube 컨테이너의 /minikubeContainer/path 가 마운트되어 폴더가 공유되어진다.
해당 폴더에 index.html을 생성하고, 또한 yaml 파일에서도 hostPath를 /minikubeContainer/path로 지정해준다.
이제 마운트를 통해서 외부에서도 index.html 파일을 자유롭게 수정할 수 있다.
'프로그램 활용 > 클라우드 가상화 도커' 카테고리의 다른 글
쿠버네티스 kubernetes 파드 (0) | 2023.08.09 |
---|---|
docker run -p 옵션과 Dockerfile의 EXPOSE와의 차이 (0) | 2023.08.08 |
쿠버네티스 도커 단일 인스턴스 스테이트풀 애플리케이션 실행하기 (0) | 2023.08.08 |
DBeaver(디비버) Public Key Retrieval is not allowed 에러 (0) | 2023.08.07 |
Docker Volume 및 Docker 로 MySql 컨테이너 설정, 데이터 영구 저장 (0) | 2023.08.07 |