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: 가상화된 하드웨어 상에서 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신
- 애플리케이션 간의 접근이 제한되므로 일정 수준의 보안성이 제공됨
- 하나의 물리적인 서버에서 여러 개의 가상 시스템(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가 확실하게 동작하도록 관리
- Reference