emeraldgoose / kubernetes_study

Kubernetes In Action
0 stars 0 forks source link

1장. 쿠버네티스 소개 #1

Open emeraldgoose opened 8 months ago

emeraldgoose commented 8 months ago

1.1 쿠버네티스와 같은 시스템이 필요한 이유

모놀리스 애플리케이션은 하나의 운영체제 프로세스로 실행되기 때문에 하나의 객체로 개발, 배포, 관리되어야 한다. 구성 요소간의 경계가 불분명해지고 상호의존성 제약이 커져 시스템 복잡성이 증가하고 품질이 저하된다. 이런 문제로 인해 모놀리스에서 마이크로서비스로 전환되었다. 그러나 마이크로서비스는 구성 요소마다 서로 다른 서버에 배포되기 때문에 구성 요소가 많아지면 배포 관리가 어려워진다.

emeraldgoose commented 8 months ago

1.2 컨테이너 기술 소개

이러한 문제들로 컨테이너 기술을 이용하여 동일한 호스트 시스템에서 여러개의 서비스를 실행할 수 있고 서로 다른 환경을 만들어줄 뿐만 아니라 가상머신처럼 서로 격리되지만 오버헤드가 훨씬 적은 이점이 있다. 컨테이너는 호스트 OS에서 실행되는 동일한 커널에서 시스템 콜을 수행한다. 컨테이너는 두 가지 메커니즘으로 가능하다. 첫 번째는 리눅스 네임스페이스(namespace)로 각 프로세스가 시스템에 대한 독립된 뷰만 볼 수 있도록 하고 특정 리소스 그룹을 격리하는데 사용된다. 두 번째는 리눅스 컨트롤 그룹(cgroup)으로, 프로세스가 사용할 수 있는 리소스의 양을 제한한다.

도커(Docker)는 컨테이너를 여러 시스템에 쉽게 이식 가능한 패키지로 패키징하는 과정을 단순화한 컨테이너 플랫폼이고 애플리케이션을 패키징, 배포, 실행하기 위한 컨테이너 플랫폼이다. 도커의 중요한 개념은 애플리케이션과 환경을 패키지화한 이미지, 도커 이미지를 공유할 수 있는 레지스트리, 도커 기반 컨테이너 이미지에서 생성된 리눅스 컨테이너인 컨테이너이다.

emeraldgoose commented 8 months ago

1.3 쿠버네티스 소개

쿠버네티스는 컨테이너화된 애플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템이다. 각 호스트에 애플리케이션을 수동으로 배포하지 않고도 이기종 애플리케이션을 실행할 수 있게 한다. 쿠버네티스를 사용하면 기본 인프라를 추상화하고 개발과 운영 팀 모두의 개발, 배포, 관리를 단순화한다. 쿠버네티스를 이용하면 애플리케이션 개발자가 인프라 관련 서비스를 구현할 필요가 없고 운영 팀이 효과적으로 리소스를 활용할 수 있도록 지원할 수 있다.

쿠버네티스는 마스터 노드와 워커 노드로 구성된다. 마스터노드는 전체 쿠버네티스 시스템을 제어하고 관리하는 쿠버네티스 컨트롤 플레인(Control Plane)을 실행한다. 워커 노드는 실제 배포되는 컨테이너 애플리케이션을 실행한다. 컨트롤 플레인은 클러스터를 제어하고 작동시키고 고가용성을 보장할 수 있도록 클러스터 상태를 유지하고 제어하는 여러 요소들로 구성된다. 워커 노드는 애플리케이션을 실행하고 모니터링한다.

쿠버네티스는 다음의 장점을 가지고 있다.