[Kubernetes] 쿠버네티스 볼륨(Volume) - hostPath

2024. 10. 8. 11:55Kubernetes/Kubernetes_Service

반응형

안녕하세요, 달콤한달팽이입니다.🐌🙂

 

지난 시간에는 쿠버네티스에서 주로 사용하는 볼륨의 종류와 특징에 대하여 알아보았습니다.

 

오늘은 이 중 hostPath라는 볼륨에 대하여 실습해보도록 하겠습니다.


hostPath란?

실습에 앞서 hostPath란, Pod가 생성될 때 같이 생성되고, 삭제될 때 같이 삭제되는 임시 볼륨을 의미한다라고 했습니다.

 

때문에 이를 영구 스토리지로 사용하는 것 보다, 아래와 같은 특정 상황에서 사용하는 것을 권장드립니다.

 (1) Pod의 임시 데이터 저장이 필요할 경우

 (2) 컨테이너 간 데이터를 공유해야 할 경우

 (3)스토리지를 통한 성능 최적화가 필요할 경우

 

이번 실습에서는 하나의 Pod를 생성한 후, 노드의 hostPath에서 생성한 파일이 Pod의 경로에서도 확인이 가능한지 실습해보겠습니다.

 

hostPath 실습

우선, Nginx 컨테이너가 포함된 Pod를 생성해주세요.

(yaml파일은 아래를 참고해주세요!)

더보기

apiVersion: v1
kind: Pod
metadata:
  name: hostpath
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: hostpath-volume
      mountPath: /hostpath
  volumes:
  - name: hostpath-volume
    hostPath:
      path: /shared
      type: Directory

 

정상적으로 생성되었는지 Pod의 목록을 확인해주도록 합시다.

$ kubectl get pods -A

 

Pod 설명을 확인하여 어떤 노드에 배포되었는지 확인해주세요.

(저는 10.0.10.186 노드에 배포되었네요!)

$ kubectl describe pods hostpath

 

이제 해당 노드의 /shared 디렉터리를 생성하고, 테스트용 파일 하나를 생성해주세요.

$ mkdir shared
$ ll | grep shared
$ cd shared
$ echo testtest > test_hostpath.txt
$ ll

 

이제 컨테이너의 /hostpath에 들어가 파일이 공유되었는지 확인해주세요.

$ kubectl exec -it hostpath -- /bin/bash

... 컨테이너 내부 ...
$ cd hostpath
$ ls

 

노드에 위치한 디렉터리가 Pod 내부 컨테이너와 공유되는 것을 알아보았습니다.


지금까지 hostPath 볼륨을 사용하여 Pod와 노드간의 볼륨 공유 방법에 대하여 알아보았습니다.

 

감사합니다!

반응형