[시작하세요! 도커 & 쿠버네티스] 쿠버네티스의 특징
쿠버네티스의 특징
- 여러 서버에서 컨테이너 관리
- 컨테이너 배포
- 컨테이너간 네트워크 관리
- 컨테이너 부하분산
- 컨테이너 감시
- 컨테이너 업데이트
- 장애 발생 시 자동 복구
이런것들은 어떤 구조로 실현되고 있는 걸까요?
쿠버네티스를 이해할 때 빼놓을 수 없는 키워드로는 선언적 설정 & API 센트릭
이 있습니다.
대부분의 시스템 장애는 어플리케이션 버전업이나 인프라 구성의 변경 등,
시스템의 변화가 트리거가 되는 경우가 많습니다.
쿠버네티스는 시스템이 원래 되어 있엉 할 모습
을 파일에 정의(선언형)하여 장애 발생 시,
원래 있어야 할 모습으로 수습할 수 있습니다.
쿠버네티스의 도입
컨테이너 오케스트레이션 툴을 온프레미스 환경에 도입하려면,
하드웨어 & 네트워크에 관한 지식이 필요합니다.
만약 구축 환경이 클라우드라면 하드웨어 관리에서는 해방되지만,
오케스트레이션 툴, 감시 툴의 사용법이나 시스템 운용, 장애 대처 등 여러 분야에 걸친 인프라 지식이 필요합니다.
일반적으로 클러스터의 구축 및 운용은 기술적 난이도가 높고, 이를 운용하는건 더 어려우며 경험이 필요합니다.
그래서 운용 초기에는 퍼블릭 클라욷가 제공하는 Managed Service를 이용할 것을 권장합니다.
그렇다고 아무 공부도 안해도 된다는 뜻이 아닙니다.
Managed Service의 이용은 클러스터 버전업 & 하드웨어의 Maintanence 작업의 부하를 경감시켜 줄 뿐입니다.
구조를 제대로 이해한 후 이용하면 본업인 개발이나 이미지의 작성, 실행, 테스트, 운용 등에 주력할 수 있습니다.
Managed Services
Amazon EKS
AWS가 제공하는 쿠버네티스 서비스입니다.
사용자는 컨트롤 플레인을 설치하거나 유지보수하지 않고도 클러스터 이용이 가능합니다.
EKS는 IAM과 RBAC을 연동할 수 있습니다.
IAM 엔티티에 RBAC Role을 할당하면 Master에 대한 ACL이 가능하다는 점이 특징입니다.
또, AWS VPC에서 클러스터를 실행하기 위한 독자적인 VPC 보안그룹 및 네트워크 ACL을 사용할 수 있습니다.
Google GKE
구글이 제공하는 쿠버네티스 서비스입니다.
구글은 Gmail이나 Youtube와 같은 자사제공 서비스를 컨테이너로 운용하고 있으며,
그런 운용 노하우를 모두 담은 서비스라는 점이 특징입니다.
클러스터의 Auto Scaling 같은 기능도 갖추고 있습니다.
GKE는 구글이 설계하고 관리하는 Container-Optimized OS에서 실행됩니다.
Microsoft AKS
마이크로소프트가 제공하는 Azure의 컨테이너 서비스입니다.
AWS나 GCP와 같이 클러스터 상의 쿠버네티스 클러스터를 작성 및 운용하는 서비스지만,
빌드 툴이나 CI/CD 파이프라인을 작성하는 서비스, Visual Studio같은 IDE나 에디터와의
심리스 통합 등 개발자용 기능에 더 힘을 쏟고 있는 점이 특징입니다.
또, 컨테이너 배포 지원 툴인 Helm이나 Draft의 개발을 리드하고 있습니다.
쿠버네티스 뿐 아니라 주변 생태계도 주력하고 있어 폭넓은 업종 및 업태에서 쉽게 이용할 수 있습니다.
쿠버네티스의 유스케이스
기존 어플리케이션의 이전
온프레미스 환경에서 실제 운용중인 어플리케이션을 컨테이너로 이전하여 가동할 때, 쿠버네티스를 사용하는 케이스입니다.
기존 어플리케이션으로부터 컨테이너 이미지를 작성하고 컨테이너 레지스트리에서 관리합니다.
단, 컨테이너 기술은 영구 데이터의 관리측면에서 해결해야 할 과제를 안고 있습니다.
그래서 영구데이터는 컨테이너가 아닌 DB 등 외부의 데이터 스토어에서 관리하는 경우가 많습니다.
마이크로 서비스의 운용 관리
마이크로 서비스형 어플리케이션을 운용하고 싶을때 쿠버네티스를 이용하는 패턴입니다.
쿠버네티스가 갖고있는 수평 스케일링, 자가 복구, 부하 분산과 같은 기능을 활용할 수 있습니다.
영구 데이터는 이전 케이스와 같이 외부에서 관리하는게 좋습니다.
IoT Device의 전개와 관리
IoT 분야에서는 몇백에서 몇만이나 되는 IoT Device가 필요합니다.
쿠버네티스를 사용하여 클라우드 또는 온프레미스에서 실행되는 IoT Device에 대해,
필요한 컴퓨팅 리소스를 온디맨드로 제공할 수 있습니다.
덧붙여, IoT Device에 대해 어플리케이션을 배포하여 관리하면 작업 부하를 큰 폭으로 줄일 수 있습니다.
기계학습 모델 트레이닝 패턴
쿠버네티스 활용 목적 중 하나로 컴퓨팅 리소스의 효과적인 활용이 있습니다.
예를 들어 대규모 데이터셋을 사용하는 심층학습의 트레이닝은 파라미터 서버나 분산 학습을 위한 워커노드를 관리해야 합니다.
컴퓨팅 리소스를 많이 필요로 하는 워커노드는 CPU와 같은 고가 하드웨어를 온디맨드로 할당하도록 제어할 수 있습니다.
또 오픈소스인 Kubeflow와 같은 툴을 사용하여 기계학습의 환경을 구축할 수 있습니다.