쿠버네티스에서 pod를 배포하여 node에 배치가 될 때, node에 containerd 또는 docker 컨테이너를 저장하는 절대 경로가 있습니다.
해당 절대 경로 disk에 컨테이너 정보와 파일들이 기록과 저장이 됩니다. 또한 컨테이너 내부의 최상단 경로인 / 가 사실상 노드의 /disk_mount_path/containerd or / disk_mount_path/docker 안에서 구성되어 있습니다.
그렇다면 컨테이너가 생성되는 경로의 disk에 많은 컨테이너 또는 데이터를 많이 다루는 컨테이너가 생성이 된다면, 어떻게 될 까요?
disk io 바운더리 내에서 동작하면 문제가 되지 않지만, 바운더리를 초과하면 급격히 속도가 느려집니다.
그렇다면 해결 방법은 무엇이 있을까요?
우선 disk io를 모니터링하는 방법입니다.
sudo apt install sysstat // iostat 설치
// 디스크 상황 관측
iostat -dx 1
-d: 디스크 I/O 통계만 표시.
-x: 확장된 통계(대기 시간, 사용률 등) 포함.
1: 1초 간격으로 갱신.
출력 예시:
Device r/s w/s rkB/s wkB/s await %util
sda 5.0 2.0 50.0 20.0 1.2 10%
r/s, w/s: 초당 읽기/쓰기 요청 수.
rkB/s, wkB/s: 초당 읽기/쓰기 킬로바이트.
await: 요청당 평균 대기 시간(ms).
%util: 디스크 사용률.
활용 팁: 특정 디스크(예: /dev/sda)만 모니터링하려면:bash
iostat -dx sda 1
해결 방안
사실상 disk 자체적인 한계이기 때문에 데이터를 다루는 pod를 동일 디스크에 할당되지 않게 하는게 좋다.
따라서,
1. pod 재배치 및 스케쥴링
2. 스토리지 확장 - pv로 사용 디스크 분리 or 노드에 disk 업그레이드 및 확장 (local path 마운트도 가능하지만 노드 마다 다르기 때문에 pv 추천)
3. application 자체에서 data 활용 최적화
- 배치 처리, 메모리 캐싱, 디스크 인텐시브 작업
ref. 디스크 인텐시브 (grok)
디스크 인텐시브(disk intensive)는 컴퓨팅 용어로, 디스크 I/O(입출력) 작업이 빈번하고 대량의 데이터를 처리하는 워크로드를 의미합니다. 이는 데이터 인텐시브(data-intensive)나 I/O 인텐시브(IO-intensive)와 유사한 개념으로, 애플리케이션이 CPU 계산보다는 데이터 읽기/쓰기와 조작에 대부분의 시간을 소비하는 경우를 가리킵니다.
예를 들어, 빅데이터 분석, 데이터베이스 관리, 머신러닝 모델 훈련 등이 이에 해당하며, 테라바이트나 페타바이트 규모의 데이터를 처리할 때 발생합니다.
주요 특징
- I/O 중심 처리: 컴퓨트 인텐시브(compute-intensive) 워크로드가 복잡한 계산(예: 시뮬레이션, 렌더링)에 초점을 맞춘 반면, 디스크 인텐시브는 데이터 이동과 조작에 중점을 둡니다. 데이터 병렬 접근 방식을 사용해 대규모 데이터를 분산 처리합니다.
- 데이터 배치 최적화: 성능을 높이기 위해 데이터를 저장된 노드에서 직접 처리하여 데이터 이동을 최소화합니다. 분산 파일 시스템(예: Hadoop HDFS)을 활용하며, 노드별로 독립적인 프로세서, 메모리, 디스크를 사용하는 "shared nothing" 아키텍처가 적합합니다.
- 신뢰성과 스케일링: 대규모 클러스터(수백~수천 노드)에서 하드웨어 실패를 대비해 데이터 복제와 중간 결과 저장을 디스크에 수행합니다. 노드를 추가하면 선형적으로 스케일링되지만, 디스크 I/O 속도가 병목이 될 수 있습니다.
- 도전 과제: 데이터 양의 폭발적 증가로 인해 분석 주기를 단축해야 하며, 새로운 알고리즘 개발이 필요합니다. 디스크 작업이 느리기 때문에 고속 스토리지(SSD, 클라우드 스토리지)와 네트워크 대역폭이 핵심입니다.
Hadoop 과 같은 분산 데이터 처리 시스템을 도입 고려해야함...
'K8S' 카테고리의 다른 글
| ETCD 명령어 정리 (0) | 2025.12.08 |
|---|---|
| ETCD 백업과 복원 (0) | 2025.12.08 |
| [K8S] Multi scheduler (0) | 2025.08.21 |
| [K8S] Priority classes (0) | 2025.08.19 |
| [K8S] vs code - kubernetes 에서 spawn kubectl ENOENT 에러 대응 (2) | 2025.07.29 |