# 쿠버네티스 - 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링하기 위한 관리 시스템이다. - 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임워크를 제공한다: - 가령 한 컨테이너가 다운되면 다른 컨테이너를 올려야 하는데, 이를 쿠버네티스가 자동으로 처리해준다. - 서비스 로드밸런싱, 스토리지 오케스트레이션, 롤아웃 및 롤백 자동화, 복구 자동화 등을 제공한다. - 구글이 사내에서 사용하던 [[large-scale-cluster-management-at-google-with-borg]]{Borg}를 오픈소스화한 것이 쿠버네티스이다. ## 배경 ![](https://kubernetes.io/images/docs/Container_Evolution.svg) - 전통적인 배포 시대: 여러 애플리케이션을 하나의 물리 서버 위에서 실행한다. 한 애플리케이션이 리소스를 전부 차지하면 다른 애플리케이션의 성능이 저하되는 문제가 있다. - 가상화된 배포 시대: 하나의 물리 서버에 여러 가상머신(VM)을 실행하고, 그 위에 애플리케이션을 실행한다. 각 VM은 가상화된 하드웨어 상에서 자체 운영체제를 실행하는 하나의 완전한 머신이다. - 컨테이너 배포 시대: 컨테이너는 VM과 비슷하지만 격리 속성을 완화해 애플리케이션간 OS를 공유한다. 컨테이너는 VM보다 가벼우며, 더욱 빠르게 생성/배포할 수 있다. ## 아키텍처 ![](https://kubernetes.io/images/docs/kubernetes-cluster-architecture.svg) - 클러스터(Cluster): 컨테이너화된 애플리케이션을 실행하기 위한 노드의 집합. - 노드(Node): 쿠버네티스 클러스터에 존재하는 개별 머신. 주로 IDC의 물리 머신이나 클라우드의 가상 머신이다. - 파드(Pod): - 쿠버네티스는 컨테이너를 직접 실행하는 대신 파드라는 추상화 단위로 실행한다. - 파드는 노드 안에서 실행되며, 컨테이너는 파드 안에서 실행된다. 애플리케이션은 컨테이너 안에서 실행된다.