Skip to main content

Monitoramento do Cluster

O Kubernetes não vem com uma solução de monitoramento integrada para coletar as métricas dos nodes e pods, porém temos muitas soluções open source que podemos usar.

  • Metric Server (antigo Heapster)
  • Prometheus
  • Elastic Stack

E pagas como:

  • Datadog
  • Dynatrace
  • NewRelic

Vamos focar no Metric Server. Podemos rodar um metric server por cluster Kubernetes.

Um dos subcomponentes do Kubelet é o cAdvisor, que tem a função de expor as métricas dos pods através de uma API do Kubelet para que o Metrics Server possa coletar.

O Metrics Server coleta os dados do Kubelet usando a API do Kubelet e guarda-os em memória. O Metrics Server não guarda um histórico como Prometheus e outras soluções.

Para implantar o Metrics Server vamos usar o GitHub Metrics Server ou o Helm Metrics Server

helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
helm show values metrics-server/metrics-server > values.yaml

O Metrics Server aplicado diretamente no cluster Kind às vezes tem problemas com certificados. Adicione a última linha.

defaultArgs:
- --cert-dir=/tmp
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
- --kubelet-insecure-tls # Para clusters kind

E execute o comando para instalar passando o values que acabamos de modificar.

helm upgrade --install metrics-server metrics-server/metrics-server --values values.yaml

Uma vez instalado podemos usar os comandos.

kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
cka-cluster-control-plane 165m 1% 1027Mi 1%
cka-cluster-worker 41m 0% 478Mi 0%
cka-cluster-worker2 38m 0% 475Mi 0%
cka-cluster-worker3 39m 0% 393Mi 0%

kubectl top pods -A
NAMESPACE NAME CPU(cores) MEMORY(bytes)
default metrics-server-699ffcdc79-njfq8 5m 20Mi
default myapp-rs-4qj5l 0m 23Mi
default myapp-rs-jpct9 0m 23Mi
default myapp-rs-wvd7l 0m 23Mi
istio-system istiod-6d8c55dd6c-47s57 4m 107Mi
kube-system coredns-76f75df574-7d75t 3m 15Mi
kube-system coredns-76f75df574-99kmh 3m 58Mi
kube-system etcd-cka-cluster-control-plane 26m 97Mi
kube-system kube-apiserver-cka-cluster-control-plane 68m 387Mi
kube-system kube-controller-manager-cka-cluster-control-plane 22m 113Mi
kube-system kube-proxy-6gk2j 8m 70Mi
kube-system kube-proxy-bgpzr 5m 70Mi
kube-system kube-proxy-l8xxj 7m 70Mi
kube-system kube-proxy-vg8mb 4m 71Mi
kube-system kube-scheduler-cka-cluster-control-plane 6m 65Mi
kube-system weave-net-29ffl 2m 118Mi
kube-system weave-net-4q8kr 2m 117Mi
kube-system weave-net-8zxbw 1m 117Mi
kube-system weave-net-phbz8 2m 117Mi
local-path-storage local-path-provisioner-7577fdbbfb-7t9pc 1m 31Mi