Em mais um tutorial supersônico em poucos minutos você terá o servidor de métricas do Kubernetes instalado e rodando te permitindo consultar rapidamente o consumo dos recursos do cluster pelo comando de linha sem a necessidade de acessar outra ferramenta como Grafana ou Prometheus por exemplo.
O procedimento para instalação é muito simples, mas tem um pequeno truque para os casos em que você esteja fazendo a implantação em um cluster de estudos em que os certificados estejam configurados corretamente. Mas fique tranquilo que este passo já está nesse tutorial.
Para instalar basta utilizar a linha de comando abaixo:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml
Caso você queira instalar uma outra versão basta trocar na linha de comando direcionando para a versão correta. Aqui você encontra o repositório oficial com as releases que estão disponíveis do Metrics Server.
Aguarde até que o deploy tenha sido concluído e você já poderá utilizar os comandos para obter as métricas, por exemplo:
# Exibe o consumo de recursos do nós do Cluster
kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master-001 278m 13% 1338Mi 34%
worker-001 120m 6% 745Mi 19%
worker-002 127m 6% 765Mi 19%
# Exibe o consumo de pods no Cluster
kubectl top pods
NAME CPU(cores) MEMORY(bytes)
calico-kube-controllers-56cdb7c587-74jch 4m 26Mi
calico-node-42kp5 76m 204Mi
calico-node-7kh9d 56m 203Mi
calico-node-lwbtf 44m 202Mi
coredns-6d4b75cb6d-99q2p 3m 21Mi
coredns-6d4b75cb6d-rmczr 3m 18Mi
etcd-master-001 32m 70Mi
kube-apiserver-master-001 120m 459Mi
kube-controller-manager-master-001 30m 57Mi
kube-proxy-4jct4 1m 23Mi
kube-proxy-6tx6m 1m 25Mi
kube-proxy-g99gj 1m 24Mi
kube-scheduler-master-001 6m 24Mi
metrics-server-658867cdb7-jwf9t 9m 27Mi
Caso os comandos abaixo não estejam funcionando provavelmente o deploy não foi concluído com sucesso. Para ajustar isso basta editarmos o Deployment do metrics-server:
kubectl edit deployment metrics-server -n kube-system
Agora adicionamos a linha destacada abaixo: –kubelet-insecure-tls
...
template:
metadata:
creationTimestamp: null
labels:
k8s-app: metrics-server
spec:
containers:
- args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
- --kubelet-insecure-tls
...
Pronto agora aguarde que pod seja atualizado e tente rodar os comandos novamente. Caso mesmo assim você não tenha tido sucesso consulte a documentação aqui.
E ai o que acharam? Super fácil né? A única coisa que pode dar um pouquinho de trabalho é essa edição do deployment, mas tirando isso o deploy é muito tranquilo.
Agora você pode ver na linha de comando de forma rápida e fácil como está o consumo de recursos dos seus componentes sem precisar acessar o Grafana, o que pode ser muito útil durante um troubleshooting.