Engineering/MLOps

[MLOps] 02 Kubernetes Basic

iamzieun 2023. 1. 17. 14:36

Kubernetes

  • 컨테이너: 어플리케이션을 실행할 수 있는 환경까지 감싸서 어디서든 쉽게 실행할 수 있도록 해 주는 기술
  • 컨테이너 런타임: 컨테이너를 사용할 때 필요한 도구 (ex. Docker)
  • 컨테이너 오케스트레이션: 컨테이너 런타임을 통해 컨테이너를 정해진 방식에 따라 관리하는 도구
  • 쿠버네티스: 컨테이너 런타임(Docker)을 통해 컨테이너 오케스트레이션을 하는 도구

 

Traditional Deployement vs Virtualized Deployment vs Container Deployment

  • Traditional Deployement
    • 하나의 물리적인 서버에서 여러 개의 애플리케이션을 실행
    • 하나의 물리적인 서버 내에서 각각의 애플리케이션의 리소스 한계를 정의할 수 없기에, 리소스 할당 문제 발생
      • ex. 하나의 애플리케이션이 리소스 전부를 차지하여 다른 애플리케이션의 성능이 저하될 수 있음
  • Virtualized Deployment
    • 하나의 물리적인 서버에서 여러 개의 가상 시스템(VM)을 실행 → VM간의 애플리케이션을 격리
      • VM: 가상화된 하드웨어 상에서 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신
    • 애플리케이션 간의 접근이 제한되므로 일정 수준의 보안성이 제공됨
  • Container Deployment
    • 하나의 물리적인 서버에서 여러 개의 컨테이너를 실행
      • 컨테이너: VM과 마찬가지로 모든 구성 요소를 실행하지만, 애플리케이션 간에 운영체제(OS)를 공유한다는 점에서 VM과 차이점을 가짐

 

Kubernetes Native: Declarative Interface and Desired State

  • Declarative Interface 선언형 인터페이스
    • 수행하고자 하는 일련의 동작을 지시하는 것이 아닌, 도달하고자 하는 상태(Desired state)에 대해 선언
    • ex. 에어컨의 온도를 조절할 때, 온도 조절 방식이 아닌 희망온도만을 요청

 

Kubernetes Cluster Component

  • Kubernetes cluster의 구성
    • 컨테이너화된 애플리케이션을 실행하는 ‘node’의 집합
    • 여러 개의 물리적 서버를 묶어서 가상화 (하드웨어의 소프트웨어화)
    → 물리적으로는 여러 대의 서버가 분리되어 있어도, 사용자의 입장에서는 하나의 컴퓨터를 사용하는 것처럼 여러 대의 서버를 사용할 수 있게 됨
  • control plane
    • 여러 개의 worker node들을 관리하고 모니터링
    • client로부터 요청을 받으면 그 요청에 맞게 worker node를 스케쥴링하여 해당 node로 요청을 전달
  • API server
    • 쿠버네티스 API를 노출하는 쿠버네티스 control plane 컴포넌트
    • 쿠버네티스 control plane의 frond end
  • etcd
    • 모든 cluster 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성·고가용성 key-value 저장소
  • kubelet
    • cluster 각 node에서 실행되는 에이전트
    • pod에서 container가 확실하게 동작하도록 관리