Skip to main content

Prerrequisites

  • Conectividad a la API de Kubernetes

El plugin debe poder llegar a API de forma remota para poder extraer la información.

  • Permisos

Para hacer las solicitudes a través de la api, la cuenta utilizada para autenticar en la ejecución requiere de unos determinados permisos.

Asignación de permisos

A continuación se describen los pasos a seguir para crear un usuario con los permisos suficientes para obtener los datos de la monitorización.

  1. Creación de un “​Cluster role​” de lectura llamado “​api-read-only​”: Se creará un rol que
    conceda los permisos “​get​”, “​list​” y “​watch​” de todos los recursos de Kubernetes.
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
name: ​api-read-only
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- get
- list
- watch
- nonResourceURLs:
- '*'
verbs:
- get
- list
- watch
EOF

2. Creación de un “​Cluster role binding​” llamado “​bind-api-read-only​”: Se vinculará el rol
creado anteriormente a una “​service account​” ya existente.

kubectl create clusterrolebinding ​bind-api-read-only​ \
--clusterrole=​api-read-only​ \
--serviceaccount=​namespace​:user
  • Instalar metrics server

Para instalar el addon de “​metrics-server​”, será necesario descargarlo en el entorno de Kubernetes. Se puede obtener de su proyecto de github:

https://github.com/kubernetes-incubator/metrics-server

Una vez descargado solo se tiene que desplegar mediante el comando “​kubectl​”:

kubectl apply -f metrics-server/deploy/1.8+/

Se puede verificar que el despliegue se haya realizado con éxito si al lanzar el siguiente comando el estado de su API figura como “​true​”:

kubectl get apiservices | grep metrics-server
v1beta1.metrics.k8s.io    kube-system/metrics-server True 1m

Si el despliegue tiene éxito, el API de “​metrics-server​” debería quedar accesible:

​kubectl get --raw "/apis/metrics.k8s.io/v1beta1/"
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"metrics.k8s.io/v1beta1","res
ources":[{"name":"nodes","singularName":"","namespaced":false,"kind":"NodeMetrics
","verbs":["get","list"]},{"name":"pods","singularName":"","namespaced":true,"kind":"P
odMetrics","verbs":["get","list"]}]}

Además, pasados algunos segundos, se deberían poder obtener datos de uso de CPU y memoria de contenedores y nodos:

$ ​kubectl top node
NAMECPU(cores) CPU%MEMORY(bytes)MEMORY%
kube93m968Mi56%4%
$ ​kubectl top pod
NAMECPU(cores)MEMORY(bytes)
pod10m3Mi
pod20m3Mi
pod30m2Mi
pod40m3Mi
pod50m1Mi