ABOUT ME

Today
Yesterday
Total
  • Kubernetes) Kubernetes Volume
    Cloud/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 결과를 확인한다.



    댓글

Designed by Tistory.