Tencent Cloud Resources
텐센트 클라우드의 다양한 소식과 기술 문서 및 정보를 확인하실 수 있습니다.
Tencent Kubernetes Engine을 이용한 고가용성 아키텍처 구성하기
1. 개요
이번 연재에서는 Tencent Kubernetes Engine에 대해 알아보려고 합니다.
먼저 서비스 아키텍처에 대해 간단히 설명 드린 후 TKE에 대해 설명 드리도록 하겠습니다.
2. 모놀리식 아키텍처란?
전통적인 서비스 아키텍처에서는 애플리케이션을 하나의 모듈로 구성하였습니다. 이를 모놀리식 아키텍처 (monolithic architecture)라고 부릅니다.
모든 기능이 단일 모듈에 포함되어 있어 개발에 용이하며 애플리케이션을 한 번에 배포할 수 있어 편리한 구성이지만 일부 기능만 수정하기 어렵고, 장애 발생 시 전체가 마비될 수 있는 위험이 있는 아키텍처였습니다.
3. MSA 아키텍처란?
이런 단점을 해결하기 위한 것이 애플리케이션을 작고 독립적인 단위로 나누는 MSA (Microservice Architecture) 구성입니다. 애플리케이션을 작은 컨테이너 단위로 나누면서 특정 기능에 대한 변경 사항을 쉽게 적용할 수 있고, 유지 보수가 필요할 때도 전체를 수정할 필요 없이 작은 단위로 작업을 수행할 수 있는 장점이 있습니다. 이처럼 컨테이너는 MSA 구성에서 매우 중요한 역할을 합니다.
4. MSA 구현을 위한 Kubernetes
이런 컨테이너를 쉽고 편리하게 관리하고 운영하기 위한 것이 바로 Kubernetes입니다. Kubernetes는 컨테이너화된 애플리케이션을 관리하고, 배포, 확장, 롤링 업데이트, 스케줄링, 모니터링 등의 기능을 제공하여 MSA 아키텍처를 더 체계적으로 간편하게 관리할 수 있게 해주는 도구입니다.
5. Kubernetes 작동 원리
먼저 사용자는 마스터 노드를 통해서 각 노드에게 작업을 지시합니다. 마스터 노드는 API server를 통해 각 노드에 필요한 리소스를 구성하도록 명령하며, 장애가 발생하거나 추가 리소스가 필요한 경우 새로 생성하는 등의 작업을 자동으로 수행합니다. 사용자는 마스터 노드를 통해 각 노드들에게 명령을 내리고 이 과정에서 서비스가 잘 돌아갈 수 있게끔 마스터 노드가 자동으로 클러스터를 관리하는 것입니다.
6. Controlplane (마스터 노드)
사용자의 명령을 받아서 수행하거나 Kubernetes 클러스터의 정보를 보관하는 핵심 기능을 수행합니다.
- kube-apiserver : 클러스터 관련 모든 요청을 처리하는 핵심 요소로서 사용자의 요청을 받아 API 형태로 다른 구성 요소에게 전달합니다.
- etcd : Kubernetes 클러스터의 상태를 저장하는 분산형 Key-value 저장소로, 마스터 노드와 모든 노드에 걸쳐 데이터를 동기화하고, 클러스터의 모든 구성 요소가 동일한 상태를 공유할 수 있도록 합니다.
- kube-scheduler : 원하는 애플리케이션을 적절한 노드에 분배 (스케줄링)하는 역할을 수행합니다.
- controller : 각종 서비스의 Desired state (원하는 상태)와 현재 상태를 지속적으로 파악합니다.
멱등성의 원칙에 따라 만약 현재 상태가 원하는 상태와 다를 경우 이를 수정하기 위한 작업을 자동으로 수행합니다.
7. Node (워커 노드)
마스터노드의 요청을 받아서 실제 애플리케이션을 구동합니다.
- kubelet : 각 노드에서 마스터 노드의 요청을 실제로 수행합니다.
- kube-proxy : 노드 내에서 실행되는 컨테이너 간 통신을 책임집니다.
8. 클라우드 기반 완전 관리형 쿠버네티스 솔루션 : TKE
이처럼 Kubernetes를 본격적으로 구성하기 위해서는 마스터 노드, 워커 노드를 구축하고 노드 간 통신을 구성하는 등 확인할 사항이 많습니다. 이렇게 복잡한 쿠버네티스 클러스터를 클라우드 상에서 쉽게 구성할 수 있도록 해주는 것이 바로 TKE, Tencent Kubernetes Engine입니다. TKE는 Tencent Cloud에서 제공하는 완전관리형 Kubernetes 서비스로서 Kubernetes 클러스터를 쉽게 배포하고 관리할 수 있는 다양한 기능을 제공합니다.
TKE는 컨테이너 단위의 파드에서 CPU, 메모리, 대역 폭 등 컨테이너 지표를 실시간으로 모니터링하여 자동으로 스케일업 또는 스케일다운이 가능할뿐더러 리소스가 부족하거나 넘치는 경우에도 조건에 따라 자동으로 클러스터를 줄이거나 확장하여 클러스터 및 서비스 수준 모두에서 좀 더 유연한 아키텍처를 구성할 수도 있습니다. 또한 기존에 Tencent Cloud의 다른 IaaS 제품을 사용하고 있다면 해당 서비스들과 긴밀하게 연결된 클러스터를 구축해서 비즈니스 컨테이너화를 신속하게 구현할 수 있습니다.
9. TKE의 주요 기능과 장점
TKE의 장점과 주요 기능은 다음과 같이 정리해볼 수 있습니다.
1. TKE 콘솔 및 TencentCloud API를 통한 간편한 관리
터미널에서 kubectl 명령어를 쓰거나 웹 콘솔을 통해 손쉽게 관리할 수 있습니다. 또 Tencent Cloud API를 활용하여 다양한 작업을 자동화할 수 있습니다.
2. 노드 및 컨테이너 리소스의 용이한 관리
클러스터 내의 노드 관리를 자동화하여 노드 프로비저닝, 스케일링, 복구 등을 자동으로 처리합니다. 내장된 모니터링 기능을 통해 리소스 사용률을 지속적으로 모니터링하고 자동으로 스케일링을 수행하여 최적의 성능과 효율적인 리소스 활용을 보장합니다.
3. Tencent Cloud 서비스와의 원활한 통합
다른 텐센트 클라우드 서비스와 통합 서비스를 제공합니다. Cloud Object Storage와 같은 스토리지 서비스와 원활하게 통합하여 데이터 지속성과 확장성을 보장합니다. 또한 VPC, 로드 밸런서와 같은 네트워킹 서비스와 통합하여 서비스 간의 원활한 통신을 관리할 수 있습니다.
4. 강화된 보안
Web Application Firewall (WAF) 및 Virtual Private Network (VPN)과 같은 텐센트 클라우드의 서비스와 통합 서비스를 제공하여 애플리케이션과 데이터를 안전하게 보호합니다.
TKE는 또한 다양한 클러스터 유형을 제공하여 개별 고객 환경에 맞는 다양하고 유연한 서비스 구성이 가능합니다.
TKE에서 지원하는 클러스터의 유형은 다음과 같습니다.
1. 일반 클러스터 (General Cluster)
CVM 인스턴스 클러스터에서 애플리케이션을 쉽게 실행할 수 있습니다.
일반 클러스터는 다양한 애플리케이션을 지원하며, 유연한 실행 환경을 제공합니다.
2. 서버리스 클러스터 (Serverless Cluster)
노드를 구매하지 않고 워크로드를 배포할 수 있는 즉시 사용 가능한 TKE 서비스입니다.
서버리스 클러스터는 애플리케이션 배포를 간소화하여 개발자들에게 편의성을 제공합니다.
3. 엣지 클러스터 (Edge Cluster)
IDC Kubernetes 클러스터를 엣지 노드로 확장하고 리소스와 관리 기능을 제공합니다.
엣지 클러스터는 다수의 데이터 센터에서 노드를 관리하며, 한 클러스터로 모든 엣지 서버에 애플리케이션을 배포할 수 있습니다.
4. 등록 클러스터 (Registered Cluster)
로컬 인프라나 다른 클라우드 공급업체의 Kubernetes 클러스터를 TKE에 등록하여 통합 관리할 수 있는 기능을 제공합니다.
등록 클러스터를 통해 기존 인프라를 유지하면서 TKE의 편리한 관리 기능을 활용할 수 있습니다.
10. 결론
TKE는 Kubernetes 클러스터를 쉽게 구성할 수 있도록 도와주며, 클라우드, 온프레미스, 하이브리드 환경에서 모두 사용할 수 있습니다. 또한 사용자의 요구에 맞는 다양한 클러스터 유형을 제공하여 더 유연한 서비스 구성을 가능케 합니다. 이처럼 Tencent Cloud TKE (Tencent Kubernetes Engine)는 기업이나 조직이 클라우드 환경에서 컨테이너화된 애플리케이션을 운영하고 관리하는 데 매우 강력한 도구입니다.
이러한 TKE의 장점들을 활용하여 안정적이고 고도화된 Kubernetes 클러스터를 구성해보시길 바랍니다.
Tencent Kubernetes Engine에 대한 자세한 내용 [바로가기]