코드 깎는 PM

MLOps Series #2 - Kubernetes/Minikube 본문

ML Ops/ML Ops Basic

MLOps Series #2 - Kubernetes/Minikube

PM스터 2023. 1. 18. 12:32
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
링크: "https://link.coupang.com/a/bqfD0v

 

MLOps 도입 가이드:기업에서 머신러닝 모델을 가장 효율적으로 운영하는 방법

COUPANG

www.coupang.com


1. Kubernetes

1) 쿠버네티스란? 

Kubernetes 구조도

출처: https://kubernetes.io/docs/concepts/overview/components/

 

쿠버네티스는  컨테이너 런타임(Docker)을 통해 컨테이너 오케스트레이션을 하는 도구이다. 쿠버네티스의 대표적인 특성은 아래와 같다.  

  1. Reproducibility (재생산성): 실행 환경의 일관성 & 독립성
  2. Job scheduling (일정 스케쥴링): 스케줄 관리, 병렬 작업 관리, 유휴 자원 관리
  3. Auto-healing & Auto-scaling: 장애 대응, 트래픽 대응

2) 쿠버네티스를 제공하는 서비스

ML 서비스를 제공하는 기업들은 각기 쿠버네티스를 관리할 수 있는 SaaS 서비스들을 제공한다. 대표적으로 Amazon, Google, Azure에서 제공하는 서비스를 확인하면 아래와 같다. 

  1. Amazon - Amazon EKS 
  2. Google - Google Kubernetes Engine
  3. Azure - Azure Kubernetes Service (AKS) 

3) 쿠버네티스 구조도

자체 제작: Kubernetes 구조도

(1) Pod 란?

  • Pod(파드)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다.
  • Pod는 Stateless 한 특징을 지니고 있다. 때문에 실행시마다 새로운 IP를 할당받으며, 언제든지 삭제될 수 있는 자원이다.
  • 쿠버네티스는 Pod 단위로 스케줄링, 로드밸런싱, 스케일링 등의 관리 작업을 수행한다. 즉, 쿠버네티스 상에서 어플리케이션을 배포하는 경우 Pod 단위로 구성해야 한다는 것을 의미한다.
  • Pod는 Containner를 감싼 개념이라고 말할 수 있다. 
    • 하나의 Pod 는 한 개 이상의 Container로 이루어진다.
    • Pod 내부에서 여러 Container들은 서로 자원을 공유한다.

(2) Deployment 란?

  • Deployment(디플로이먼트)는 Pod와 Replicaset을 관리를 제공하는 단위이다.
  • Deployment는 Self-healing, Scaling, Rollout(무중단 업데이트)의 기능을 담당한다.
  • Deployment 는 Pod을 감싼 개념이라 말할 수 있다.
    • Pod 을 Deployment 로 배포함으로써 여러 개로 복제된 Pod, 여러 버전의 Pod 을 안전하게 관리할 수 있다.

(3) Service 란?

  • Service 는 쿠버네티스에 배포한 애플리케이션(Pod)을 외부에서 쉽게 접근할 수 있도록  추상화한 리소스이다.
  • Service 는 고정된 IP 를 가지며, Service 는 하나 이상의 Pod 과 매칭된다.
  • Pod의 IP가 아닌 Service를 통해서 접근하는 이유는 Pod이 재생성될 때마다 IP를 새로할당 받기 때문에 고정된 IP를 통해 외부에서 쉽게 접근하기 위해서이다.
  • 때문에 Service의 주소로 접근하는 것은 실제로는 Service 에 매칭된 Pod 에 접속하는 것이다.

(4) PV/PVC란?

  • PV/PVC는 stateless 한 Pod에 영구적으로(persistent) 데이터를 보존하기 위해 사용하는 리소스이다.
    • PV = Persistent Volume
      • PV 는 관리자가 생성한 실제 저장 공간의 정보를 담고 있다.
    • PVC = Persistent Volume Claim
      • PVC 는 사용자가 요청한 저장 공간의 스펙 정보를 담고 있다.
  • Docker상에서의 Docker Volume과 같은 역할을 한다. 
  • Pod의 Stateless한 특성으로 인해 Pod내부에서 작성한 데이터는 기본적으로 언제든지 사라질 수 있다. 때문에 보존할 데이터를 Pod 에 PVC 를 mount 하는  방식으로 저장하여 사용하며, PVC를 사용하면 여러 pod 간의 data 공유 또한 가능하다.

2. Minikube 실습

1) Minikube 기본 명령어

# minikube 설치 
$ curl -LO https://storage.googleapis.com/minikube/releases/v1.22.0/minikube-linux-amd64

$ sudo install minikube-linux-amd64 /usr/local/bin/minikube

# minikube 도움말 확인 
$ minikube --help

# minikube 버전 확인
$ minikube version

# kubectl 다운로드 
$ curl -LO https://dl.k8s.io/release/v1.22.1/bin/linux/amd64/kubectl

# kubectl 바이너리를 사용할 수 있도록 권한과 위치를 변경
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# docker driver를 기반을 minikube 실행 
$ minikube start --driver=docker

# minikube 정상작동 확인 
$ minikube status

# kubectl을 활용하여 minikube내 default pod생성 여부 확인 
$ kubectl get pod -n kube-system

# minikube 삭제
$ minikube delete

Reference: 

https://kubernetes.io/ko/docs/concepts/workloads/pods/

https://kubernetes.io/ko/docs/concepts/services-networking/service/

https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/

 

반응형
Comments