ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kubernetes | Volume] Kubernetes Volume 개념 정리 01
    Kubernetes/Volume 2021. 5. 20. 17:08
    더보기

    저는 평소에 쿠버네티스를 사용하면서 Volume 부분에 대한 개념들이 헷갈렸었는데 조금씩 정리해보려 합니다.

    우선 컨테이너는 특성상 지워지면 데이터도 함께 사라지는 일시적인 특성을 가지고 있습니다. 즉 데이터를 영구적으로 저장하고 싶다면 Volume이라는 리소스를 사용 해야하고, Volume에는 여러가지 종류가 있습니다.

     

    오늘은 emptyDirhostPath에 대해 정리해보겠습니다.

     

    emptyDir

    개념

    • emptyDir은 Pod가 사라지면 볼륨도 함께 사라지는 임시 볼륨의 성격을 가지고 있음.
    • Pod가 실행되는 노드의 디스크의 공간에 마운트.(즉 파드가 삭제되면, 볼륨도 사용 불가)
    • 파드 내에 모든 컨테이너는 emptyDir 볼륨에서 동일한 파일을 읽고 쓸 수 있음.

     

    실습

    1. 해당 yaml을 통해 emptyDir 볼륨을 사용한 Pod 생성

    • emptydir-pod라는 이름의 pod생성
    • 파드내의 /emptyDir 디렉토리에 볼륨 마운트
    • spec.volumes[]에 emptyDir 명시
    apiVersion: v1
    kind: Pod
    metadata:
      name: emptydir-pod
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - mountPath: /emptyDir
          name: test
      volumes:
      - name: test
        emptyDir: {}

     

    2. pod를 생성한 뒤에 접속하여 /emptyDir 디렉토리 내에서 테스트 파일 생성

    • emptyDir 디렉토리 생성 확인
    • emptyDir 디렉토리 내에 hello라는 테스트 파일 생성

     

    2. 컨테이너 삭제후, 다시 파드 접속하여 hello 파일 확인

    • 컨테이너를 삭제하고 파드내에 볼륨이 그대로 남아있는지 확인

     

    3. 파드 삭제후, hello 파일 여부 확인

    • 컨테이너를 삭제하고 파드내에 볼륨이 그대로 남아있는지 확인

     

    실습결과

    컨테이너 삭제시에는 볼륨이 그대로 보존되는 것을 알 수 있고, pod를 날리니 볼륨도 그대로 날아갑니다!

     

    hostPath

    개념

    • hostPath 볼륨은 호스트 노드의 파일시스템에있는 파일이나 디렉토리를 노드의 디스크에 마운트함
    • hostPath는 노드의 디스크에 볼륨을 생성하므로, Pod가 삭제 되더라도 볼륨에 있던 데이터는 유지됨

     

    실습

    1. 해당 yaml을 통해 hostPath 볼륨을 사용하는 Pod 생성

    • spec.volumes.hostPath => 노드에 마운트할 경로를 정해주는 부분. 해당 디렉토리는 노드에 생성되어 있어야 하며, 만약 노드에 디렉토리가 없을 경우 ContainerCreating상태에서 pod가 생성되지 않음
    apiVersion: v1
    kind: Pod
    metadata:
      name: hostpath-pod
    spec:
      containers:
      - name: hostpath-pod
        image: nginx
        volumeMounts:
        - mountPath: /hostpath
          name: hostpath-volume
      volumes:
      - name: hostpath-volume
        hostPath:
          path: /tmp/hostpath   #해당 디렉토리가 존재해야 함
          type: Directory

     

    2. 파드에 접속하여 테스트 파일 생성

     

    3. 파드를 삭제한 후, 노드내의 디렉토리에 테스트 파일 존재하는지 확인

     

    실습결과

    hostPath의 경우, pod가 삭제되더라도 노드의 디렉토리내에 저장되는 것이므로 그대로 데이터가 남음

     

    댓글

Designed by Tistory.