Kubernetes
Kubernetes가 AI 모델의 배포 및 확장을 어떻게 자동화하는지 탐색해 보십시오. 고성능 컴퓨터 비전을 위해 K8s에서 Ultralytics YOLO26을 오케스트레이션하는 방법을 배우십시오.
Kubernetes는 K8s로도 자주 불리며, 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하도록 설계된 오픈소스 플랫폼입니다. 원래 Google에서 개발되었으며 현재 Cloud Native Computing Foundation (CNCF)에서 관리하는 Kubernetes는 클라우드에서 소프트웨어를 오케스트레이션하기 위한 표준이 되었습니다. Artificial Intelligence (AI) 및 Machine Learning (ML)의 맥락에서, 엔지니어링 팀이 distributed training부터 고가용성 프로덕션 추론에 이르기까지 복잡한 워크플로를 관리할 수 있도록 지원하는 핵심 인프라 레이어 역할을 합니다. 하위 하드웨어를 추상화함으로써 Kubernetes는 온프레미스에서 호스팅되든 퍼블릭 클라우드 제공업체를 통해 호스팅되든 관계없이 애플리케이션이 안정적이고 효율적으로 실행되도록 보장합니다.
핵심 아키텍처 및 개념#
핵심적으로 Kubernetes는 노드라고 하는 일련의 워커 기계로 구성된 클러스터 아키텍처에서 작동합니다. 이러한 노드는 containerization 워크로드를 실행하는 반면, 제어 평면은 클러스터의 전반적인 상태를 관리합니다. Kubernetes에서 배포 가능한 가장 작은 단위는 스토리지 및 네트워크 리소스를 공유하는 하나 이상의 컨테이너를 캡슐화하는 "Pod"입니다. 이 추상화는 개발자가 Graphics Processing Units (GPUs)용 특정 CUDA 라이브러리와 같은 종속성을 일관된 환경으로 패키징할 수 있도록 하므로 computer vision 애플리케이션에 매우 중요합니다. Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE)와 같은 주요 클라우드 서비스는 이 아키텍처의 관리형 버전을 제공하여 데이터 과학 팀의 유지 관리 부담을 단순화합니다.
AI를 위해 Kubernetes가 중요한 이유#
Machine Learning Operations (MLOps)에서 Kubernetes의 주요 가치는 동적 워크로드를 처리하는 능력에 있습니다. AI 모델은 종종 학습 중에는 막대한 연산 능력이 필요하고 배포 중에는 낮은 inference latency가 필요합니다.
- 확장성: Kubernetes는 리소스를 자동으로 조정하기 위해 오토스케일링을 채택합니다. 트래픽이 갑자기 급증하는 경우, Horizontal Pod Autoscaler는 수동 개입 없이 scalability를 유지하기 위해 추론 파드 수를 늘릴 수 있습니다.
- 리소스 최적화: 고가의 하드웨어를 효율적으로 할당하는 것은 매우 중요합니다. Kubernetes는 부분 GPU 공유와 노드 어피니티(node affinity)를 가능하게 하여 딥러닝 모델이 활성 작업에서 필요할 때만 리소스를 소비하도록 보장합니다.
- 안정적인 배포: model deployment 중 고가용성을 보장하는 것은 필수적입니다. 노드에 장애가 발생하면 Kubernetes는 정상적인 노드에서 영향을 받은 파드를 자동으로 다시 시작하여 중요한 API 서비스의 가동 중지 시간을 방지합니다.
실제 애플리케이션 사례#
Kubernetes는 다양한 산업 전반에 걸친 대규모 AI 구현의 중추 역할을 합니다:
-
스마트 도시 교통 관리: 지자체는 Ultralytics YOLO26 모델을 배포하여 수천 개의 교차로에서 수집되는 비디오 피드를 분석할 수 있습니다. Kubernetes를 사용하면 시스템이 출퇴근 시간에 리소스를 동적으로 확장하여 증가된 object detection 부하를 처리하고 야간에는 규모를 축소하여 비용을 절감할 수 있습니다. 이 접근 방식은 현대 traffic management systems의 핵심입니다.
-
이커머스 개인화: 온라인 소매업체는 마이크로서비스를 기반으로 구축된 복잡한 recommendation systems를 활용합니다. 하나의 서비스가 후보 생성을 처리하는 동안 다른 서비스는 재순위 조정을 관리할 수 있습니다. Kubernetes는 이러한 개별 서비스를 오케스트레이션하여 팀이 전체 쇼핑 경험을 방해하지 않고 랭킹 neural network를 독립적으로 업데이트할 수 있도록 지원하며 지속적인 통합을 용이하게 합니다.
Kubernetes와 Docker의 차이점#
흔히 오해하는 부분은 Kubernetes와 Docker의 관계입니다. 이들은 경쟁자가 아니라 상호 보완적인 기술입니다. Docker는 개별 컨테이너를 생성하고 실행하기 위한 도구(애플리케이션 패키징)인 반면, Kubernetes는 여러 기기에 걸쳐 이러한 컨테이너의 집합을 관리하기 위한 도구입니다. Docker를 사용하여 model weights와 코드를 이미지로 빌드한 다음, Kubernetes를 사용하여 해당 이미지의 복제본이 프로덕션에서 언제, 어디서, 몇 개나 실행될지 결정합니다.
예시: 컨테이너화를 위한 추론 스크립트#
Kubernetes에 모델을 배포하기 위해 개발자는 일반적으로 컨테이너의 진입점 역할을 하는 Python 스크립트로 시작합니다. 다음 코드는 Ultralytics YOLO26 모델을 사용한 간단한 추론 작업을 보여줍니다. 이 스크립트는 파드 내부에서 실행되며 들어오는 요청을 처리합니다.
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")도구 및 생태계#
Kubernetes 생태계에는 데이터 과학에 특화된 다양한 도구가 포함되어 있습니다. Kubeflow는 Kubernetes에서 ML 워크플로의 배포를 간단하고 이식성 있으며 확장 가능하게 만드는 데 전념하는 인기 있는 툴킷입니다. 클러스터 상태와 애플리케이션 지표를 모니터링하기 위해 엔지니어는 종종 Prometheus에 의존합니다. 이러한 환경으로 모델을 학습하고 배포하는 복잡성을 더욱 단순화하기 위해 Ultralytics Platform은 데이터셋 관리와 모델 학습을 자동화하는 통합 인터페이스를 제공하여 사용자가 cloud computing 클러스터용 준비된 모델을 내보낼 수 있도록 합니다. 또한 Helm과 같은 패키지 매니저는 재사용 가능한 차트를 통해 복잡한 Kubernetes 애플리케이션을 관리하는 데 도움을 줍니다.






