쿠버네티스
쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고 확장 가능한 오픈소스 컨테이너 오케스트레이션 플랫폼이다.
구글에서 프로덕션 워크로드에 15년간 사용된 검증받은, 신뢰성을 가진 상태로 2014년 CNCF를 통해 오픈소스화 했다.
선언적 구성과 자동화를 모두 용이하게 해주고, 크고 빠르게 성장하는 생태계에 매우 유용하게 작용할 수 있다.
컨테이너란
컨테이너는 온프레미스, 클라우드 등 어떤 환경에서도 실핼될 수 있는 애플리케이션 및 같이 동작해야하는 라이브러리, 소프트웨어가 함께 패키징되어있는 실행 단위이다.
예들들면 jar 파일과 jdk 를 패키징하여 컨테이너로 만들 수 있다.
컨테이너가 동작하기 위해서는 호스트 OS 의 기능(커널) 을 활용하여 프로세스를 격리하고 CPU, 메모리, 디스크 공간의 엑세스를 제어하기위해 운영 체제를 가상화 형식을 사용한다.
컨테이너와 VM 의 차이
컨테이너와 VM은 컴퓨터로부터 격리된 환경을 제공하는 유사한 기능을 제공하지만 확장과 이식성에서 큰 차이를 보인다.
VM의 경우 온프레미스, 클라우드 환경 모두 하이퍼바이저를 활용하여 물리적 하드웨어를 가상화한다. 그리고 각각의 VM에는 게스트 OS와 실행될 애플리케이션 및 관련된 라이브러리등을 포함되어야하는 반면
컨테이너는 호스트 운영체제 커널을 공유하고 각각의 컨테이너는 애플리케이션과 관련 라이브러리만 포함되고 VM과 다르게 게스트 OS 가 없으므로 상대적으로 용량이 적다.
컨테이너의 장점
- 경량 - 호스트의 OS 커널을 공휴함으로 각각의 컨테이너마다 게스트 OS 가 필요하지 않아 크기가 작다
- 배포 - 이미지 생성이 상대적으로 쉽고, 온프레미스 및 클라우드 어떤 환경에서도 구동이 된다.
- 이식성 및 플랫폼 독립성 - 컨테이너는 모든 종속 항목들을 자신과 함께 전달하므로, 소프트웨어를 한 번만 작성하면 온프레미스 및 클라우드에 배포를 하여도 환경에 무관하게 수정없이 실행을 할 수 있다.
- 활용도 향상 - CPU 및 메모리 사용을 미세하게 조절 및 스케일링 할 수 있어 마이크로 서비스 아키텍처에서 활용도가 높다.
배포 방식의 발전 과정
- Tranditional Deployment(전통적인 배포)
- 애플리케이션을 물리 서버에서 실행
- 하나의 물리서버에 여러 애플리케이션을 배포할 경우 각각의 애플리케이션에 리소스를 할당할 방법이 없는 문제가 있어 하나의 애플리케이션이 리소스를 과다사용할 경우 다른 애플리케이션에 영향을 끼치는 문제가 발생하고 각각의 애플리케이션에 각각의 물리서버를 배치할 경우 유지 비용이 과다되는 단점이 있다.
- Virtualized Deployment(가상화된 배포)
- 물리서버 또는 클라우드 서버에 격리된 가상환경의 애플리케이션을 실행
- 격리된 환경에서의 애플리케이션은 다른 애플리케이션에 자유롭게 액세스할 수 없어 어느정도의 보안 제공
- 리소스를 애플리케이션별로 할당할 수 있어 하나의 서버에 여러 가상환경을 실행할 수 있어 비용절감
- 하지만 VM의 OS 환경 및 리소스할당 등 구동을위해 Hypervisor 가 필요하고 각각의 VM 마다 OS가 포함되어있어 용량과 할당되는 리소스가 크다는 단점이 있다.
- Container Deployment(컨테이너 배포)
- VM과 유사하게 격리된 애플리케이션의 환경을 실행할 수 있으나 VM과는 다르게 호스트 OS의 커널을 공유하함으로 인해 더 적은 용량 맟 리소스로 배포가 가능하다.
- 더 적은 용량과 사용 리소스는 확장 및 이식의 이점이 있고 이러한 이점을 통해 마이크로서비스 아키텍쳐 구성에 유리
- 호스트 OS 의 공유로 인해 특정 컨테이너가 OS 자체에 문제를 유발하는 경우 시스템 전체에 영향이 갈 수 있다.
오케스트레이션
컴퓨터 시스템, 애플리케이션, 서비스의 자동화된 설정, 관리, 조정을 의미한다.
자동화와 비슷한 의미로 볼 수 있지만 서로 다르다
일반적으로 자동화란 단일 태스크의 자동화를 의미하고,
오케스트레이션은 여러 다른종류의 프로세스 또는 워크플로우를 자동화하는 방식을 뜻한다.
프로세스를 자동화하면 이를 자동으로 실행되도록 오케스트레이션할 수 있다.
컨테이너 오케스트레이션
컨테이너 오케스트레이션은 오케스트레이션의 의미를 차용해 컨테이너화된 애플리케이션에 대한 자동화된 설정, 관리, 조정을 의미한다.
마이크로 서비스 아키텍쳐를 구현하게 되면 수많은 컨테이너가 배포되게 되고 또 서비스의 성장에 따라 아키텍쳐 또한 스케일링이 필연적으로 따라오게 되어있다.
이러한 환경에서 서버 관리자는 배포, 모니터링, 네트워킹 및 스케일링 등의 관리가 불가능에 가까워질것이다.
이러한 문제를 해결책으로 나온 개념이 컨테이너 오케스트레이션이다.
'K8S' 카테고리의 다른 글
[K8S] 쿠버네티스 기본 개념 - 쿠버네티스를 구성하는 컴포넌트 (0) | 2023.01.10 |
---|