본문 바로가기
컨테이너/쿠버네티스

[EKS] AWS EC2 EBS(Disk) I/O 사용률에 따른 쿠버네티스 서비스 지연

by sangyeon 2023. 7. 6.
728x90

EKS 클러스터 내, Disk I/O를 많이 유발하는 SW가 있다.

예를 들어, Daemonset으로 배포되어 있는 Fluentd 같은 서비스들이 EC2 노드 자원에 Disk I/O를 많이 사용하게 되는 경우

EBS IOPS 3000 기준에 자원이 부족하여 노드 내 kubelet에서 통신이 지연되어 전체적인 서비스 지연으로 이어질 수 있다.

 

아래 내용은 EBS Disk I/O의 과도한 사용으로 인한 Kubernetes 관점에 서비스 영향도를 나열해보았다.

 

ⅰ) 노드 성능저하

EBS 디스크 IO 사용률이 높으면 EC2 노드에서 지연 시간과 리소스 경합이 증가할 수 있다.

이는 노드의 전반적인 성능에 영향을 미치고 노드에서 실행되는 모든 Pod의 응답시간이 느려질 수 있다.

 

ⅱ) Pod 스케쥴링 지연

Disk IO 사용률이 높으면 EC2 노드의 Pod 스케쥴링에 영향을 줄 수 있다. Kubernetes 스케쥴러는 Pod를 배포할 위치를 결정할 때, 리소스 사용률을 포함한 다양한 요소를 고려한다. 노드에서 EBS 디스크 IO 사용률이 높을 경우 스케쥴러는 리소스를 사용할 수 있을 때까지 해당 노드에서 추가 Pod를 지연시키거나 예약하지 못할 수 있다.

 

ⅲ) Pod 제거 또는 리스케쥴링

극단적인 경우 Disk IO 사용률이 높으면 Pod 제거 또는 리스케쥴링이 트리거 될 수 있다.

Kubernetes는 클러스터의 안정성을 유지하기 위해 제거 정책을 사용하는데, 디스크 IO를 포함한 Pod의 리소스가 가용성을 보장하기 위해 Pod를 제거하거나 리스케쥴링 할 수있다.

 

ⅳ) 응답이 없거나 불안정한 Pod

EBS의 Disk IO 사용률이 너무 높아져서 인프라의 제한을 초과하면 응답하지 않거나 불안정한 Pod가 발생할 수 있다. IO 경합이 높으면 IO 오류, 지연시간 증가 및 Pod내 성능 저하가 발생할 수 있다.

 

ⅴ) 클러스터 Autoscaling에 영향

클러스터 Autoscaling의 매커니즘은 리소스 사용률 메트릭을 사용해 클러스터를 확장하거나 축소하기를 결정하는데, Disk IO 사용률이 높을 경우 리소스 사용률 메트릭 정보가 부정확해지고 Auto Scaling 결정에 영향을 줄 수 있다. 

 

위와 같이 EBS Disk IO 사용률로 인한 클러스터 영향을 완화하기 위해서는 Disk IO 메트릭을 모니터링이 필요하다 (노드/Pod 레벨)

이를 통해 IO 사용률이 높은 노드 혹은 Pod를 식별하고 사전에 예방할 수 있도록 조치를 취해야 한다.

 

일반적인 서비스 Pod에서는 사실 노드에 많은 양의 Disk IO를 유발하지는 않을 것이다.

일반적으로 서비스 Pod에서 EC2 내에 남길만한 내용은 dump/ gclog 이외에 개인정보 로그 등이 있을 것이다.

 

 

728x90