Goldilocks
Goldilocks는 Kubernetes Vertical Pod Autoscaler(VPA)의 추천 데이터를 시각화하는 대시보드 도구입니다. 각 파드에 적합한 CPU/메모리 request 및 limit 값을 제안하여 리소스 낭비를 방지하고 안정적인 운영을 지원합니다.
배포 구성
- 네임스페이스:
goldilocks - 차트:
goldilocksv8.0.2 (Fairwinds) - 이미지:
zot.lumie-infra.com/fairwinds-ops/oss/goldilocks:v4.10.0 - 접근 방법: Teleport (외부 인그레스 비활성화)
아키텍처
구성 요소
Controller
controller:
enabled: true
replicaCount: 1
resources:
requests:
cpu: 15m
memory: 100Mi
limits:
memory: 100Mi
네임스페이스에 goldilocks.fairwinds.com/enabled: 'true' 라벨이 붙은 경우 해당 네임스페이스의 모든 Deployment에 대해 VPA 오브젝트를 자동 생 성합니다.
Dashboard
dashboard:
enabled: true
replicaCount: 1
image:
repository: zot.lumie-infra.com/fairwinds-ops/oss/goldilocks
tag: "v4.10.0"
resources:
requests:
cpu: 15m
memory: 100Mi
limits:
memory: 100Mi
service:
type: ClusterIP
port: 80
ingress:
enabled: false # Teleport를 통해서만 접근
네임스페이스 활성화
Goldilocks가 모니터링할 네임 스페이스에 다음 라벨을 추가합니다:
managedNamespaceMetadata:
labels:
goldilocks.fairwinds.com/enabled: 'true'
Lumie 인프라에서는 모든 관찰 가능성 네임스페이스에 이 라벨이 자동으로 적용되어 있습니다. ArgoCD syncPolicy.managedNamespaceMetadata를 통해 각 컴포넌트의 ArgoCD Application 배포 시 자동으로 설정됩니다.
VPA 통합
Goldilocks는 자체적으로 VPA를 설치하지 않고 별도로 배포된 VPA 컴포넌트를 사용합니다:
vpa:
enabled: false # VPA는 별도 Chart로 관리 (observability/vpa)
VPA 설정에 대한 자세한 내용은 VPA 문서를 참조하세요.
리소스 권장사항 해석
Goldilocks 대시보드에서 제공하는 권장값의 의미:
| 항목 | 설명 |
|---|---|
| Guaranteed QoS | requests == limits로 설정 — 예측 가능한 성능이 필요한 경우 |
| Burstable QoS | requests < limits로 설정 — 일반적으로 권장되는 설정 |
| Current | 현재 설정된 request/limit 값 |
| Recommended | VPA가 과거 사용량 기반으로 제안하는 값 |
파드 배치
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: goldilocks
topologyKey: kubernetes.io/hostname
ArgoCD 특이 사항
Goldilocks Controller는 VPA의 권장에 따라 CPU limit을 동적으로 변경하므로 ArgoCD가 이를 out-of-sync로 감지할 수 있습니다. 이를 방지하기 위해 ignoreDifferences가 설정되어 있습니다:
ignoreDifferences:
- group: apps
kind: Deployment
jqPathExpressions:
- .spec.template.spec.containers[].resources.limits.cpu
접근 방법
# Teleport 앱 로그인 (설정된 경우)
tsh app login goldilocks
# 포트 포워딩 (개발용)
kubectl port-forward -n goldilocks svc/goldilocks-dashboard 8080:80
# http://localhost:8080 에서 대시보드 접근
문제 해결
VPA 오브젝트가 생성되지 않는 경우
# 네임스페이스 라벨 확인
kubectl get namespace --show-labels | grep goldilocks
# Goldilocks Controller 로그 확인
kubectl logs -n goldilocks deploy/goldilocks-controller
# 생성된 VPA 오브젝트 확인
kubectl get vpa -A
권장값이 표시되지 않는 경우
VPA Recommender가 충분한 메트릭 데이터를 수집하지 못한 경우 권장값이 없을 수 있습니다. 워크로드가 일정 기간 실행된 후 다시 확인하세요.
# VPA 상태 확인
kubectl describe vpa -n <namespace> <vpa-name>
# VPA Recommender 로그 확인
kubectl logs -n vpa deploy/vpa-recommender