-
Kubernetes) Kubernetes VolumeCloud/Kubernetes 2022. 10. 13. 23:26
학습 목표 : k8s의 volume이 어떻게 사용되는지 알아본다.
Kubernetes 에서 Volume 이란?
- Volume은 Pod의 일부분으로 정의되는 요소로서 Pod와 동일한 생명주기를 갖는다.
- Volume은 독립적인 리소스가 아니므로 자체적으로 생성/삭제할 수 없다.
- Pod에 여러개의 container를 갖는 경우 모든 container가 Volume을 공유할 수 있다.
- Volume은 Pod의 모든 container에서 사용 가능하며 사용시 container에서 mount해야 사용할 수 있다.
- 각 container 파일 시스템의 어느 경로에도 mount 할 수 있다.
Volume 유형
- emptyDir : 일시적인 데이터를 저장할 때 사용하는 빈 디렉토리
- hostPath : 워커 노드의 파일 시스템을 Pod의 디렉토리로 mount하여 사용한다.
- nfs : NFS 공유 Pod에 mount 한다.
- public cloud 전용 스토리지 : AmazonEBS, GCE Persistent Disk, Azure Disk Volume 등을 사용한다.
- configMap, secret, downwardAPI : Kubernetes 리소스나 cluster 정보를 Pod에 노출하는데 사용되는 특별한 유형의 Volume
- persistentVolumeClaim : 사전 혹은 동적으로 프로비저닝된 persistent storage를 사용하는 방법
YAML 파일에서 Volume 사용하기
- exam-volume.yml 파일
apiVersion: v1 kind: Pod metadata: name: fortune labels: app: exam-volume spec: containers: - image: luksa/fortune name: html-generator volumeMounts: - name: html mountPath: /var/htdocs - image: nginx:alpine name: webserver volumeMounts: - name: html mountPath: /usr/share/nginx/html readOnly: true ports: - containerPort: 80 protocol: TCP volumes: - name: html emptyDir: {}
- html-generator(container)에서 fortune 결과를 html 형식으로 생성하여 공유하고 Volume에 저장한다.
- webserver(container)에서 공유 Volume의 내용을 이용하여 HTML 형식으로 서비스 한다.
- Pod가 실행되는 worker node에서 다음 명령어를 입력한다.
kubectl port-forward fortune 8080:80 curl http://localhost:8080
- host 포트를 Pod의 포트로 포워딩한다.
- web browser로 fortune 결과를 확인한다.
'Cloud > Kubernetes' 카테고리의 다른 글
Kubernetes) AWS 기반 쿠버네티스 H.A 구축 프로젝트 2편 (1) 2022.10.18 Kubernetes) AWS 기반 쿠버네티스 H.A 구축 프로젝트 1편 (0) 2022.10.18 Kubernetes) Kubernetes Pod (0) 2022.10.13 Kubernetes) Kubernetes namespace 알아보기 (0) 2022.10.12 Kubernetes) kubectl 명령어를 알아보기 (0) 2022.10.12