• [Kubernetes Workloads] 볼륨(Volume)과 퍼시스턴트 볼륨(Persistent Volume)
    아키텍처 공부/Cloud 2022. 11. 11. 00:22
    반응형

     

     파드의 컨테이너 디스크에 있는 파일은 일시적이다. 컨테이너가 종료되면 파일은 손실된다. 컨테이너 간에 파일을 공유해야하는 경우는 어떻게 할 것인가?  이 문제들을 해결하기 위해 쿠버네티스가 제공하는 볼륨 및 퍼시스턴트 볼륨에 대해 알아보자.

     

    볼륨(Volume)

     볼륨은 유형에 관계없이 컨테이너가 아닌 파드에 연결된다. 컨테이너가 종료되는 것으로는 노드에서 볼륨를 제거하지 않는다. 그러나 볼륨 역시 일시적이므로 연결된 파드가 종료되기 전까지만 지속된다. 결국, 볼륨은 파드의 모든 컨테이너에 액세스할 수 있는 디렉터리이다.

     

    emptyDir 볼륨

     emptyDir 볼륨은 단순히 파드 내의 컨테이너가 읽고 쓸 수 있도록 하는 빈 디렉터리이다. 파드가 노드에 할당될 때 생성되고, 파드가 존재하는 한 존재한다. 쿠버네티스는 노드의 로컬 디스크에서 또는 메모리 지원 파일 시스템을 사용하여 emptyDir 볼륨을 생성한다. 

     컨피그맵(ConfigMap)은 파드에 애플리케이션 구성 데이터를 주입할 때 사용된다. 컨피그맵 옵션에 저장된 데이터는 파일과 같고, 컨테이너의 에플리케이션에서 해당 데이터를 사용할 수 있다.

     시크릿(Secrets)은 컨피그맵과 유사하다. 암호, 토큰 및 SSH 파일과 같은 민감한 정보를 저장하려면 시크릿를 사용해야 한다. 친숙한 base-64 인코딩을 사용하여 시크릿에 들어가는 값을 난독화하는 것도 일반적인 관행이다. 

     다운워드(downward) API 볼륨은 다운워드 API 데이터를 애플리케이션에서 사용할 수 있도록 하는 데 사용된다. 다운워드 API는 컨테이너가 파드의 정보에 대해 알 수 있는 방법이다. 예를 들어 파드의 컨테이너 애플리케이션이 클러스터에서 고유하도록 보장되는 식별자를 구성해야 한다고 가정하자. 파드 이름은 클러스터에서 고유하기 때문에 파드의 이름을 기반으로 식별자를 지정하는 것이 더 쉽다. 다운워드 API를 사용하면 애플리케이션이 실행 중인 파드의 이름을 가져올 수 있다. 

     컨피그맵, 시크릿 및 다운워드 API는 기본적으로 emptyDir 볼륨이다. 

     

    퍼시스턴트 볼륨(Persistent Volume)

     볼륨과 달리 퍼시스턴트 볼륨 수명 주기는 쿠버네티스에서 관리한다. 퍼시스턴트 볼륨은 파드와 독립적으로 존재하는 클러스터 리소스이다. 퍼시스턴트 볼륨은 퍼시스턴트볼륨클레임 (PVC, PersistentVolumeClaims)을 통해 동적으로 프로비저닝되거나 클러스터 관리자가 명시적으로 생성할 수 있다.

     퍼시스턴트볼륨클레임 (PVC, PersistentVolumeClaims)를 사용하여 프로비저닝된 스토리지를 쉽게 요청하고 사용할 수 있다.  퍼시스턴트 볼륨을 사용할 수 있도록 하는 것은 관리자의 작업이며, 애플리케이션에서 이러한 볼륨을 사용하는 것은 개발자의 작업이다. 퍼시스턴트볼륨(PV, PersistentVolume)의 저장소는 파드에서 액세스하려면 퍼시스턴트볼륨클레임과 바인딩되어야 한다. 즉,  파드는 퍼시스턴트볼륨클레임을 사용하여 퍼시스턴트볼륨을 요청한다. 


    참고:
    https://kubernetes.io/ko/docs/concepts/storage/volumes/
    https://kubernetes.io/ko/docs/concepts/workloads/pods/downward-api/
    https://kubernetes.io/ko/docs/concepts/storage/storage-classes/
    https://kubernetes.io/ko/docs/concepts/storage/persistent-volumes/




    반응형

    댓글

Designed by Tistory.