charminseok
[쿠버네티스] 쿠버네티스 소개 본문
MSA 이전에는 소프트웨어 애플리키이션이 하나의 프로세스 또는 몇 개의 서버에 분산된 프로세스로 실행되는 모노리틱 시스템이였다. 이런 시스템은 업데이트가 비교적 느리고 전체 패키지를 빌드하고 배포 후 모니터링한다. 문제가 생기면 사용 가능한 서버로 직접 마이그레이션한다.
이런 거대한 모노리틱 서비스는 마이크로서비스라는 독립적으로 실행되는 더 작은 요소로 분리된다. 마이크로서비스로 분리되어 개별적으로 개발, 배포, 업데이트, 확장이 가능하다. 하지만 마이크로서비스들이 점점 늘어나 유지 관리하는데 어려움이 생겨 배포, 구성, 관리, 장애처리를 자동화 하는 쿠버네티스가 나온 것이다.
쿠버네티스는 하나의 거대한 컴퓨팅 리소스를 제공해 각 구성 요소를 쉽게 관리할 수 있어 실행하는 모든 애플리케이션을 알 필요가 없다.
쿠버네티스가 필요한 이유
- MSA 전환
- 마이크로서비스로 애플리케이션 분할
- 마이크로서비스 배포
- 환경 요구사항의 다양성
- 일관된 환경 제공
- 지속적인 배포
컨테이너
가상머신을 사용하면 고유한 운영체제 인스턴스를 격리시켜 실행할 수 있다. 하지만 마이크로서비스의 수가 늘어나기 시작하면서 모든 서비스마다 가상요소를 제공할 수 없게 되었다. 그렇기 때문에 나온 해결방법이 가상머신 대신 리눅스 컨테이너 기술이다. 컨테이너는 동일한 호스트에서 여러 서비스를 실행할 수 있으며 서로 다른 환경을 만들어 준다. 또한 가상머신처럼 격리되지만 오버헤드가 적다.
컨테이너에서 실행되는 프로세스는 호스트 운영체제와 동일한 환경에서 실행되지만(가상머신은 각각 별도의 운영체제를 실행한다.), 각 컨테이너의 프로세스는 다른 프로세스와 격리되어 있다.
각 가상머신이 자체 커널을 실행해 완전히 격리했지만 컨테이너는 모두 동일한 커널을 호출해 보안 위험이 발생할 수 있다. 그럼에도 각 OS를 실행시키는 가상머신에 비해 더 적은 리소스를 사용하는 컨테이너는 더 많은 수의 격리된 프로세스를 실행할 수 있는 장점이 있다.
컨테이너 격리
컨테이너를 격리하는 방법은 크게 두가지가 있다.
- 리눅스 네임스페이스
- 리눅스 컨트롤 그룹
리눅스 네임스페이스는 특정 프로세스의 리눅스 리소스 접근을 제어하기 위해 사용되는 기능입니다. 프로세스는 동일한 네임스페이스 내에 있는 리소스만 접근할 수 있다. 이런 점을 바탕으로 추가로 네임스페이스를 생성해 프로세스를 격리하는 것이다.
리눅스 커널 기능인 cgroups로 격리된 컨테이너는 가용 리소스를 제한한다. 프로세스는 설정된 리소스 이상을 사용할 수 없어 다른 프로세스에게 할당된 리소스를 뺏어올 수 없다.
도커
도커는 컨테이너를 여러 시스템에 쉽게 이식 가능하게 하는 최초의 컨테이너 시스템이다.
애플리케이션, 라이브러리 등을 컨테이너에 담아 패키징해준다. 이렇게 패키징된 애플리케이션은 도커가 있는 완전다른 운영체제에서도 똑같이 실행할 수 있다.
가상머신에 운영체제를 설치하고 그 안에 애플리케이션을 설치한 후 가상머신 이미지를 배포 실행하는 가상머신 이미지를 만드는 것과 비슷하지만, 도커는 가상머신 이미지를 사용하지않고 컨테이너 이미지를 사용해 더욱 가볍다.
도커 기반 컨테이너 이미지는 여러 이미지에서 공유되고 재사용 될 수 있는 레이어로 구성되어 있어 동일한 레이어가 있는 경우 다른 컨테이너 이미지를 실행할 때 다운로드하지 않고 그대로 사용한다.
이미지: 애플리케이션과 환경을 패키지화한 것
레지스트리: 도커 이미지를 저장하는 저장소(ex.도커허브)
컨테이너: 도커 기반 컨테이너 이미지에서 생성된 리눅스 컨테이너
도커는 이미지 레이어로 구성되어 있기 때문에 서로 다른 이미지에 동일한 레이어가 포함될 수 있다. 이렇기 때문에 이미지를 전송할 때 이미 있는 이미지 레이어는 전송할 필요가 없다. 또한 동일한 기본 레이어를 사용해도 해당 레이어를 덮어쓰면 다른 컨테이너에서는 해당 변경사항을 볼 수 없다. 이미지 레이어가 읽기 전용이기 때문에 컨테이너를 격리해 실행할 수 있다.
'쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 볼륨 (0) | 2022.11.07 |
---|---|
[쿠버네티스] 서비스 (0) | 2022.10.30 |
[쿠버네티스] 레플리카 컨트롤러 (1) | 2022.10.13 |