쿠버네티스란 무엇인가?

log.yunsik·2022년 3월 4일
0

쿠버네티스란?

프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 한다. 이 문제를 시스템에 의해 처리하는것이 쿠버네티스이다.

쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공한다. 애플리케이션의 확장과 장애 조치를 처리하고 배포 패턴 등을 제공한다.

쿠버네티스 제공기능

  • 서비스 디스커버리와 로드 밸런싱
    쿠버네티스는 DNS를 사용하거나 자체 IP주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이너에 대한 트래픽이 많으면 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.

  • 스토리지 오케스트레이션
    쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재 할 수 있다.

  • 자동화된 롤아웃과 롤백
    쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있고 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다.

  • 자동화된 빈 패킹(리소스 고효율 고집적 사용)
    컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각 컨테이너가 필요로 하는 CPU, RAM을 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.

  • 자동화된 복구
    쿠버네티스를 다시 시작하고 컨테이너를 교체하며 '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고 서비스 준비가 끝날 때 까지 그러한 과정을 클라이언트에 보여주지 않는다.

  • 시크릿 구성과 관리
    쿠버네티스를 사용하면 OAuth 토큰 및 SSH키와 같은 중요한 정보를 저장하고 관리 할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있다.

쿠버네티스 특징

쿠버네티스는 컨테이너 수준에서 운영되기 때문에, PaaS가 일반적으로 제공하는 배포, 스케일링, 로드 밸런싱과 같은 기능을 제공하며 사용자가 로깅 모니터링 및 알람 솔루션을 통합할 수 있다.
하지만 모놀리스식이 아니어서 이러한 기본 솔루션이 선택적이며 추가나 제거가 용이하다. 쿠버네티스는 개발자가 플랫폼을 만다는 구성 요소를 제공하지만, 필요한 경우 사용자의 선택권과 유연성을 지켜준다.

  • 지원하는 애플리케이션 유형을 제약하지 않고 다양한 워크로드를 지원하는 것을 목표로 한다. 컨테이너에서 구동될 수 있다면 쿠버네티스에서도 잘 동작할 것이다.

  • 소스 코드를 배포하지 않으며 애플리케이션을 빌드하지 않는다.

  • 애플리케이션 레벨의 서비스를 제공하지 않는다. 쿠버네티스 상에서 구동 중인 애플리케이션이 Open Service Broker와 같은 이식 가능한 메커니즘을 통해 접근할 수도 있다.

  • 기본 설정 언어/시스템을 제공하거나 요구하지 않는다.

  • 포괄적인 머신 설정, 유지보수, 관리, 자동 복구 시스템을 제공하거나 채택하지 않는다.

  • 쿠버네티스는 단순한 오케스트레이션 시스템이 아니다.
    쿠버네티스는 오케스트레이션의 필요성을 없애준다.
    쿠버네티스는 독립적이고 조합 가능한 제어 프로세스들로 구성되어 있다.
    이 프로세스는 지속적으로 현재 상태를 입력받은 의도한 상태로 나아가도록 한다.
    A에서 C로 어떻게 갔는지 상관이 없다. 중앙화된 제어도 필요치 않다.
    이로써 시스템이 보다 사용하기 쉬워지고, 강력해지며 견고하고, 회복력을 갖추게 되며, 확장 가능해진다.

오케스트레이션의 기술적인 정의는 A를 먼저 한 다음 B를 하고 C를 하는 것과 같이 정의된 워크플로우를 수행하는 것이다.

0개의 댓글