DevOps/Kubernetes

[Kubernetes] 쿠버네티스와 도커 : 쿠버네티스와 도커의 차이점, 클러스터 운영체제, 쿠버네티스를 사용하는 이유

Ofglen 2023. 7. 13. 23:34

쿠버네티스(Kubernets, k8s)

여러 서버로 구성된 클러스터 환경에서 여러 개의 컨테이너들을 자동화 배포, 확장, 스케줄링으로 관리하기 위한 컨테이너 오케스트레이션 플랫폼이다.

*오케스트레이션이란 여러 개의 서버 위에서 컨테이너의 라이프사이클을 관리하는 것이다.

여러 노드에 여러 개의 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하고 환경 변수를 설정 등을 통해 컨테이너를 관리한다.

컨테이너들을 여러 서버에 걸쳐 여러 개를 실행시키기 위해 오케스트레이션을 통해 관리한다.

 

 

쿠버네티스의 기능

  • 하드웨어 추상화
  • 컨테이너의 실행 및 배포
  • 컨테이너 이중화와 가용성 보장
  • 컨테이너의 오토스케일링
  • 컨테이너의 스케줄링
  • 컨테이너의 네트워크 설정 관리
  • 컨테이너의 health 상태 모니터링
  • 컨테이너의 설정값 관리

 

 

도커와 쿠버네티스의 차이점

도커는 이미지를 기반으로 컨테이너를 띄우는 것이다. 컨테이너를 띄우기만 할 뿐 컨테이너에 대해 관리해주지 않는다.

쿠버네티스는 컨테이너 오케스트레이션 플랫폼으로 컨테이너들을 관리해 준다.

 

 

클러스터 운영체제

쿠버네티스는 클러스터 운영체제이다. 쿠버네티스는 여러 컴퓨터의 집합으로 이루어진 하나의 거대한 시스템을 추상적으로 제어하는 사용자 인터페이스를 제공하고 컨테이너가 실행될 수 있게 기능을 제공한다.

클러스터는 컨테이너화된 애플리케이션을 관리하고 실행하는 노드(서버)들의 집합이다. 클러스터의 내부 요소들을 제어하는 컨트롤 플레인(Control Plane)과 명령을 전달받고 컨테이너들이 배치되는 워커 노드(Worker Node)로 이루어진다. 통칭 마스터와 워커로 구분한다. 일반 PC에서 사용자가 GUI를 통해 컴퓨터를 제어하듯이 쿠버네티스에서는 kubectl이라는 유저 인터페이스를 통해 쿠버네티스를 제어한다.

*클러스터는 여러 노드(서버)를 연결하여 하나의 시스템처럼 동작하게 하는 컴퓨터의 집합이다.

*운영체제란 CPU, 메모리, 디스크, 네트워크 카드 등의 장치로 구성된 컴퓨터를 물리적 제어 없이 컴퓨터를 활용할 수 있게 인터페이스와 자원을 제공하는 것이다.

클러스터 OS

 

 

컨트롤 플레인(Control Plane)

쿠버네티스 안에서 모든 서버들은 마스터와 워커로만 구분된다. 컨트롤 플레인에는 클러스터 내부 요소들을 제어하는 역할을 수행한다. 마스터에는 쿠버네티스를 운용하기 위한 필수적인 핵심 컴포넌트가 존재한다. 컨트롤 플레인은 kube-apiserver, etcd, kube-scheduler, kube-controller-manager, coreDNS를 포함한다.

 

 

 

워커 노드(Worker Node)

단순히 컨테이너를 실행하는 환경(Container Executor)으로 사용한다.

워커마다 특별한 역할을 맡지 않기 때문에 마스터가 죽지 않는 이상 특정 워커가 수행했던 역할을 나머지 워커들에 맡겨도 문제없다. 컨테이너는 고립화된 가상실행 환경에서 이식성이 높기 때문이다.  

 

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