본문 바로가기

POST/Tech

운영중인 쿠버네티스 노드, 얼마나 오래되었는지 알고 있나요?

Designed by Sophia

 

‘현재 운영중인 쿠버네티스 노드가 얼마나 오래되었는지 알고 있습니까?’ 라는 질문에 정확히 답을 할 수 있는 사람은 흔치 않을 것입니다. 대부분, 대략적으로는 알고 있지만, 노드 하나하나에 대해 정확히 파악하고 있기는 어렵습니다. 특히 노드의 나이는 클러스터의 성능, 보안 및 안정성에 큰 영향을 미치며 건강하고 효율적인 클러스터를 유지하기 위해 노드의 나이를 아는 것은 매우 중요합니다. 노드의 수명을 파악하고 항상 최신버전으로 유지해야 하는 이유에 대해 확인해 보겠습니다.

 

보안 취약점

수명이 오래된 노드는 최신 보안 패치나 업데이트가 부재할 수 있습니다. 이는 운영중인 인프라가 잠재적인 위협에 노출되는 것을 뜻합니다. 일부 노드그룹은 업데이트 되었지만, 모든 노드가 업데이트 되지 않아 취약점 패치가 이뤄지지 않은 상태일 수 있습니다. 또, 필요한 이미지나 보안 툴 업데이트가 코드에 적용되어 레포 스캐닝 툴을 통해 확인할 경우 모든 취약점이 해결된 것으로 표시되지만, 제대로 롤링되지 않는 노드의 경우 취약점이 남아있을 수 있습니다.

성능 저하

시간이 지나면 메모리 누수, 디스크 용량 초과, 클라우드 업체의 VM 업데이트 우선순위 변경 등으로 인한 소프트웨어 성능 저하를 경함하게 됩니다. 오래된 노드는 신규 노드만큼 성능이 나오지 않거나 느린 응답시간 및 설명되지 않는 애플리케이션 성능 저하를 불러 올 수 있습니다.

신규 기능

쿠버네티스는 매우 빈번하게 업데이트와 릴리스가 이뤄집니다. 정기적인 노드 라이프사이클 정책이 있다면 쿠버네티스의 패치를 최신으로 유지하기 훨씬 쉽습니다.

리소스 최적화

노드의 나이는 자원 배분과 최적화에 영향을 미칩니다. 오토 스케일링 솔루션에 따라 오래된 노드는 새 노드보다 CPU, 메모리, 스토리지 등의 자원 관리 효율성이 떨어집니다. 노드의 나이를 추적하는 것은 워크로드를 적절한 사이즈로 유지하는데 필요한 중요한 정보가 될 수 있습니다.

유지보수 및 안정성

누구나 클러스터를 업데이트 할때마다 난감한 문제가 발견되는 경험이 있습니다. 이런 문제는 업무 부하가 적은 시점에 미리 해결이 가능한 것들입니다. 또, 클라우드 공급업체가 새로운 VM의 물리적 위치에 따라 지속적인 업데이트가 이뤄지기 때문에 오래된 노드일 수록 안정성 문제가 발생할 수 있습니다. 이런 혜택을 누리려면 노드를 최신 상태로 유지해야 합니다. 정기적인 노드 인프라의 교체는 예기지 않은 가동중단의 위험을 줄이고 안정적으로 소프트웨어와 하드웨어를 실행하여 쿠버네티스 클러스터의 안정성이 전반적으로 높아집니다.

 

노드의 수명을 유지하는 방법

모니터링을 통해 주기적으로 릴리스, 테스트와 프로세스를 관리하고, 롤링 방식을 통해 노드와 이미지를 자동 업데이트하여 클러스터 노드가 최신의 안정적으로 실행되도록 합니다. Ansible, Atlantis, Kured, Terraform, Karpenter, Bottlerocket 등 고급 툴을 활용하여 노드 업데이트와 교체 요구사항을 쉽게 처리할 수 있습니다.

 

모니터링을 통해 쿠버네티스 클러스터를 최적의 상태로 유지할 수 있습니다. 모니터링과 관련된 문의 몇가지를 정리해 봅니다.

비용 모니터링

각 워크로드가 얼만큼의 비용을 사용하고 있는지 이해하면 비용을 절감하는 방법을 찾을 수 있습니다. 워크로드 모니터링을 통해 낭비되거나 부족한 자원을 파악할 수 있고, 적절하게 자원을 재할당할 수 있습니다. 정확한 파악을 위해서는 운영되고 있는 워크로드 전체의 비용을 확인해야 합니다.

모니터링 툴 선정

프로메테우스, 그라파나, 데이터독, 페어윈즈 인사이트 등의 툴은 서로 보완이 가능합니다. 프로메테우스, 그라파나, 데이터독은 티어1 모니터링에 집중하며, 애플리케이션이 중단될 가능성이 있는지 등 상태에 대해 모니터링해 줍니다. 페어윈즈 인사이트는 취약점 수정이나 과도하게 프로비져닝된 워크로드의 조정, 환경설정 이슈 등 다양한 정보를 제공합니다.

 

쿠버네티스 플랫폼에 모니터링이 중요한 이유

쿠버네티스 사용여부와 상관없이 모니터링은 중요합니다. 모니터링은 클러스터의 상태를 보여줌으로써 애플리케이션이 정상적으로 동작하는지를 확인해 줍니다.

 

예를 들어, 장애로 인해 사용자가 앱에 접근이 안되고, 분단위로 매출 손실이 발생하는 극단적인 시나리오에 대한 대비가 가능합니다. 

 

이런 경우도 고려해야 합니다. 사용자의 10% 정도만 불편을 경험하는 상황이라면 어떻게 해야 할까요? 사용자는 앱을 사용하지 못하고, 에러 메세지를 받거나 플랫폼이 포화상태가 되어 사용자 경험이 만족스럽지 못한 상황을 담당자는 어떻게 확인할 수 있을까요? 이 모든 상황이 정확한 매트릭스를 설정하지 못하여 사전에 확인하지 못하는 상황입니다. 이런 사용자 경험까지도 고려하여 대응할 수 있도록 준비가 되어 있어야 합니다.

 

그래서, 쿠버네티스에 대한 모니터링 매우 중요합니다. 노드의 상태를 주기적으로 확인하고, 적절한 클러스터 이벤트, 로그 및 트레이스를 수집해야 합니다. 모니터링은 현재의 상태를 정확히 파악하고 개선할 수 있는 방법을 보여줍니다. 더불어, 모니터링과 얼럿 기능이 함께 준비되어야 이슈를 빠르게 해결할 수 있습니다.

 

 

 

원문출처:

How old are your Kubernetes nodes?

Answering your top 9 questions about monitoring in Kubernetes

 

 

 

참고링크: 

[첫번째]쿠버네티스 벤치마크 보고서 2024 — 비용 효율성, 안정성 그리고 보안

쿠버네티스 정책에 대해 누구나 알아야 할 14가지