[MacOS 환경 #12] 볼륨2. 호스트패스(hostpath)

도람·2025년 11월 17일
post-thumbnail

볼륨

이번 게시물은 호스트에 있는 디렉토리를 파드가 쓰는 hostpath에 대해 작성했다.

다만, 쿠버네티스 공식 문서에서도 아래처럼 여러 차례 경고하듯이,
hostPath는 매우 강력하지만 신중히 사용해야 하는 기능이다.

파드가 호스트 파일 시스템에 직접 접근하거나 수정할 수 있기 때문에,
잘못 설정할 경우 보안 취약점이 발생하거나 시스템 전체 서비스에 영향을 줄 위험이 있다.
따라서 운영 환경에서는 반드시 읽기 전용(readOnly: true)으로 마운트하는 것이 권장된다.


hostpath란 ?

  • hostPath 볼륨은 노드(호스트 머신)의 파일 또는 디렉토리를 파드 내부에 연결하는 볼륨 타입이다.
    -> 즉, “내 쿠버네티스 클러스터 각 노드에 있는 특정 경로(/var/log 등)를 파드 안에서 그대로 참조해서 쓰겠다”는 뜻이다.
  • 장점: 노드 상의 로그나 파일 등을 파드로 접근해서 처리하기 쉬움.
  • 단점: 노드-종속적이고 보안/이식성 측면에서 취약함. 공식 문서나 블로그 모두 “생산환경에서는 주의가 필요하다”고 경고문구가 있음.

hostpath를 언제 사용하는가

  • 노드마다 있는 시스템 로그(/var/log 등)를 수집하고 싶을 때
  • 노드의 특정 디렉토리를 파드에서 직접 읽거나 쓰고 싶을 때
  • 개발/테스트 환경에서 빠르게 파일을 마운트해서 확인할 때

hostpath의 주의사항


hostpath 예시코드

apiVersion: v1
kind: Pod
metadata:
  name: hostpath-demo-pod
  labels:
    app: hostpath-demo
spec:
  containers:
  - name: demo-container
    image: busybox
    command: ["sh", "-c", "sleep 3600"]
    volumeMounts:
    - name: host-log-volume
      mountPath: /host-logs
      readOnly: true
  volumes:
  - name: host-log-volume
    hostPath:
      path: /var/log
      type: Directory

vim hostpath-demo.yaml 한 후,
apply 하여 배포한다.

hostPath로 파드 내부에서 노드 로그 확인


상태가 running인 것을 확인 한 후
그런 다음 파드 내부에 접속한다.

kubectl exec -it hostpath-demo-pod -- /bin/sh

그런 다음 노드 로그 경로를 확인한다.

ls /host-logs


이렇게 경로가 나오면 ,

cat /host-logs/pods/*/*/*.log | head -n 20

이렇게 명령어를 입력하여 파드 내부에서 /host-logs를 조회했더니 이렇게 보인다.

이렇게 하면 호스트 노드의 /var/log/pods 로그 파일을
파드 내부에서 읽을 수 있다.


정리

이번 실습은 hostPath를 이용해 파드가 호스트 노드의 로그를 직접 읽는 방법을 확인한 것이다.
실제 환경에서는 이런 방식으로 노드별 로그를 수집하는 DaemonSet 기반 로그 수집기(예: Fluentd, Promtail) 가 동작한다.


참고문서:
[zesty - What is hostPath in Kubernetes?]
https://zesty.co/finops-glossary/what-is-hostpath-in-kubernetes/?utm_source=chatgpt.com
[쿠버네티스 공식 홈페이지 - Volumes]
https://kubernetes.io/ko/docs/concepts/storage/volumes/

profile
정도를 걷는 엔지니어

0개의 댓글