DEV Community

Thomas Kim
Thomas Kim

Posted on • Edited on

3 2

Kubernetes 의 Resources 설정을 위한 VPA 및 Goldilocks

Kubernetes (AWS EKS) 의 Autoscaler

Kubernetes 의 Autoscaler 를 사용하기 위해서는 우선

  1. Deployment 의 Resource request, limit을 모두 설정해야 한다.
  2. Horizontal Pod Autoscaler (HPA) 를 설정한다.
  3. AWS 의 Cluster Autoscaler (CA) 를 설정한다.

여기서 Resource의 request, limit 설정을 위해 Vertical Pod AutoscalerGoldilocks를 활용하고 이를 통해 request, limit 을 설정하는데 참고 할 수 있다.


VPA 및 Goldilocks의 역할

사실 VPA는 Kubernetes 의 Autoscaler 중 하나로 Horizontal 하게 Pod/ Node를 늘리는 HPA와 달리 Vertical 하게 스펙을 높이는 방법이다. 그런데 VPA controller stack은 recommendation engine 을 포함하고 있고, 가이드라인을 제공하기 위해 현재 resource 사용량을 계속 수집한다. 결국 보통 실제 VPA를 사용한 Autoscale을 사용 하지는 않고, recommendation engine 만 사용하도록 설정하여 request, limit을 정하고 HPA, CA를 통해 Autoscale을 한다.

여기서 Goldilocks 의 역할은 불편하게 kubectl 을 통해 필요한 서비스의 VPA recommendation 을 확인하는 대신 쉽게 Web UI를 통해 이를 확인 할 수 있게 도와준다.


Kube Metrics Server 설치

우선 지표 수집을 위해 Kubernetes 의 metrics-server를 설치해야 한다.

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Enter fullscreen mode Exit fullscreen mode

제대로 적용되었는지 확인한다.

kubectl get deployment metrics-server -n kube-system
Enter fullscreen mode Exit fullscreen mode

VPA 및 Goldilocks 설치

우리는 full VPA install 이 필요하지 않고 recommender 만 필요하다. 아래와 같이 설치하면 VPA recommender와 Goldilocks를 설치한다.

$ helm repo add fairwinds-stable https://charts.fairwinds.com/stable
$ helm install --set updater.enabled=false vpa fairwinds-stable/vpa --namespace vpa --create-namespace
$ helm install goldilocks fairwinds-stable/goldilocks --namespace goldilocks --create-namespace 
Enter fullscreen mode Exit fullscreen mode

Goldilocks 의 chart를 통해 VPA를 설치하면 쉽게 원하는 recommendation engine 만을 설치할 수 있다. https://github.com/FairwindsOps/charts/tree/master/stable/vpa#components 참고

VPA recommender를 사용할 namespace를 지정한다.

$ kubectl label ns default goldilocks.fairwinds.com/enabled=true
Enter fullscreen mode Exit fullscreen mode

Goldilocks 확인

kubernetes port forwarding 을 통해 Goldilocks 에 접속한다.

$ kubectl -n goldilocks port-forward svc/goldilocks-dashboard 8080:80
Enter fullscreen mode Exit fullscreen mode

kubernetes port forwarding을 remote 에서 하는 경우 localhost를 통해 Goldilocks를 접근하기 위해 local 에서 Local Port Forwarding을 해야한다.

ssh -L 8080:127.0.0.1:8080 ec2-~~.compute.amazonaws.com
Enter fullscreen mode Exit fullscreen mode

http://localhost:8080 을 열어본다.

서비스가 배포되지 않은 상황에서는 아무것도 없을것이다. 서비스를 올리고 사용하면서 확인하면 각 서비스의 설정과 recommendation 을 확인할 수 있다.
하지만... 실제 사용해본 결과 참고는 할 수 있지만 이 수치가 절대적인 값이 될 수는 없다. Language와 서비스의 성격에 따라 실제 운영하면서 맞추어 나가는 방법이 좋은거 같다.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay