[문제] 쿠버네티스(Kubernetes)의 아키텍처를 컨트롤 플레인(Control Plane)과 워커 노드(Worker Node) 구성 요소로 나누어 설명하고, Pod 스케줄링 알고리즘(Filtering·Scoring)과 Auto Scaling 메커니즘(HPA·VPA·CA)을 서술하시오. 또한 멀티 테넌시(Multi-Tenancy) 구현 전략과 운영 시 고려 사항을 논하시오.
1. 쿠버네티스 아키텍처 개요
쿠버네티스(K8s)는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼이다. Google이 내부 시스템 Borg를 기반으로 개발하여 2014년 오픈소스로 공개했다.
2. Pod 스케줄링 알고리즘
K8s 스케줄러는 Filtering(필터링) → Scoring(점수화) 2단계로 Pod 배치 노드를 결정한다.
| 단계 | 내용 | 주요 플러그인/기준 |
|---|---|---|
| Filtering | Pod를 배치할 수 없는 노드를 제거 (Feasibility Check) | NodeResourcesFit (CPU/메모리), NodeAffinity, TaintToleration, PodTopologySpread |
| Scoring | 남은 후보 노드에 점수를 매겨 최적 노드 선택 | LeastAllocated (자원 균등 분배), ImageLocality (이미지 캐시), InterPodAffinity |
3. Auto Scaling 메커니즘
| 종류 | 풀네임 | 동작 방식 | 적합 용도 |
|---|---|---|---|
| HPA | Horizontal Pod Autoscaler | CPU·메모리·커스텀 메트릭 기준으로 Pod 수평 증감 | 트래픽 급증·감소에 빠른 대응 |
| VPA | Vertical Pod Autoscaler | Pod의 CPU·메모리 Request/Limit을 자동 조정 (재시작 필요) | 단일 Pod 자원 최적화, ML 워크로드 |
| CA | Cluster Autoscaler | Pending Pod 발생 시 노드 자동 추가, 미사용 노드 제거 | 클라우드 비용 최적화, 빠른 인프라 확장 |
4. 멀티 테넌시 구현 전략과 운영 고려 사항
- Namespace 기반 격리: 팀·환경별 Namespace 분리, RBAC으로 접근 제어, ResourceQuota로 자원 할당량 제한
- 네트워크 격리: NetworkPolicy로 Pod 간 인바운드·아웃바운드 트래픽 제어, 서비스 메시(Istio) mTLS 적용
- 가상 클러스터(vCluster): 단일 K8s 클러스터 내 논리적 독립 K8s 환경 제공 → 강한 격리 필요 시
- 이미지 보안: 신뢰할 수 있는 레지스트리만 허용, ImagePullPolicy Always + 이미지 서명 검증
- 비용 가시성: OpenCost, Kubecost로 Namespace·팀별 비용 배분 추적
- Observability: Prometheus + Grafana 메트릭, Loki 로그, Jaeger 분산 추적 통합
[ 결론 ]
쿠버네티스는 컨트롤 플레인과 워커 노드의 역할 분리로 컨테이너 워크로드를 선언적으로 관리한다. Filtering·Scoring 기반 스케줄링과 HPA·VPA·CA 자동 확장으로 성능과 비용을 동시에 최적화한다. 엔터프라이즈 환경에서는 멀티 테넌시, 보안 강화, 비용 가시성을 갖춘 체계적인 운영 전략이 필수다.