Running Kubernetes Resource Recommender (KRR) in a container
Running KRR in a container can be easier than installing it and its Python dependencies locally.
Docker
docker run --tty --rm --network host -v ~/.kube/config:/root/.kube/config:ro us-central1-docker.pkg.dev/genuine-flight-317411/devel/krr:latest python krr.py
Host networking is used to allow KRR to connect to Prometheus on localhost via kubectl port-forward
Bash alias
This command can, of course, also be added as a Bash alias.
alias krr='docker run --tty --rm --network host -v ~/.kube/config:/root/.kube/config:ro us-central1-docker.pkg.dev/genuine-flight-317411/devel/krr:latest python krr.py'
K9s plugin
It can also be used within K9s by modifying the community plugin example as shown in the following diff.
@@ -19,7 +19,7 @@
- -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
+ docker run --tty --rm -v ~/.kube/config:/root/.kube/config:ro --network host us-central1-docker.pkg.dev/genuine-flight-317411/devel/krr:latest python krr.py simple --cluster $CONTEXT --selector $LABELS -p http://localhost:9090
echo "Press 'q' to exit"
while : ; do
read -n 1 k <&1
@@ -38,7 +38,7 @@
args:
- -c
- |
- krr simple --cluster $CONTEXT -n $RESOURCE_NAME
+ docker run --tty --rm -v "~/.kube/config:/root/.kube/config:ro" --network host us-central1-docker.pkg.dev/genuine-flight-317411/devel/krr:latest python krr.py simple --cluster $CONTEXT -n $RESOURCE_NAME -p http://localhost:9090
echo "Press 'q' to exit"
while : ; do
read -n 1 k <&1