install heapster or metric server in kubernetes for horizontal pod autoscaling

12/10/2018

how to install heapster or metric server to get pod metrics in kubernetes. I need those pod metrics for using it to horizontal pod auto-scaling. I'm using Digital Ocean cloud cluster. deployment file is in the screenshot below enter image description here

-- AATHITH RAJENDRAN
autoscaling
digital-ocean
heapster
kubernetes
kubernetes-pod

1 Answer

12/10/2018

You need to first download the following files:

curl https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml > grafana.yaml
curl https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml > heapster.yaml
curl https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml > influxdb.yaml
curl https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml > heapster-rbac.yaml

Then create the following service instance of grafana, influxdb and heapster:

$ kubectl create -f grafana.yaml
deployment "monitoring-grafana" created
service "monitoring-grafana" created

$ kubectl create -f heapster.yaml
serviceaccount "heapster" created
deployment "heapster" created
service "heapster" created

$ kubectl create -f influxdb.yaml
deployment "monitoring-influxdb" created
service "monitoring-influxdb" created

$ kubectl create -f heapster-rbac.yaml
clusterrolebinding "heapster" created

Follow this tutorial for test your autoscaling pods:

https://developer.ibm.com/tutorials/autoscale-application-on-kubernetes-cluster/

Hope this helps.

EDIT: Resource request in your deployment file:

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: db
    image: mysql
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: wp
    image: wordpress
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"    

resources and request should be there in your deployment files so that HPA can access it to autoscale.

-- Prafull Ladha
Source: StackOverflow