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 이외에 개인정보 로그 등이 있을 것이다.
'컨테이너 > 쿠버네티스' 카테고리의 다른 글
[K8S] 쿠버네티스 네트워킹의 이해 (1) | 2022.12.06 |
---|---|
Pod의 생명주기 (0) | 2022.11.18 |
[K8S] 쿠버네티스 클러스터 조인 실패 시, kube init 재구성하는 방법 (0) | 2021.12.01 |
[K8S] 쿠버네티스를 활용한 3-Tier 컨테이너 환경 구성(NginX/Tomcat/MySQL) (3) | 2021.11.17 |
[K8S] CNI Weave net dial tcp 127.0.0.1:6784: connect: connection refused, failed to clean up sandbox container (0) | 2021.11.03 |