전체 글
-
Karpenter: Kubernetes Node Autoscaling이코에코(Eco²)/Applied 2025. 12. 26. 20:42
참고: Karpenter Documentation, AWS Karpenter GitHub, CNCF Karpenter들어가며Kubernetes에서 Pod 스케일링(HPA, KEDA)은 잘 작동하지만, 노드 리소스가 부족하면 Pod는 Pending 상태에 머문다. 기존 Cluster Autoscaler는 ASG(Auto Scaling Group)에 의존하여 스케일업이 느리고 인스턴스 타입 선택이 제한적이다.┌─────────────────────────────────────────────────────────────┐│ 노드 스케일링의 필요성 │├───────────────────────────────────────────────────..
-
KEDA 트러블슈팅: RabbitMQ 기반 이벤트 드리븐 오토스케일링이코에코(Eco²)/Troubleshooting 2025. 12. 26. 19:43
본 문서는 Kubernetes 환경에서 KEDA(Kubernetes Event-driven Autoscaling)를 활용하여 RabbitMQ 큐 길이 기반 Worker Pod 오토스케일링을 구현하는 과정에서 발생한 이슈와 해결 방법을 기술합니다.환경 정보구성 요소버전/사양Kubernetesv1.28.4 (kubeadm)KEDAv2.16.0RabbitMQv3.13.x (RabbitMQ Operator)ArgoCDv2.13.xCNICalico (NetworkPolicy 적용)목표CPU 기반 HPA의 한계를 극복하고 메시지 큐 길이 기반 오토스케일링 구현scan-worker의 동적 스케일링으로 부하 대응력 향상k6 부하 테스트 시 성공률 개선1. 배경: CPU 기반 HPA의 한계1.1 기존 구조scan-wor..
-
이코에코(Eco²) Streams & Scaling for SSE #4: KEDA 기반 이벤트 드리븐 오토스케일링이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 17:51
k6 부하 테스트 결과를 기반으로 KEDA와 Prometheus Adapter를 활용한 스케일링 전략을 수립하고 적용합니다.Redis Streams 적용, 50VU 기준 Success Rate 86.3% (직전 테스트 Success Rate: 35%)1. 배경: CPU 기반 HPA의 한계문제 상황기존 Kubernetes HPA(Horizontal Pod Autoscaler)는 CPU/Memory 사용률 기반으로 동작합니다.# 기존 HPA (CPU 기반)apiVersion: autoscaling/v2kind: HorizontalPodAutoscalerspec: metrics: - type: Resource resource: name: cpu target: type: ..
-
KEDA: Kubernetes Event-Driven Autoscaling이코에코(Eco²)/Applied 2025. 12. 26. 17:15
GitHub: kedacore/kedaCNCF 프로젝트: Graduated (2024)KEDA (Kubernetes Event-Driven Autoscaling)는 이벤트 기반 워크로드에 대한 세밀한 오토스케일링을 제공하는 Kubernetes 컴포넌트이다. 기존 HPA(Horizontal Pod Autoscaler)를 확장하여 외부 이벤트 소스(메시지 큐, 스트림, 데이터베이스 등)를 기반으로 스케일링할 수 있게 한다.KEDA의 핵심 기여┌─────────────────────────────────────────────────────────────────┐│ KEDA의 핵심 기여 │├───────────────────..
-
이코에코(Eco²) Streams & Scaling for SSE #3: Application, Integration Layer 업데이트 (Scan API, MQ Workers)이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 16:09
Redis 인프라 배포 후 애플리케이션 레이어를 업데이트합니다.Celery Events (RabbitMQ) 대신 Redis Streams를 사용하여 SSE 이벤트를 발행/구독합니다.변경 범위domains/├── _shared/events/ # NEW: 공유 모듈│ ├── __init__.py│ ├── redis_client.py # Redis 클라이언트 팩토리 (동기/비동기)│ └── redis_streams.py # Streams 발행/구독│├── scan/│ ├── tasks/│ │ ├── vision.py # 이벤트 발행 추가│ │ ├── rule.py # 이벤트 발행 추가│ │ ├── answer..
-
Redis 3-Node 클러스터 프로비저닝 실측 로그이코에코(Eco²)/Logs 2025. 12. 26. 15:02
작업 일시: 2025-12-26환경: AWS ap-northeast-2 (Development)도구: Terraform + Ansible + kubeadm 이 문서는 단일 Redis 인스턴스를 용도별 3-Node 클러스터로 마이그레이션한 실제 작업 로그입니다.클러스터 구축에 있어 재현 가능한 환경을 지향하며 트러블슈팅 과정을 포함하여 유사한 작업 시 참고할 수 있도록 작성했습니다.Phase 1: 초기 상태 확인$ aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running" \ --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value|[0],InstanceType..
-
이코에코(Eco²) Streams & Scaling for SSE #2: 3-Node Redis Cluster 선언적 배포 (GitOps)이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 14:52
개요EC2 노드 프로비저닝 후 Kubernetes 클러스터에 Redis를 선언적으로 배포합니다.Spotahome Redis Operator를 사용하여 Redis + Sentinel HA 구성을 자동화합니다.Operator 선정: Spotahome vs Bitnami후보 비교기준Spotahome Redis OperatorBitnami Redis (Helm)배포 방식CRD + OperatorHelm ChartHA 구현Redis + Sentinel (자동)수동 설정 필요Failover자동 (Sentinel 관리)수동 또는 외부 도구리소스 관리CR 단위 선언적 관리values.yamlGitOps 친화도높음 (CR = YAML)중간 (Helm values)유지보수Operator가 조정(Reconcile)직접 관리..
-
이코에코(Eco²) Streams & Scaling for SSE #1: 3-Node Redis Cluster 리소스 프로비저닝이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 13:23
Kubernetes 클러스터에 Redis 3노드를 추가하는 인프라 프로비저닝 과정을 다룹니다.목표항목BeforeAfter노드 수1 (k8s-redis)3 (auth, streams, cache)인스턴스t3.medium ×1t3.medium ×1 + t3.small ×2vCPU26메모리4GB8GBPhase 1: Terraform 변경기존 모듈# terraform/main.tf (Before)module "redis" { source = "./modules/ec2" name = "k8s-redis" instance_type = "t3.medium" # ...}3개 모듈로 분리# terraform/main.tf (After)module "redis_auth" { sourc..