O Metrics Server é uma fonte escalonável e eficiente de métricas de recursos de contêiner para pipelines de escalonamento automático integrados do Kubernetes.
O Metrics Server coleta métricas de recursos do Kubelets e as expõe no apiserver do Kubernetes por meio da API Metrics para uso pelo Horizontal Pod Autoscaler e Vertical Pod Autoscaler. A API Metrics também pode ser acessada por kubectl top
, facilitando a depuração de pipelines de escalonamento automático.
Cuidado
O Metrics Server destina-se apenas a fins de escalonamento automático. Por exemplo, não o utilize para encaminhar métricas para soluções de monitorização ou como fonte de métricas de solução de monitorização. Nesses casos, colete métricas diretamente do endpoint Kubelet /metrics/resource
.
O Servidor de Métricas oferece:
Você pode usar o Metrics Server para:
Não use o Metrics Server quando precisar:
Para casos de uso não suportados, confira soluções completas de monitoramento como o Prometheus.
O Metrics Server possui requisitos específicos para configuração de cluster e rede. Estes requisitos não são o padrão para todas as distribuições de cluster. Certifique-se de que sua distribuição de cluster ofereça suporte a estes requisitos antes de usar o Metrics Server:
--kubelet-insecure-tls
para o Metrics Server)hostNetwork
estiver ativado). Leia mais sobre a comunicação do plano de controle para o nó..status.addresses
e porta no campo .status.daemonEndpoints.kubeletEndpoint.port
(padrão 10250). O Metrics Server escolherá o endereço do primeiro nó com base na lista fornecida pelo sinalizador de linha de comando kubelet-preferred-address-types
(padrão InternalIP,ExternalIP,Hostname
nos manifestos). O Metrics Server pode ser instalado diretamente do manifesto YAML ou por meio do gráfico oficial do Helm. Para instalar a versão mais recente do Metrics Server a partir do manifesto componentes.yaml , execute o comando a seguir.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
As instruções de instalação para versões anteriores podem ser encontradas nas versões do Metrics Server.
Servidor de métricas | Grupo/versão da API de métricas | Versão suportada do Kubernetes |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 | 1,19+ |
0.6.x | metrics.k8s.io/v1beta1 | 1,19+ |
0,5.x | metrics.k8s.io/v1beta1 | *1,8+ |
0.4.x | metrics.k8s.io/v1beta1 | *1,8+ |
0.3.x | metrics.k8s.io/v1beta1 | 1,8-1,21 |
*Versões do Kubernetes anteriores à v1.16 exigem a passagem do sinalizador de linha de comando --authorization-always-allow-paths=/livez,/readyz
O Metrics Server pode ser instalado no modo de alta disponibilidade diretamente de um manifesto YAML ou por meio do gráfico oficial do Helm, definindo o valor replicas
como maior que 1
. Para instalar a versão mais recente do Metrics Server no modo de alta disponibilidade a partir do manifesto high-availability.yaml , execute o comando a seguir.
No Kubernetes v1.21+:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
No Kubernetes v1.19-1.21:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
Observação
Esta configuração requer um cluster com pelo menos dois nós nos quais o Metrics Server pode ser planejado.
Além disso, para maximizar a eficiência dessa configuração altamente disponível, é recomendado adicionar o sinalizador --enable-aggregator-routing=true
CLI ao kube-apiserver para que as solicitações enviadas ao Metrics Server tenham carga balanceada entre as 2 instâncias.
O gráfico Helm é mantido como um componente adicional neste repositório e lançado em um repositório de gráficos apoiado na ramificação gh-pages
. Uma nova versão do gráfico será lançada para cada versão do Metrics Server e também poderá ser lançada de forma independente se houver necessidade. O gráfico na ramificação master
não deve ser referenciado diretamente, pois pode conter modificações desde seu último lançamento. Para visualizar o código do gráfico, use a tag de lançamento do gráfico.
O Metrics Server requer o recurso CAP_NET_BIND_SERVICE
para vincular-se a portas privilegiadas como não-raiz. Se você estiver executando o Metrics Server em um ambiente que usa PSSs ou outros mecanismos para restringir recursos de pod, certifique-se de que o Metrics Server tenha permissão para usar esse recurso. Isso se aplica mesmo se você usar a sinalização --secure-port
para alterar a porta que o Metrics Server vincula a uma porta não privilegiada.
A partir da versão 0.5.0, o Metrics Server vem com solicitações de recursos padrão que devem garantir bom desempenho para a maioria das configurações de cluster de até 100 nós:
O uso de recursos do Metrics Server depende de diversas dimensões independentes, criando um envelope de escalabilidade. A configuração padrão do Metrics Server deve funcionar em clusters que não excedam nenhum dos limites listados abaixo:
Quantidade | Limite de namespace | Limite de cluster |
---|---|---|
#Nós | n / D | 100 |
#Pods por nó | 70 | 70 |
#Implantações com HPAs | 100 | 100 |
Os recursos podem ser ajustados proporcionalmente com base no número de nós no cluster. Para clusters com mais de 100 nós, aloque adicionalmente:
Você pode usar a mesma abordagem para reduzir solicitações de recursos, mas há um limite onde isso pode afetar outras dimensões de escalabilidade, como o número máximo de pods por nó.
Dependendo da configuração do cluster, também pode ser necessário alterar sinalizadores passados para o contêiner do Metrics Server. Sinalizadores mais úteis:
--kubelet-preferred-address-types
- A prioridade dos tipos de endereço de nó usados ao determinar um endereço para conexão a um nó específico (padrão [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])--kubelet-insecure-tls
– Não verifica a CA dos certificados de serviço apresentados pelo Kubelets. Apenas para fins de teste.--requestheader-client-ca-file
– Especifique um pacote de certificados raiz para verificar certificados de cliente em solicitações recebidas.--node-selector
-Pode ser concluído para extrair as métricas dos nós especificados com base em rótulosVocê pode obter uma lista completa de sinalizadores de configuração do Metrics Server executando:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
O Metrics Server é um componente do pipeline de métricas principal descrito na arquitetura de monitoramento do Kubernetes.
Para obter mais informações, consulte:
Antes de postar um problema, primeiro verifique as Perguntas frequentes e os problemas conhecidos.
Saiba como interagir com a comunidade Kubernetes na página da comunidade.
Você pode entrar em contato com os mantenedores deste projeto em:
Este projeto é mantido pela SIG Instrumentation
A participação na comunidade Kubernetes é regida pelo Código de Conduta do Kubernetes.