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 / v1beta2tipo: 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.yamlPodemos 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 $ kubectlVocê 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
- Implantações Nginx
- Servidor de métricas do Kubernetes
- Os documentos de design para a API Metrics podem ser encontrados aqui e semelhantes, você pode encontrar informações sobre o Metrics Server aqui.