본문 바로가기

Aastrago

유연한 로드밸런싱을 위한 쿠버네티스 멀티 클러스터 환경과 요건

쿠버네티스클러스터-멀티클러스터
배경 이미지 출처: GTT KOREA

쿠버네티스-kubernetes-컨테이너-쿠버네티스컨테이너
이미지 출처:Vidio

현대 컨테이너 오케스트레이션 분야의 왕좌에 오른 쿠버네티스는 대규모 컨테이너화된 애플리케이션을 빠르고 쉽게 배포하고 확장할 수 있는 장점을 가지고 있어요. 특히, 다양한 인프라 환경에서 툴을 지원하여, 유연하고 효과적으로 애플리케이션을 관리할 수 있게 도와주는데요. 이러한 이유로 기업에서는 쿠버네티스 도입을 매년 증가시키고 있어요. 쿠버네티스를 프로덕션의 규모에 따라 사용하려는 조직은 점점 더 크고 많은 클러스터를 생성하고 있어요.

 

🧑‍💻이때 개발-테스트-프로덕션 등을 위해 환경 전반에 분산된 멀티 클러스터를 효율적으로 관리하는 것이 관건으로 떠올랐어요!

 

오늘은 쿠버네티스의 멀티 클러스터는 무엇인지, 또 멀티 클러스터 환경에서 고려해야 할 점을 살펴보는 시간을 가져보겠습니다 :) 😃


 

쿠버네티스-kubernetes-멀티클러스터-쿠버네티스환경
이미지 출처: ACCORDION

| 쿠버네티스 멀티 클러스터란?

쿠버네티스의 멀티 클러스터(Multi-Cluster)는 여러 개의 독립적 쿠버네티스 클러스터를 하나의 통합된 환경으로 관리하는 방식이에요. 이를 통해 개발, 테스트, 운영 등 다양한 환경에 걸쳐 애플리케이션을 일관되게 배포하고 관리할 수 있어요. 멀티 클러스터는 여러 클러스터를 중앙으로 관리하고 조직적으로 운영할 수 있어, 대규모 애플리케이션을 효과적으로 구축하고 관리할 수 있답니다 :)

 
💡그전에, 쿠버네티스 클러스터(Kubernetes Cluster)가 궁금하신 분들을 위해!


쿠버네티스 클러스터는 애플리케이션 컨테이너를 실행하기 위한 일련의 노드 머신이에요. 쿠버네티스를 실행 중이라면
클러스터를 실행하고 있는 것이죠.
즉, 물리 머신, 가상 머신, 온프레미스, 클라우드에 구애받지 않고 머신 그룹 전체에서
컨테이너를 예약하고 실행할 수 있어,
클러스터는 쿠버네티스의 핵심 장점으로 꼽히고 있어요.


그뿐만 아니라, 쿠버네티스는 원하는 상태에 부합하도록 자동으로 클러스터를 관리해 줘요. 예를 들어 애플리케이션의
복제본 3개가 실행되어야 함을 뜻하는
'3'을 원하는 상태로 하여 애플리케이션을 배포한다고 가정해 볼게요.
이 컨테이너 중 하나가 충돌하면 쿠버네티스는 복제본이 2개만 실행 중임을 확인하고,
1개를 추가하여 원하는
상태를 충족할 수 있어요. 또한 쿠버네티스 패턴을 사용하여 로드에 따라 클러스터 규모를 자동으로 관리할 수도 있어요.

쿠버네티스-kubernetes-컨테이너-쿠버네티스컨테이너-클라우드네이티브
이미지 출처:GTTKOREA

 

| 멀티 클러스터(Multi Cluster)의 이점

다양해지고 복잡해진 쿠버네티스 환경에서는 멀티 클러스터를 활용해 다수 클러스터를 하나의 거대한 클러스터로 연결시킬 수 있어요. 클러스터를 추가해 현재 구성된 아키텍처 변경 없이 쉽게 확장 시킬 수 있는데요!

 

✅ 애플리케이션 가용성 개선

✅ 대기 시간 단축

✅ 재해 복구 개선

✅ 환경 전반에 레거시 및 클라우드 네이티브 애플리케이션 배포

 

