Generic
OpenEBS - 볼륨(PV)과 노드(Node) 연결 본문
OpenEBS에서 볼륨(PV)과 노드(Node)를 연결하는 과정.
데이터가 어디에 저장되는가(Provisioning), 다른 하나는 파드가 해당 데이터를 사용하기 위해 노드에 어떻게 마운트되는가(Mounting)
대중적인 Local PV Hostpath 엔진을 기준으로 그 연결 메커니즘을 정리
1. 연결의 핵심: Node Affinity (노드 친화성)
OpenEBS Local PV의 가장 큰 특징은 볼륨이 특정 노드에*종속(Bound)된다.
- 정적 연결: OpenEBS는 PV를 생성할 때, 해당 데이터가 실제 존재하는 노드의 정보를 PV 객체 안에 저장. 이를 nodeAffinity라고 부른다.
- 강제 배치: 쿠버네티스 스케줄러는 이 정보를 읽고, 해당 볼륨을 사용하는 파드를 반드시 데이터가 있는 그 노드에만 배치한다.
2. 물리적 연결 과정 (Step-by-Step)
① PVC 요청 및 노드 선택
사용자가 PVC를 생성하면, OpenEBS 컨트롤러는 클러스터 내의 노드 중 하나를 선택한다. (보통 파드가 처음 스케줄링되는 노드를 기준으로 결정)
② 디렉토리 생성 (Hostpath 연결)
선택된 노드의 특정 경로(예: /var/openebs/local/...)에 실제 데이터를 저장할 디렉토리를 생성. 과정에서 Helper Pod가 해당 노드에 잠시 실행되어 mkdir 등의 작업을 수행.
③ PV 생성 및 바인딩
OpenEBS는 생성된 실제 경로와 노드 이름을 기록한 PV를 생성하고, 사용자의 PVC와 연결(Bound).
3. 파드와 볼륨의 최종 연결 (Mount)
실제 파드가 실행될 때 노드와 볼륨이 연결되는 방식.
- Kubelet의 개입: 파드가 배정된 노드의 kubelet이 PV 설정을 확인.
- 마운트 작업: 노드의 실제 경로(Hostpath)를 파드 내부의 컨테이너 경로로 연결.
- 심볼릭 링크/바인드 마운트: 내부적으로는 리눅스의 mount --bind와 유사한 기술을 사용하여, 노드의 디스크 공간을 파드가 자기 것처럼 쓸 수 있게 해준다.
4. 구조 요약표
| 연결 계층 | 연결 도구 | 설명 |
| 논리적 연결 | PVC - PV | 사용자의 요청과 실제 자원을 연결 |
| 위치적 연결 | PV - Node | nodeAffinity를 통해 데이터가 위치한 노드 고정 |
| 물리적 연결 | Node - Pod | kubelet이 노드의 로컬 경로를 파드에 마운트 |
'kubernetes' 카테고리의 다른 글
| k8s 자원 모니터링의 시작: Metrics Server (0) | 2026.04.02 |
|---|---|
| [K8s 트러블슈팅] systemctl restart containerd 실패: Too many open files 해결 (0) | 2026.04.02 |
| PV, PVC, StorageClass (0) | 2026.04.02 |
| StatefulSet의 고유 식별자 (0) | 2026.04.02 |
| edit과 yaml (0) | 2026.03.31 |