K8S

[K8S] Disk io 바운더리로 인해 데이터 처리 속도 저하

푸른바다거북이14 2025. 8. 26. 23:33

쿠버네티스에서 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