Kubernetes
명사 · 오케스트레이션
Google이 만든 오픈소스 컨테이너 오케스트레이션 시스템으로, 컨테이너화된 애플리케이션의 배포, 스케일링 및 운영 관리를 자동화합니다 — 대규모 프로덕션에서 마이크로서비스를 실행하기 위한 산업 표준이 되었습니다.
애플리케이션의 원하는 상태를 지속적으로 모니터링하고, 장애가 발생한 컨테이너를 자동으로 재시작하며, 트래픽을 분산하고, 무중단 업데이트를 관리하는 분산 클라우드 컴퓨팅 플랫폼(K8s라고도 함)입니다.
Cloud Native Computing Foundation(CNCF)이 지원하는 성숙하고 확장 가능한 생태계로, 도구 네트워크(Helm, Istio, Prometheus)를 제공하며 AWS(EKS), Google Cloud(GKE), Azure(AKS)가 기준 클라우드 네이티브 오케스트레이션 레이어로 채택했습니다.
Docker와 Kubernetes는 상호 보완적입니다: Docker는 개별 컨테이너를 생성하고 실행하며, Kubernetes는 프로덕션에서 이러한 컨테이너 전체를 오케스트레이션하고 관리합니다. Docker는 애플리케이션을 패키징하고, Kubernetes는 적절한 수의 레플리카로 실행되고, 자동으로 복구되며, 다운타임 없이 업데이트되도록 보장합니다. 저희 에이전시는 두 기술을 결합하여 고객에게 탄력적이고 자동 확장 가능한 아키텍처를 제공합니다.
Kubernetes는 선언적 모델에 따라 작동합니다: YAML 파일에 인프라의 원하는 상태(레플리카 수, 리소스, 네트워크)를 기술하면, Kubernetes의 컨트롤 플레인이 지속적으로 해당 상태를 유지합니다. 스케줄러가 파드를 노드에 할당하고, 컨트롤러 매니저가 편차를 감시하며, kubelet이 각 노드에서 컨테이너를 실행합니다. 저희는 이 메커니즘을 활용하여 고객에게 최대 가용성과 무중단 배포를 보장합니다.
Kubernetes는 애플리케이션이 가변적인 부하를 처리해야 하거나, 고가용성이 필요하거나, 마이크로서비스 아키텍처에 기반할 때 필수적입니다. 수평 스케일링, 로드 밸런싱, 롤링 업데이트 및 컨테이너 장애 시 자동 복구를 자동화합니다. 저희 에이전시는 예측할 수 없는 트래픽 피크를 견디면서 일관된 성능과 거의 100%에 가까운 가용성을 유지해야 하는 웹 애플리케이션을 가진 기업에 Kubernetes를 추천합니다.
Kubernetes는 Google, Spotify, Airbnb, Adidas, NASA 등 세계 최대 기술 기업뿐만 아니라 빠르게 성장하는 중소기업과 스타트업에서도 사용됩니다. CNCF에 따르면 클라우드를 채택한 조직의 96% 이상이 Kubernetes를 사용하거나 평가하고 있습니다. 저희 에이전시는 고객 프로젝트를 Kubernetes에 배포하여 웹 거인들과 동일한 견고성과 탄력성을 제공합니다.
Kubernetes는 포괄적인 기능 세트를 제공합니다: 컨테이너 오케스트레이션, 수평 및 수직 자동 스케일링, 서비스 디스커버리 및 로드 밸런싱, 롤링 업데이트 및 자동 롤백, 시크릿 및 구성 관리, 퍼시스턴트 볼륨 마운트, 자가 치유(self-healing). 또한 보안을 위한 RBAC 시스템과 멀티 테넌트 격리를 위한 네임스페이스를 지원합니다. 저희는 이러한 기능을 활용하여 견고하고 안전한 클라우드 플랫폼을 구축합니다.
Kubernetes 클러스터는 컨트롤 플레인의 감독 하에 컨테이너화된 애플리케이션을 실행하는 머신(노드) 집합입니다. 컨트롤 플레인은 API Server, 스케줄러, etcd(분산 데이터베이스)로 구성되며, 워커 노드는 애플리케이션 컨테이너가 포함된 파드를 호스팅합니다. 저희 에이전시는 비용과 복원력을 최적화하기 위해 관리형 클라우드 프로바이더(EKS, GKE)에서 고객의 클러스터를 설계하고 구성합니다.
Kubernetes를 사용하려면 먼저 클러스터(Minikube/Kind를 통한 로컬 또는 클라우드 프로바이더를 통한 관리형)가 필요하고, Deployment, Service, Ingress를 정의하는 YAML 매니페스트에 애플리케이션을 기술합니다. 커맨드 라인 도구 `kubectl`로 이러한 구성을 적용하고 클러스터 상태를 모니터링합니다. 저희 에이전시는 클러스터 초기화부터 프로덕션 배포까지 Helm과 ArgoCD 같은 도구를 통한 CI/CD 통합을 포함하여 고객을 지원합니다.
Kubernetes는 '쿠버네티스'로 발음하며, K8s(K와 S 사이의 8글자를 나타내는 '8')로 자주 약칭됩니다. 이름은 '조타수' 또는 '항해사'를 의미하는 고대 그리스어 'κυβερνήτης'(kubernetes)에서 유래했으며, 플랫폼의 역할인 애플리케이션 컨테이너를 조종하고 오케스트레이션하는 것을 완벽하게 반영합니다. Async Code에서는 간결함을 위해 일상적인 기술 대화에서 K8s 약어를 선호합니다.
근본적인 차이는 Docker가 컨테이너화 도구(컨테이너 생성 및 실행)인 반면, Kubernetes는 오케스트레이터(프로덕션에서 수백 개의 컨테이너를 관리하고 조율)라는 점입니다. Docker는 단일 머신에서 사용하고, Kubernetes는 머신 클러스터에서 사용합니다. 두 가지는 경쟁 관계가 아니라 상호 보완적입니다: Docker가 컨테이너를 빌드하고 Kubernetes가 이를 오케스트레이션합니다. 저희 에이전시는 이 상호 보완성을 마스터하여 고가용성 마이크로서비스 아키텍처를 배포합니다.
Kubernetes의 주요 장점으로는 오토 스케일링(부하 피크에 자동 적응), 셀프 힐링(장애 컨테이너 자동 재시작), 무중단 배포, 멀티 클라우드 이식성, 지능적인 리소스 빈 패킹을 통한 인프라 비용 최적화가 있습니다. Kubernetes는 또한 단일 클라우드 공급업체에 대한 종속성(벤더 락인)을 줄입니다. 저희는 이러한 장점을 모든 고객 프로젝트에 통합하여 탄력적이고 경제적이며 성장에 대비한 애플리케이션을 보장합니다.