
이번 게시물은 호스트에 있는 디렉토리를 파드가 쓰는 hostpath에 대해 작성했다.
다만, 쿠버네티스 공식 문서에서도 아래처럼 여러 차례 경고하듯이,
hostPath는 매우 강력하지만 신중히 사용해야 하는 기능이다.
파드가 호스트 파일 시스템에 직접 접근하거나 수정할 수 있기 때문에,
잘못 설정할 경우 보안 취약점이 발생하거나 시스템 전체 서비스에 영향을 줄 위험이 있다.
따라서 운영 환경에서는 반드시 읽기 전용(readOnly: true)으로 마운트하는 것이 권장된다.


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 하여 배포한다.

상태가 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/