컨테이너 오케스트레이션의 필요성 증대🔺
지난 시간에서는 도커와 컨테이너, 그리고 가상화를 알아보면서, 컨테이너를 효율적으로 이동 관리 배포할 수 있음을 알아보았습니다.
도커의 등장으로 컨테이너 기반 배포 방식이 보편화되고, 많은 서비스들이 도커라이징 되어 이미지로 관리되기 시작했습니다. 하지만 점점 이미지가 많아지면서 관리해야 할 컨테이너와 서버들 또한 많아지게 되는데요, 컨테이너 배포, 오류 등
개발자는 개발 외 작업이 점차 늘어가며, 컨테이너 관리를 자동화할 도구의 필요성이 떠오르게 됩니다. 그렇게 컨테이너 오케스트레이션이라고 불리는 쿠버네티스가 출시하게 되는데요.
이번 콘텐츠에서는 가상화 및 클라우드 컴퓨팅 분야에서 사용되는 컨테이너 오케스트레이션 플랫폼 중 한 가지인 ‘쿠버네티스’와 쿠버네티스 기반 솔루션을 알아보는 시간을 가지겠습니다.
쿠버네티스란(Kubernetes)? K8s 정의
쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동화하고 관리하기 위한 오픈 소스 플랫폼입니다. 이는 독립적인 애플리케이션을 효율적으로 배포, 확장 및 관리할 수 있는 도구를 제공하며, 컨테이너 배치·스케일링·운영 자동화의 목적이 있습니다.
또한, 구글이 십수 년간 방대한 컨테이너를 운영한 경험을 바탕으로 공개한 오픈소스 시스템이며, 외국 웹에서는 줄여서 K8s로 표기하기도 합니다.
쿠버네티스는 단순한 컨테이너 플랫폼이 아닌 마이크로 서비스, 클라우드 플랫폼(CNCF)을 지향하고, 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 하는데요. 서버리스, CI/CD, 머신러닝 등 다양한 기능이 쿠버네티스 플랫폼 위에서 동작하며 오케스트레이션 합니다.
쿠버네티스(Kubernetes), 왜 각광받고 있을까요?
가장 대표적인 이유로는 쿠버네티스(Kubernetes)를 사용하면 컨테이너화된 애플리케이션 환경을 탄력적으로 실행할 수 있게 됩니다.
실제 프로덕션 환경에서는 개발자가 애플리케이션을 실행하며, 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 합니다. 예를 들어, 특정 컨테이너가 다운된다면 다른 컨테이너를 다시 시작하여 가동 중지 시간을 최소화해야 합니다. 하지만 ‘쿠버네티스’는 자동화 시스템을 통해 편리한 관리를 도와줍니다.
기업 내 개발자들은 쿠버네티스(k8S)를 통해 대규모 컨테이너를 자동으로 오케스트레이션 하며, 클라우드 환경에서의 개발을 편하게 만들어주는데요. 이러한 이유 때문에 쿠버네티스를 도입해 사용하려는 기업들이 크게 늘고 있습니다.
*오케스트레이션: 컨테이너 및 사용하는 환경 설정을 관리하는 행위
쿠버네티스(Kubernetes)의 대표적 기능과 장점
"쿠버네티스는 크게 5가지의 기능을 제공하고 있습니다."
✅오토스케일링 및 로드밸런싱
쿠버네티스는 애플리케이션을 쉽게 확장·축소할 수 있는 스케일링 기능을 제공하며, 자동 로드 밸런싱을 수행하여 트래픽을 분산시킵니다.
시스템 자원을 모니터링하고, 사용량에 따라 자동으로 서버의 안정성을 조절을 하는데요. 컨테이너에 대한 트래픽이 너무 많아 부하가 걸리거나 너무 적게 걸려 낭비되지 않도록 다양한 내부 및 외부 밸런스 옵션을 지원합니다.
✅ 자동화 복구
자동 배치, 자동 재시작, 자동 복제 및 자동 확장을 통해 애플리케이션 상태 확인을 진행합니다. 실패한 컨테이너가 있다면, 다시 시작하고 컨테이너 교체를 위해 재 스케줄링 하며, 사용자가 정의한 상태 체크에 응답하지 않은 컨테이너들은 종료시킵니다.
✅ 확장성
다양한 클라우드 환경 및 온프레미스 환경에서 유연하게 확장할 수 있는 플랫폼을 제공합니다. 그 때문에 애플리케이션을 더 용이하게 배포 및 관리할 수 있습니다. 특히 로컬 저장소, AWS나 GCP 같은 퍼블릭 클라우드 공급자 또는 NFS, iSCSI, Ceph, Cinder와 같은 네트워크 스토리지 시스템에서 원하는 스토리지 시스템을 자동으로 마운트 할 수 있습니다.
✅ 빠른 배포 및 롤아웃-롤백
쿠버네티스는 빠른 애플리케이션 배포를 가능케 합니다. 롤링 업데이트, 블루-그린 배포 등의 전략을 통해 애플리케이션을 안정적으로 배포할 수 있습니다. 애플리케이션 또는 앱 설정 변경 시, 이전 버전으로 롤백 또는 일시 중지 및 배포할 수 있고, 모니터링하여 모든 인스턴스가 동시에 종료되지 않도록 보장합니다.
✅ 높은 가용성
쿠버네티스는 멀티-노드 클러스터 아키텍처를 기반으로 하여 데이터 센터 또는 지리적으로 분산된 환경에서 안정적인 서비스 가용성을 보장할 수 있습니다.
다음과 같은 기능들을 통해 개발자는 애플리케이션을 효율적으로 배포하고 관리할 수 있으며 인프라스트럭처에 대한 걱정을 줄일 수 있습니다. 또한 표준화된 운영 환경을 제공하여 애플리케이션을 안정성과 관리를 개선할 수 있습니다.
쿠버네티스 기반의 AI 플랫폼 아스트라고(astrago)
오늘 살펴본 내용과 같이 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 툴로서 많은 컨테이너 관리를 자동화 시켜주고, 가상머신을 활용하는 데 있어서 리소스 활용도를 높여줍니다! 씨이랩에서도 아스트라고(astrago) 솔루션을 통해 AI 머신러닝 개발 환경을 체계화 시킬 수 있는데요.
아스트라고는(astrago) 쿠버네티스(kubernetes)를 기반으로 한 AI 표준 플랫폼입니다. 자원 배분과 관리를 최적화하는 잡 스케줄링 및 모니터링 기능을 제공하여, GPU 서버 인프라를 가장 효율적으로 이용할 수 있게 도와줍니다.
관리자는 AI 인프라 자원의 효율적 관리를 진행할 수 있고, 개발자는 간편한 머신 러닝 개발 환경을 제공받을 수 있습니다. 특히, 조직과 프로젝트의 목적에 맞는 스케줄러를 선택하고 제공받을 수 있어 업무 효율이 극대화되는데요.
🟪GPU 활용 높이는 효율 중심 잡스케줄러
작업에 필요한 최적의 GPU 자원을 최고의 효율로 자동으로 배치하여 리소스 분배를 최적화시킬 수 있습니다. 또한, 사용자가 원하는 잡타입, 이미지 및 리소스, 소스 코드, 데이터 셋, 모델 경로, 파라미터 등을 입력하여 학습이 진행되도록 합니다.
잡 배정 시 가용 자원이 적은 노드부터, 가능한 단일 노드에 배정하여 전체 GPU 사용률이 증가하게 됩니다.
여러 개의 잡을 동시에 작업할 때 효율적인 리소스 분배가 불가하고, 무분별한 유휴 자원이 발생하던 상황에서, 잡 스케줄링 관리 프로세스로 인한 리소스를 효율화 시킬 수 있습니다. 자원 최적화 환경을 제공하니, 학습 효율은 당연히 상승하게 되는 것입니다!
🟪 클러스터 모니터링을 지원
또한 CPU, GPU, 메모리 등 리소스 사용 현황을 클러스터/노드/워크스페이스 별로 제공하는데요. 클러스터에 대한 개괄적인 실시간 현황 정보 제공하고, 쿠버네티스에 대한 상태 정보를 한눈에 차트 형식으로 확인 가능하게 도와줍니다.
해당 기능 덕분에, 관리자 입장에서는 현황 파악이 쉬워지고, 리소스 할당량을 조정할 수 있게 됩니다.
주/월간 클러스터, 시스템 리포트 지원을 하기 때문에 활용 현황과, 사용량 추이 등의 전반적인 데이터도 제공받을 수 있게 됩니다.
오늘은 머신러닝 개발에 있어서 필수가 된 쿠버네티스에 대해서 설명드렸는데요. AI 표준이라고 할 수 있는 쿠버네티스와 아스트라고 솔루션을 통해 개발 프로세스를 체계화 및 안정화 시켜 작업 관리 효율을 높일 수 있는 방법까지 알아보았습니다.
조금 더 나아가, GPU 및 서버를 더욱 효율적으로 이용하기 위해 씨이랩에서는 AI Appliance를 제공하고 있습니다. AI 인프라의 최적화와 편의성을 최우선으로 설계된 제품으로, 고객 맞춤형 제안이 가능한 AI 어플라이언스를 통해 더 효율적인 AI 인프라를 구축해 보세요.
Email: astrago@xiilab.com
TEL: 02-6914-9369
'AstraGo' 카테고리의 다른 글
인공지능(AI) 이미지 분류 종류와 모델의 진화 (0) | 2024.06.30 |
---|---|
작업 스케줄러(job Scheduler)로 알아보는 Kubernetes의 빈패킹(Bin packing) (0) | 2024.06.30 |
가상머신(VM)과 컨테이너의 가상화 기술 (하이퍼바이저/도커) (1) | 2024.06.29 |
한정된 자원을 유동적으로 사용할 수 있는 '도커'와 '컨테이너' (0) | 2024.06.29 |
AI 개발에 파이썬을 주로 활용한다면, ‘주피터 노트북’(Jupyter Notebook) (0) | 2024.06.29 |