Zadara의 새로운 Kubernetes 블로그 시리즈에 오신 것을 환영합니다.
이번 시리즈에서는 Zadara 환경에서 Kubernetes를 어떻게 배포하고, AWS 호환 클라우드 상에서 컨테이너 기반 애플리케이션을 어떻게 운영할 수 있는지 살펴볼 예정입니다.
Kubernetes와 컨테이너 오케스트레이션의 기본 개념부터 확장성(Scaling), 복원력(Resiliency), 라이프사이클 관리와 같은 고급 주제까지 폭넓게 다룰 예정이며, 고객 요구사항에 맞춰 zCompute 환경에서 Kubernetes를 배포하고 커스터마이징하는 다양한 방식도 함께 소개합니다.
Kubernetes를 처음 접하는 사용자부터 이미 운영 경험이 있는 엔지니어까지, 이번 시리즈를 통해 Zadara 클라우드 환경에서 컨테이너 워크로드를 효과적으로 운영하기 위한 인사이트와 베스트 프랙티스를 얻을 수 있을 것입니다.
앞으로 이어질 Kubernetes on Zadara 시리즈도 기대해 주세요.
첫 번째 포스트에서는 일반적인 클라우드 환경에서의 Kubernetes와, 특히 Zadara 클라우드에서 Kubernetes를 어떻게 활용할 수 있는지에 대해 집중적으로 살펴봅니다.
이번 글에서는 Kubernetes의 역사, 기능, 운영 전반을 모두 다루지는 않습니다. 그것만으로도 별도의 시리즈가 필요할 정도로 방대한 주제이기 때문입니다.
대신 Kubernetes의 핵심 클라우드 통합 요소들과, 이러한 기능들이 Zadara Compute Cloud(zCompute) 환경과 어떻게 연결되는지에 초점을 맞춰 설명하겠습니다.
Background
Kubernetes는 사실상 컨테이너 오케스트레이션의 표준으로 자리 잡았으며, 흔히 “클라우드의 운영체제(OS)”라고도 불립니다.
이 표현은 Kubernetes가 클라우드의 핵심 서비스와 긴밀하게 연동되면서도, 동시에 클라우드 API를 Kubernetes API로 추상화해 사용자가 인프라 자체보다 애플리케이션 운영에 집중할 수 있도록 만든다는 점을 잘 보여줍니다.
이처럼 클라우드 레벨의 서비스를 Kubernetes 리소스로 추상화함으로써, 사용자는 특정 클라우드 인프라의 세부 구현보다 애플리케이션 요구사항 자체에 집중할 수 있습니다. 이는 멀티 클라우드 전략의 핵심 기반이 되는 기능이며, 단일 클라우드 환경에서도 Kubernetes가 개발자들의 주요 플랫폼으로 자리 잡게 된 이유이기도 합니다.
또한 Kubernetes는 컴퓨트, 로드 밸런싱, 스토리지, 동적 확장(Scaling)과 같은 클라우드 기능을 네이티브하게 통합하고 있기 때문에, 사용자는 클라우드 API를 직접 다루지 않고도 다양한 클라우드 기능을 활용할 수 있습니다.
이번 포스트에서는 잘 알려진 Kubernetes 아티팩트와 업계 표준 배포 도구, 그리고 베스트 프랙티스를 활용해 이러한 기능들을 Zadara 클라우드 환경에서 어떻게 사용할 수 있는지 살펴보겠습니다.
클라우드 환경에서의 Kubernetes
Kubernetes는 단순한 애플리케이션이 아니라 복잡한 플랫폼입니다.
여러 개의 서비스로 구성되어 있으며, 컨테이너 기반 애플리케이션 제공과 운영 전반을 포괄합니다. 따라서 Kubernetes를 제대로 운영하려면 실제 워크로드를 사용하는 데이터 플레인(Data Plane)뿐 아니라 내부 운영과 관리 영역인 컨트롤 플레인(Control Plane)에 대한 이해도 필요합니다.
특히 일반적인 Kubernetes 사용과 달리, 클라우드 환경에서 Kubernetes를 처음 구축할 때는 클라우드 인프라에 대한 깊은 이해와 높은 수준의 권한이 요구됩니다. 이에 따라 클라우드 벤더들은 다양한 수준의 관리형 Kubernetes 서비스를 제공하기 시작했습니다.
또한 Kubernetes는 2016년 Google이 CNCF에 기부한 최초의 클라우드 네이티브 프로젝트였지만, 클라우드 API 통합 방식은 시간이 지나며 크게 변화했습니다.
초기에는 클라우드 통합 기능이 Kubernetes 소스 코드 내부(In-tree)에 포함되어 있었지만, 현재는 클라우드 벤더별 외부 구성 요소 형태로 분리되었습니다.
예를 들어 AWS 관련 기본 지원 기능은 Kubernetes 1.26 버전에서 제거되었으며(다른 클라우드 벤더 지원은 1.29에서 제거), 이제 핵심 클라우드 통합 요소인 CCM(Cloud Controller Manager)은 Kubernetes 핵심 컴포넌트와 별도로 배포해야 합니다.
이러한 변화는 스토리지와 로드 밸런싱 영역에도 동일하게 적용됩니다. 현재는 클라우드 전용 API를 처리하기 위해 별도의 외부 유틸리티가 필요합니다.
그 결과, 클라우드 벤더들은 원본 Kubernetes 프로젝트를 기반으로 자신들만의 배포판(Distribution)을 제공하고 있으며, 바닐라 Kubernetes 아티팩트와 자사 클라우드 전용 도구들을 함께 묶어 보다 최적화된 사용자 경험을 제공하고 있습니다.
AWS 환경의 Kubernetes
사용자들이 오랫동안 AWS 상에서 자체 관리형 Kubernetes 클러스터를 운영해 오던 가운데, Amazon은 2018년 반 관리형 Kubernetes 서비스인 EKS(Elastic Kubernetes Service)를 출시했습니다.
이후 2019년에는 Fargate와 통합하면서 완전 관리형 Kubernetes 서비스 형태로 발전했습니다.
2020년에는 AWS가 EKS에서 사용하는 자체 Kubernetes 배포판인 EKS-D(EKS Distribution)를 오픈소스로 공개했습니다. 이를 통해 AWS 외부 환경에서도 EKS와 유사한 Kubernetes 클러스터를 보다 쉽게 구축할 수 있게 되었습니다.
EKS-D는 AWS Kubernetes 서비스의 기반이 되는 배포판이기 때문에, 이를 활용하면 AWS 내부뿐 아니라 다른 클라우드 환경이나 온프레미스 환경에서도 동일한 Kubernetes 컴포넌트를 실행할 수 있습니다.
다만 AWS 중심 구성 요소들은 AWS API에 의존하기 때문에, 완전한 “EKS와 동일한 경험”은 AWS 클라우드 환경에서만 제공됩니다.
EKS-D에는 AWS에서 직접 검증하고 테스트한 다음과 같은 주요 구성 요소들이 포함됩니다.
- 핵심 컴포넌트(APIServer, ETCD 등)
- 기본 플러그인(CoreDNS, kube-proxy 등)
- CSI 구성 요소(external-provisioner, external-attacher 등)
- CSI 스냅샷 기능(snapshot-controller, csi-snapshotter 등)
Zadara 환경의 Kubernetes
Zadara 클라우드는 AWS와 같은 대규모 퍼블릭 클라우드와 달리, 에지(Edge) 중심 구조를 갖고 있다는 점이 가장 큰 차별점입니다.
AWS처럼 소수의 초대형 리전으로 구성된 구조가 아니라, Zadara는 전 세계 500개 이상의 소규모 에지 로케이션을 기반으로 서비스를 제공합니다. 각각의 로케이션은 독립적으로 동작하며, 프라이빗 또는 하이브리드 클라우드 기능을 제공합니다.
이러한 구조는 고급 분산 컴퓨팅 환경에 매우 적합합니다.
독립적이면서도 동일한 성격을 가진 여러 클라우드 환경에 워크로드를 분산 배치함으로써 높은 복원력을 확보할 수 있으며, Kubernetes 기반 멀티 클라우드 전략과도 잘 부합합니다.
특히 고객 입장에서는 AWS, GCP, Azure 등 서로 다른 클라우드 API를 각각 학습하고 운영하는 대신, 동일한 AWS API 기반으로 여러 클라우드를 제어할 수 있다는 큰 장점이 있습니다.
또한 Zadara의 독특한 서비스 모델은 퍼블릭 클라우드의 유연성과 자동화 경험을 제공하면서도, 온프레미스 환경의 장점인 낮은 지연시간(Low Latency), 직접 네트워킹, 테넌트 중심 아키텍처를 그대로 유지할 수 있도록 지원합니다.
이러한 구조는 고급 분산 컴퓨팅 환경에 매우 적합합니다.
독립적이면서도 동일한 성격을 가진 여러 클라우드 환경에 워크로드를 분산 배치함으로써 높은 복원력을 확보할 수 있으며, Kubernetes 기반 멀티 클라우드 전략과도 잘 부합합니다.
특히 고객 입장에서는 AWS, GCP, Azure 등 서로 다른 클라우드 API를 각각 학습하고 운영하는 대신, 동일한 AWS API 기반으로 여러 클라우드를 제어할 수 있다는 큰 장점이 있습니다.
또한 Zadara의 독특한 서비스 모델은 퍼블릭 클라우드의 유연성과 자동화 경험을 제공하면서도, 온프레미스 환경의 장점인 낮은 지연시간(Low Latency), 직접 네트워킹, 테넌트 중심 아키텍처를 그대로 유지할 수 있도록 지원합니다.
Zadara 클라우드는 AWS 호환성을 기반으로 설계되어 있기 때문에, AWS 외부 환경에서 EKS-D 워크로드를 실행하기에 매우 적합합니다.
특히 주요 클라우드 통합 기능 측면에서 EKS와 유사한 운영 경험을 제공합니다.
물론 일부 설정 조정은 필요합니다. 예를 들어 클라우드 엔드포인트는 AWS 자체 엔드포인트가 아니기 때문에 일부 수정이 필요할 수 있습니다. 하지만 Zadara는 다음과 같은 AWS 중심 Kubernetes 유틸리티들을 동일하게 지원합니다.
- AWS CCM(Cloud Controller Manager)
- AWS EBS CSI Driver
- AWS Load Balancer Controller
또한 Kubernetes Cluster Autoscaler처럼 AWS Auto Scaling Groups API를 활용하는 Kubernetes 네이티브 도구들도 지원합니다.
EKS-D 호환성 외에도, Zadara 클라우드는 다양한 표준 클라우드 자동화 도구를 지원합니다.
예를 들어 공식 AWS Provider를 사용하는 Terraform(또는 OpenTofu), 그리고 AMI 기반 이미지 생성을 위한 Packer 등을 사용할 수 있습니다.
이러한 IaC(Infrastructure as Code) 접근 방식은 여러 팀과 고객 환경에 대해 복잡하면서도 일관된 아키텍처를 구축할 수 있게 해주며, 이는 자체 관리형 Kubernetes 운영에서 매우 중요한 요소입니다.
지난 몇 년간 Zadara는 자체 기술 역량을 바탕으로 다양한 Kubernetes 솔루션에 대한 참조 아키텍처를 구축해 왔습니다.
여기에는 다음과 같은 배포판들이 포함됩니다.
- 바닐라 Kubernetes
- RKE2(Rancher 기반 배포판)
- EKS-D
실제로 많은 고객들이 이러한 가이드를 기반으로 자체 Kubernetes 서비스를 구축해 왔으며, Zadara는 AWS 호환성을 가장 효과적으로 활용할 수 있는 Kubernetes 운영 방식으로 EKS-D를 추천하고 있습니다.
다음 포스트에서는 Zadara의 고도로 커스터마이징 가능한 자체 관리형 EKS-D 클러스터 자동 배포 솔루션에 대해 자세히 소개할 예정입니다.
Zadara Korea 테크 에반젤리스트의 추가 의견
Zadara Korea 테크에반젤리스트의 관점에서 보면, Kubernetes는 단순한 컨테이너 오케스트레이션 플랫폼을 넘어 멀티 클라우드와 하이브리드 클라우드 전략의 핵심 추상화 계층으로 자리 잡고 있습니다. 특히 Zadara처럼 AWS 호환성을 기반으로 하면서도 에지(Edge) 및 프라이빗 클라우드 환경까지 유연하게 확장 가능한 구조에서는, Kubernetes의 표준화된 운영 모델이 더욱 큰 가치를 제공합니다. 이를 통해 고객은 특정 인프라 종속성을 최소화하면서도 일관된 애플리케이션 운영 경험을 유지할 수 있으며, AI·데이터·엔터프라이즈 워크로드까지 포함한 차세대 클라우드 아키텍처를 보다 효율적으로 구축할 수 있습니다.