공부/k8s

쿠버네티스 - 1. 쿠버네티스란

Dr.thousand 2023. 5. 17. 14:35
728x90

학습목표

컨테이너에 대해 설명할 수 있다.
컨테이너 오케스트레이션에 대해 설명할 수 있다.


 

1-1. 컨테이너

운영서비스는 서버에 어플리케이션을 동작시키는 원리로 이루어져있다.

서비스 운영 서버 구조의 변화 (출처 : https://kubernetes.io)
기존VM방식 구조 (출처 : labs.sogeti.com)

해당 이미지를 보면 인프라위에 하이퍼바이저가 있고 그 위에 게스트OS위에서 어플리케이션을 동작시킨다.

VM구조는 기존에 많이 쓰이던 방식이다.

해당 구조는 별도의 물리적인 시스템처럼 동작하기 때문에, 다른 VM에 영향을 주지 않는다. 그러므로 각 VM별로 다른 운영체재와 어플리케이션을 실행할 수 있다.

하지만 위의 그림처럼 어플리케이션 별 Host Operating System 이 생성되는데 여기서 많은 자원을 사용하게 된다는 단점이 있다.

 

그래서 나오게 된것이 컨테이너 방식이다

Docker 구조 (출처 : labs.sogeti.com)

컨테이너 방식은 기존의 가상머신과달리 컨테이너는 전체 운영체제를 포함하지 않는다. 각 컨테이너는 호스트 운영체제의 커널을 공유하고 , 격리된 사용자 공간을 사용한다.

컨테이너의 구성요소로는 다음이있다.

이미지 : 어플리케이션과 종속성을 포함하는 소프트웨어 패키지이다. 이 이미지는 런타임환경에 대한 설명을 포함하며, 실행방법을 정의한다.

엔진 : 엔진은 이미지를 실행하고 관리한다. 대표적으로 Docker 가 있다.

런타임 : 컨테이너를 실행하는데 필요한 기본적인 기능들 (이미지 패키징, 컨테이너 격리, 네트워크 인터페이스 등)의 설정이 포함된다.

레지스트리 : 컨테이너 이미지를 저장하는 중앙저장소이다. 대표적으로 Docker Hub , Google Container Registry(GCR)가 있다.


1-2. 컨테이너 오케스트레이션

보통의 상용 시스템들은 하나의 서버만 운용하지않는다. 왜냐하면 장애 발생시에 서비스가 중단되지 않도록 하기위해서나 대용량의 트래픽을 분산시키기위해 여러대의 서버를 운영한다. 이 때 컨테이너 방식만을 사용한다면, 여러대의 서버에 수동으로 컨테이너 이미지를 등록해주어야 하는 수고가있다.

그래서 등장한것이 컨테이너들을 관리할 수 있는 컨테이너 오케스트레이션이다. 컨테이너 오케스트레이션을 사용한다면 개발이 완료된 소프트웨어에대해서 관리하고있는 모든 서버(클러스터)에 배포를 할 수있다. 기존처럼 서버마다 이미지를 배포해야할 필요가 없어진것이다.

컨테이너 오케스트레이션은 이렇게 분산된 서버에 대해서 하나로 관리해주고, 여러가지 편의 기능들을 제공한다. 대표적으로 쿠버네티스가 있다.

쿠버네티스는 다음을 제공한다.

아래는 쿠버네티스가 제공하는 기능이다 (출처 : https://kubernetes.io/ko/docs/concepts/overview/)

  • 서비스 디스커버리와 로드 밸런싱 쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.
  • 스토리지 오케스트레이션 쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재 할 수 있다.
  • 자동화된 롤아웃과 롤백 쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.
  • 자동화된 빈 패킹(bin packing) 컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.
  • 자동화된 복구(self-healing) 쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며, '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에 보여주지 않는다.
  • 시크릿과 구성 관리 쿠버네티스를 사용하면 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리 할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있다

 

다음으로는 쿠버네티스의 특징에대해 알아보자

728x90
반응형