Kubernetes

Servidor de métricas do Kubernetes

Servidor de métricas do Kubernetes
Com um sistema tão grande e complicado como o Kubernetes, o monitoramento pode muitas vezes se tornar problemático.Monitorar é sempre um negócio complicado porque por um lado você não quer perder bugs e falhas críticas, por outro lado você não quer se afogar em um oceano de erros triviais sendo acionados não por causa de sua aplicação nem afetando de qualquer maneira.

Com sua própria pilha de agendadores e controladores, o Kubernetes pode se recuperar de pequenas falhas, nós ou aplicativos travando de dentro de seus pods. No entanto, se muitas falhas acontecerem, pode não ter nada a ver com a infraestrutura, mas tudo a ver com seu aplicativo que o Kubernetes pode tentar reiniciar continuamente, mas como o código é o culpado, a falha persistirá e poderá até passar despercebida.

O tipo de bugs que passam despercebidos na maioria das vezes são aqueles em que os aplicativos não travam, mas acabam utilizando recursos do sistema e prejudicando o desempenho dos clusters. Esses são os casos especialmente desagradáveis, e o Kubernetes Metrics Server pode ser uma ferramenta útil para ficar de olho neles.

O projeto é oficialmente parte do projeto Kubernetes, mas não vem pré-habilitado na maioria das distros certificadas pelo Kubernetes. Ele tem duas partes importantes que valem a pena discutir a API Metrics e o próprio Metrics Server. Mas primeiro vamos provisioná-lo em nosso cluster Kubernetes (K8).

Uma configuração experimental do Kubernetes

Desde julho de 2018, Docker para Mac e Windows vêm com uma implementação certificada pelo Kubernetes do próprio K8. Tornando isso tão fácil quanto instalar o K8 em uma distribuição Linux. Você pode ir para Configurações do Docker e se a instância do Docker estiver atualizada, você encontrará uma guia Kubernetes no menu. Basta ativar o Kubernetes em vez do Docker Swarm e você terá um cluster de nó único pronto para experimentações.

Em seguida, precisamos de algum conjunto simples de aplicativos em execução para nosso caso de uso. Crie uma pasta chamada Deployments e dentro dela vamos criar um implantação do nginx.yaml arquivos que implantariam pods Nginx sem estado.

apiVersion: apps / v1 # para versões anteriores a 1.9.0 usam apps / v1beta2
tipo: implantação
metadados:
nome: nginx-deployment
especificação:
seletor:
matchLabels:
app: nginx
réplicas: 2 # diz à implantação para executar 2 pods correspondentes ao modelo
modelo:
metadados:
etiquetas:
app: nginx
especificação:
recipientes:
- nome: nginx
imagem: nginx: 1.7.9
portas:
- containerPort: 80

Salve o arquivo e, no mesmo diretório onde se encontra este arquivo, execute o comando:

$ kubectl create -f nginx-deployment.yaml

Podemos ter que esperar alguns minutos para permitir que o Kubernetes baixe as imagens do contêiner, provisione os contêineres e faça um pouco de contabilidade diversa. Depois de fazer isso, você pode ver a lista de pods como:

$ kubectl get pods

Como você pode ver, temos duas instâncias do pod, como o .arquivo yaml prescreveu.

Agora que temos algo para monitorar, precisamos habilitar o Metrics Server. Primeiro, verifique a versão do Kubernetes que você está executando. Se a versão for 1.8 ou superior, então executaríamos uma implantação diferente e se for 1.7, então, voltamos ao antigo:

versão $ kubectl

Você pode obter a imagem oficial e começar clonando este repositório GitHub e, em seguida, dentro da raiz do repositório, execute o kubectl create -f com o apropriado .yaml dependendo da versão K8 que você está executando.

$ git clone https: // github.com / kubernetes-incubator / metrics-server.idiota
 
$ cd metrics-server
# Se você estiver executando o Kubernetes versão 1.8 ou superior
$ kubectl create -f deploy / 1.8 + /
# Se a versão for 1.7, então
$ kubectl create -f deploy / 1.7 /

Dê ao kubernetes um tempo para fazer o download das imagens e ativar o servidor de métricas. Pode demorar alguns minutos. Feito isso, você está pronto para executar o servidor de métricas. O comando básico é inspirado no principal comando que geralmente é executado para monitorar um sistema Linux. Mas tem duas variantes, uma para verificar o utilizações de recursos na computação nós e segundo para avaliar o recurso consumido pelo implantado vagens e a. Veja como ver esses dois detalhes:

nó superior $ kubectl
$ kubectl top pod

Você pode ver o quanto um pod está sobrecarregando seu sistema em termos de memória ou tempo de CPU e, usando a API Metrics, você também pode configurar alertas de acordo.

Para onde vai a partir daqui?

Os casos de uso emergentes do servidor de métricas serão cruciais no futuro do Kubernetes. Este projeto ainda está na versão 0.2.x, uma vez que amadurece e é integrado à arquitetura Kubernetes principal, ele coletará dados importantes para o programador, ajudando-o a alocar pods para nós de maneira muito mais eficiente.

Da mesma forma, o autoescalador horizontal de pods se beneficiará muito com o projeto e ajudará você a aumentar ou diminuir a escala para que os recursos sejam usados ​​de maneira ideal pelos aplicativos.

Referências

  1. Implantações Nginx
  2. Servidor de métricas do Kubernetes
  3. Os documentos de design para a API Metrics podem ser encontrados aqui e semelhantes, você pode encontrar informações sobre o Metrics Server aqui.
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...
Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...
Jogos HD Remasterizados para Linux que nunca tiveram uma versão Linux anterior
Muitos desenvolvedores e editores de jogos estão apresentando remasterização em HD de jogos antigos para estender a vida da franquia, por favor, os fã...