매직코드
article thumbnail
Published 2022. 1. 5. 14:22
3. MLOps와 쿠버네티스(Kubernetes) MLOps

MLOps를 잘 이용하려면 서로 사용하는 작업 환경에서 동일한 실행 환경을 보장해야하고, 다수의 개발자가 소수의 클러스터를 공유하면서 사용, 삭제, 업데이트 등의 혼란이 이루어지지 않도록 하기위해 컨테이너와 컨테이너 오케스트레이션 시스템이 등장했다.

 

컨테이너란?

마이크로소프트에서는 컨테이너를 애플리케이션의 표준화된 이식 가능한 패키징이라고 정의한다.

머신러닝 모델들은 운영체계나 파이썬 실행환경, 패키지 버전 등에 따라 다르게 동작할 수 있다. 이를 방지하기 위해 머신러닝에 사용된 소스코드와 함께 종속적인 실행 환경 전체를 하나로 묶어서(패키징해서) 공유하고 실행하는 기술을 컨테이너라이제이션(Containerization)이라고 한다. 컨테이너를 공유함으로써 사용자들은 어떤 시스템에서든지 같은 실행 결과를 보장할 수 있게 된다.

 

 

도커란?

도커와 컨테이너를 동일하다고 생각할 수 있지만 그렇지 않다. 위에서 말한 컨테이너라이제이션 기술을 이용해서 만들어진 컨테이너를 띄우거나, 컨테이너 이미지를 만들고 공유하는 것과 같이 컨테이너를 더욱 쉽고 유연하게 사용할 수 있는 기능을 제공하는 도구가 도커다. 도커는 여러 컨테이너 가상화 도구 중에서 쉬운 사용성과 높은 효율성을 가지고 있기 때문에 많이 사용한다.

 

컨테이너 오케스트레이션이란?

오케스트라를 생각해보면 좋을 것 같다. 컨테이너 오케스트레이션은 수많은 컨테이너가 있을 때 컨테이너들이 조화롭게 구동될 수 있도록 지휘하는 시스템이다. 아래와 같은 과정들을 자동화시켜 컨테이너의 상태를 지속적으로 관리하고 운영하는 과정을 조금이나마 쉽게 할 수 있도록 도와준다.

  • 모든 서비스가 정상적으로 작동하고 있는지 모니터링
  • 오류 발생 시 컨테이너의 로그를 확인하여 문제 파악
  • 특정 클러스터나 컨테이너에 작업이 몰리지 않도록 스케쥴링
  • 로드 밸런싱
  • 스케일링 등등

이런 컨테이너 오케스트레이션을 제공하는 곳이 쿠버네티스다.

 

쿠버네티스

컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장 가능한 오픈소스 플랫폼으로 애플리케이션의 자동 디플로이, 스케일링 등을 제공한다. 구글에 의해 설계되었고 현재는 리눅스 재단에 의해 관리되고 있다. 컨테이너 오케스트레이션 시스템의 표준이라고 할 수 있다.

 

  • 서비스 디스커버리와 로드 밸런싱
    DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이너데 대한 트래픽이 많으면 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.
  • 스토리지 오케스트레이션
    로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있다.
  • 자동화된 롤아웃과 롤백
    쿠버네트스를 통해 배포된 컨테이너의 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.
  • 자동화된 빈 패킹(bin packing)
    컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.
  • 자동화된 복구
    실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하고, '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때 까지 그러한 과정을 클라이언트에 보여주지 않는다.
  • 암호화와 구성관리
    암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있다.

쿠버네티스에 대한 더 자세한 내용은 쿠버네티스 공식 문서에서 확인할 수 있다.

 

 

profile

매직코드

@개발법사

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!