다음과 같은 장점 덕분에 기업에서는 멀티 클러스터 이용을 통해 다양한 프로젝트의 사이클을 쉽게 관리할 수 있게 돼요.

 

하지만, 클러스터가 증가하게 되면 될수록, 각 클러스터를 개별적으로 배포 업그레이드 및 설정해야 하는 등 최신의 상태로 유지해야 할 구성요소가 늘어나게 돼요. 단일 배치 환경 내에서 비교적 쉽게 해결할 수 있는 문제도 규모가 커진 멀티 클러스터 환경에서는 더욱 어려워지죠.


 
쿠버네티스-kubernetes-컨테이너-쿠버네티스컨테이너
이미지 출처: Velog
 

이러한 관리의 어려움 때문에 멀티 클러스터를 구축하기 위해서는 다음과 같은 고려 사항이 제공됩니다!

 

• 페더레이션(Federation) 툴: 사용자를 중앙에서 관하고 서비스에 대한 액세스 권한을 관리하는 페더레이티드 클라우드 기술은 지리적으로 떨어져 있는 여러 컴퓨팅 클라우드의 상호 연결을 강화해 복잡한 멀티 클러스터 사용을 쉽게 해결할 수 있도록 지원할 수 있어요.

 

• 연결성(Connected): 페더레이션처럼 적절한 툴을 통해 클러스터 간 상호 연결을 처리하고, 클러스터에 대한 라우팅을 제어하며, 지리적으로 분산된 자원을 로드밸런싱 하고, 여러 클러스터에서 애플리케이션 업데이트를 관리할 수 있어요.

 

• 보안(Security): 보안이 클러스터에 통합되면 분산형 애플리케이션의 보안도 강화될 수 있는데요. 이때 클라우드 네이티브 보안 툴과 프로세스를 채택하면 해결할 수 있어요.

 

• 관찰 가능성(Observability): 배포된 클러스터의 수를 확장하면 오류가 발생할 수 있는 경우의 수도 늘어나기 때문에 관찰 가능성과 상황별 알림이 더욱 중요해져요. 이때 그라파나(Grafana), 프로메테우스(Prometheus) 등 문제를 파악할 수 있는 툴을 갖춘다면, 인프라 상황을 신속하게 파악할 수 있어요.

 

위에서 살펴본 조건처럼, 멀티 클러스터 환경에서는 분산된 자원을 연결하고, 유동적인 수요에 빠르게 대응 가능한 스케일링과 로드밸런싱이 중요해요. 또한, 가지고 있는 클러스터를 더 효율적으로 사용할 수 있는 스케줄링 방식도 필요하게 되죠.

 

이처럼, 더욱 더 원활한 멀티클러스터 환경을 구성하고 쉬운 관리를 위해서 아스트라고(astrago)가 도움을 줄 수 있어요.


 

쿠버네티스 기반의 효율적인 자원 관리 플랫폼 Astrago

 
 
▲  이미지 클릭 시 아스트라고 페이지로 이동 ▲
 

씨이랩에서 제공하고 있는 Astrago는 Kubernetes를 기반으로 한 AI 머신러닝 솔루션으로, 여러분들의 개발 워크로드를 최적화해줄 수 있어요. 특히, 잡스케줄러와 지원 최적화 기술로 GPU 서버 활용률을 극대화하고, 실시간 모니터링과 보고 기능을 통해 인프라 관리의 효율성을 향상시킬 수 있는데요!

 

관리자가 워크 로드를 생성할 때 자원 프리셋을 설정할 수도 있는데요. Small/Medium/Large 등 사용자 만의 기준을 만들어서 그 범주 안에서 자유롭게 사용할 수 있도록 커스터마이징이 가능하답니다 :) ✨

 

아스트라고는 클러스터 환경과 AI 작업에 필요한 최적의 GPU 자원을 자동으로 배치해 주기 때문에, 리소스의 유휴자원 낭비를 최소화해주고, 관리자가 간편한 관리만으로 최대의 인프라 효율을 실현할 수 있는 환경을 제공해 주고 있어요.

 

 

오늘 콘텐츠에서 살펴본 쿠버네티스 멀티 클러스터 환경과 같이, AI 프로젝트에 워크로드 별로 최적화된 환경을 구현하고 싶다면, astrago를 통해 쉽게 시작해보시는 것이 어떨까요?