If you’re trying to setup Horizontal Pod Scaling on a Digital Ocean Kubernetes cluster, you’ll quickly find you need metrics-server installed to support it. This is because to scale, the system needs to get metrics on CPU utilization of each of the pods in a specific deployment.
So. How do you install metric-server on Kubernetes? According to the repo README it is simple:
git clone https://github.com/kubernetes-sigs/metrics-server.git cd metrics-server kubectl apply -f deploy/1.8+/
Unfortunately, however, it doesn’t work. I generally run a command like this to see if it is working:
kubectl top pod <pod-name> -n <namespace>
So, how can you fix it?
Based on the advice in this GitHub issue, we need to add an extra line to the file
Add the following line to the container args:
It should look something like this:
containers: - name: metrics-server image: k8s.gcr.io/metrics-server-amd64:v0.3.6 args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-preferred-address-types=InternalIP ports: - name: main-port containerPort: 4443 protocol: TCP
Re-apply that file
kubectl apply -f metrics-server-deployment.yaml
Wait a few seconds for the pods to pick up the changes, then you should be able to inspect the CPU and memory usage of pods!
kubectl top pod example-website-7564785cc9-ftfqz -n website-1 NAME CPU(cores) MEMORY(bytes) doks-example-7564785cc9-ftfqz 0m 3Mi
I’ll link to a post on setting up Horizontal Pod Autoscaling soon! If I forget, write a comment to help inspire me!