[주의] 개인 공부를 위해 쓴 글이기 때문에 주관적인 내용은 물론, 쓰여진 정보가 틀린 것일 수도 있습니다!
피드백 부탁드립니다. (- -)(_ _) 꾸벅
[ 디스크 볼륨 종류 ]
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] 9. 쿠버네티스 kubeadm을 이용한 클러스터 구성 (0) | 2021.07.18 |
---|---|
[Kubernetes] 8. 쿠버네티스 config와 kubectl의 context (0) | 2021.06.17 |
쿠버네티스 ContainerCreating 상태에서 멈출 시 해결방법 (1) | 2021.06.17 |
[Kubernetes] 6. 쿠버네티스 Service란? (NodePort, nginx 실습) (2) | 2021.05.09 |
[Kubernetes] 5. 쿠버네티스 YAML configuration 파일 (0) | 2021.04.29 |