Search
Duplicate

CH1. 쿠버네티스란?

목차

쿠버네티스란?

컨테이너화된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼
여기서 우리가 주목해야 할 키워드는 컨테이너화된 애플리케이션이다. 이게 무엇이길래 효율적으로 배포및 운영하기위한 플랫폼(쿠버네티스)이 존재하는걸까?
컨테이너화된 이라는 접두사를 빼고 보면 애플리케이션은 많은 사람들이 사용하는 게임, 음악, 쇼핑, SNS 등을 의미한다. 일상에서 수시로 사용되고, 경쟁 애플리케이션이 범람하는 가운데 점차 중요해지는 부분이 지속적 통합(CI)지속적 배포(CD)다. 컨테이너 기술은 이러한 요구사항에 효과적인 대안을 제시한다.
컨테이너 기술은 애플리케이션 실행이 필요한 라이브러리나 운영체제 패키지 등을 모두 담아 불변의 실행 환경(Immutable Infrastructure)을 만드어 개발자들 간의, 그리고 테스트와 운영 환경 간의 차이를 없애서 생산성을 높히고, 애플리케이션 정식 서비스를 안정적으로 배포할 수 있게 된다.
이러한 컨테이너화된 애플리케이션의 엔드 유저는 스마트폰을 사용하는 일반 사용자가 될 수도 있으므로, 수십 명에서 수백만 명의 규모까지 대응 가능한 확장성과 가용성이 요구된다. 이러한 요구를 만족시킬 수 있는 업계 표준 플랫폼으로 기대를 받는 것이 쿠버네티스다.

참고: CI(Continuous Intergration)/CD(Continuous Delivery)

:지속적 통합(CI)는 소프트웨어 개발 시 테스트 단계뿐 아니라 일상적으로 빌드와 테스트를 수행하여 실제 동작을 확인하는 사이클을 돌며 소프트웨어 품질을 관리하는 것으로 일반적으로 CI를 위한 전용 소프트웨어나 SaaS를 이용하여 자동화한다.
지속적 배포(CD)는 CI의 범위를 확장하여 통합 테스트를 위한 스테이징 환경에 배포, 그리고 정식 서비스 배포까지 자동화 도구를 사용하여 수행하는 것을 말한다.

개요

제공하는 기능

쿠버네티스는 구글의 사내 운영 시스템인 Borg를 오픈 소스로 만든 것으로, 다음과 같은 기능들을 제공한다.
배포 계획에 맞춰 애플리케이션을 신속하게 배포할 수 있다.
컨테이너 개수, CPU 사용률, 메모리 사용량 설정 가능
저장 공간, 네트워크 접근 제어, 로드밸런싱 기능 설정 가능
가동 중인 애플리케이션을 스케일 업/다운할 수 있다.
요청이 많을 때는 컨테이너 수를 늘려서 처리 능력을 높임
요청이 적을 때는 컨테이너 수를 줄여 자원 점유율이나 요금을 줄임
새로운 버전의 애플리케이션을 무중단 업그레이드할 수 있다.
하드웨어 가동률을 높여 자원 낭비를 줄인다.

특징

다양한 환경에서 쿠버네티스 사용 가능
퍼블릭 클라우드
고객들 간 공유하는 대신 저렴하고 신속한 운영이 가능한 인프라 환경
프라이빗 클라우드
독점적으로 사용하여 보안을 높일 수 있는 인프라 환경
멀티 클라우드
여러 퍼블릭 클라우드를 함께 사용하는 경우
하이브리드 클라우드
온프레미스와 퍼블릭 클라우드를 함께 사용하는 경우
온프레미스
자사 설비를 이용해 애플리케이션에 특화된 운영을 하는 경우
계속되는 변화를 전제로 설계된 높은 유연성과 확장성
마이크로 서비스화된 애플리케이션에 최적화된 실행 환경
느슨한 결합에 의한 유현성, 교체 용이성
다양한 스펙의 서버가 혼재하는 클러스터 구성에 사용 가능
서버(노드)의 정지,추가,제거가 용이
저장소나 로드밸런서의 동적 프로비저닝
퍼블릭 클라우드 API와 연동한 쿠버네티스 조작
고가용성과 성능 관리
서버 정지 시 애플리케이션 재배포 자동화
애플리케이션의 이상 종료 시 자동 재기동
필요한 인스턴스의 갯수를 유지
높은 부하에서 자동 스케일

쿠버네티스가 해결하는 문제들

도커와 쿠버네티스를 이용해 CI/CD를 이용하면, 다음과 같은 문제들을 해결할 수 있다.

1. 애플리케이션의 빈번한 출시

개발시점에선 여러 요구사항들을 반영하기 위해서