KRR?

Glen·2024년 1월 24일
0

linkedin을 보다가 괜찮아 보이는 오픈소스를 발견

KRR(kubernetes Resource Recommender)란?

https://github.com/robusta-dev/krr

Kubernetes 클러스터에서 리소스 할당을 최적화하기 위한 CLI 도구

  • 리소스낭비가 있는 부분을 간단하게 파악하기에 괜찮은듯

설치

  • mac은 brew로
  • 클러스터에 배포해서 사용하는 방식은 아니기 때문에 로컬에 설치
brew tap robusta-dev/homebrew-krr

brew install krr

환경설정

  • 현재 사용중인 클러스터의 접속은 배스천을 통해서만 접근이 가능하다.
# 로컬에서 배스천을 접속할때
# 8001은 내가 접속할 클러스터 포트, 8002는 proxy port
ssh -L 8001:localhost:8002 bastion
# 배스천에서
kubectl proxy --port=8002
  • .kube/config의 클러스터 주소를 배스천 프록시를 통해 접속할 수 있도록 수정

테스트

krr simple

다른 도구에 연결

  • slack과 연결하는 방법이 있긴 했는데, robuster와 krr를 클러스터에 배포해야했기 때문에 해당 방법은 패스

k9s plugin

k9s info를 통해 plugin.yaml의 위치를 파악

아래와 같이 입력

plugins:
# Author: Daniel Rubin
# Get recommendations for CPU/Memory requests and limits using Robusta KRR
# Requires Prometheus in the Cluster and Robusta KRR (https://github.com/robusta-dev/krr) on your system
# Open K9s in deployments/daemonsets/statefulsets view, then:
# Shift-K to get recommendations
  krr:
    shortCut: Shift-K
    description: Get krr
    scopes:
      - deployments
      - daemonsets
      - statefulsets
    command: bash
    background: false
    confirm: false
    args:
      - -c
      - |
        LABELS=$(kubectl get $RESOURCE_NAME $NAME -n $NAMESPACE  --context $CONTEXT  --show-labels | awk '{print $NF}' | awk '{if(NR>1)print}')
        krr simple --cluster $CONTEXT --selector $LABELS
        echo "Press 'q' to exit"
        while : ; do
        read -n 1 k <&1
        if [[ $k = q ]] ; then
        break
        fi
        done
  • k9s 접속 후 deployment/daemonset,statefulset에서 shift-k를 누르면

  • 해당 deployment에 대해 분석하고 결과를 알려준다

    • k9s에서 하나씩 실행하기 때문에 로컬에서 실행한거 보단 별로 인듯. ns 기준으로 한다면 모를까..
  • 내가 맡은 프로젝트에 적용해본다음에 팀원들에게 리소스를 최적화하는걸 이걸로 공유해봐야겠음.

profile
어제보다 나은 엔지니어가 되기 위해서 공부중

0개의 댓글