BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Kuberhealthy: testes sintéticos para clusters kubernetes

Kuberhealthy: testes sintéticos para clusters kubernetes

Ao replicar o fluxo de trabalho real do Kubernetes, o Kuberhealthy tenta identificar problemas de produção que, de outra forma, poderiam passar despercebidos. Problemas potenciais que o Kuberhealthy detecta incluem pods que ficam presos no estado "Terminating" devido a falhas de comunicação da CNI, pods que ficam presos no estado "ContainerCreating" devido a erros de provisionamento de disco ou pods que estão reiniciando muito rapidamente. Para identificar esses tipos de problemas, o Kuberhealthy executa várias verificações em paralelo:

  • Implantação e encerramento de daemonset: Esse teste implanta um daemonset ao namespace Kuberhealthy, aguarda até que todos os pods estejam no estado "Ready", encerra os pods e garante que os encerramentos sejam feitos com sucesso;
  • Saúde dos Componentes: Checa o status dos componentes do cluster e alerta se um status estiver inativo por mais de 5 minutos;
  • Reinicializações excessivas de pods: Monitora se um pod foi reiniciado mais de cinco vezes dentro de uma hora no namespace informado, padronizando para kube-system;
  • Status dos Pods: Procura por pods que foram criados há mais de dez minutos e não estão no estado "Ready";
  • DNS: Procura por falhas de DNS dentro e fora do cluster.

Testes adicionais estão previstos para futuras versões, incluindo provisionamento de serviços, resolução de DNS e provisionamento de disco.

Quando erros ou falhas ocorrem em qualquer um dos testes do Kuberhealthy, os detalhes do erro são reportados em uma página de status JSON disponível em http://kuberhealthy.kuberhealthy. A página de status JSON contém um campo booleano OK que indica o status do Kuberhealthy e um objeto JSON para cada verificação, aos quais incluem um vetor de erros listando todas descrições de erros potenciais. Informações adicionais sobre as verificações, assim como quando a última verificação foi executada também podem ser encontradas no objeto dos detalhes da verificação.

  {
  "OK": true,
  "Errors": [],
  "CheckDetails": {
    "ComponentStatusChecker": {
      "OK": true,
      "Errors": [],
      "LastRun": "2018-06-21T17:32:16.921733843Z",
      "AuthoritativePod": "kuberhealthy-7cf79bdc86-m78qr"
    },
    "DaemonSetChecker": {
      "OK": true,
      "Errors": [],
      "LastRun": "2018-06-21T17:31:33.845218901Z",
      "AuthoritativePod": "kuberhealthy-7cf79bdc86-m78qr"
    },
    "PodRestartChecker namespace kube-system": {
      "OK": true,
      "Errors": [],
      "LastRun": "2018-06-21T17:31:16.45395092Z",
      "AuthoritativePod": "kuberhealthy-7cf79bdc86-m78qr"
    },
    "PodStatusChecker namespace kube-system": {
      "OK": true,
      "Errors": [],
      "LastRun": "2018-06-21T17:32:16.453911089Z",
      "AuthoritativePod": "kuberhealthy-7cf79bdc86-m78qr"
    }
  },
  "CurrentMaster": "kuberhealthy-7cf79bdc86-m78qr"
}

Exemplo de página de status do Kuberhealthy README.md

O Kuberhealthy pode ser instalado através do Helm ou arquivos de especificação yaml e só está disponível dentro do cluster. Uma vez instalado, o Kuberhealthy executa em duas instâncias com uma provisão de interrupção de pods e uma estratégia de atualização contínua para garantir alta disponibilidade. O Kuberhealthy disponibiliza uma configuração de monitoramento de serviços para integrar com os alertas do Prometheus assim como um modelo para instalar um dashboard do Grafana.

A Comcast desenvolveu o Kuberhealthy a partir da necessidade de monitorar a saúde e a estabilidade de seus clusters Kubernetes e se integrar a ferramentas de monitoramento existentes, como o Prometheus. Ao imitar cargas de trabalho reais, o Kuberhealthy forneceu à Comcast uma solução de monitoramento mais robusta para o Kubernetes.

Abordagens adicionais para monitorar a saúde do cluster Kubernetes incluem a ferramenta kubelet, que agrega as estatísticas de uso de recursos dos pods, e o cAdvisor, que coleta estatísticas de CPU, memória, sistema de arquivos e uso de rede. O Grafana disponibiliza um plugin para coletar e visualizar essa métricas através do Prometheus. Além do ferramental do Kubernetes, o kube state metrics escuta o servidor Kubernetes API e coleta métricas da saúde de vários objetos, como os deployments, nodes e pods. Semelhante ao Kuberhealthy, essas métricas são informadas como texto puro em um endpoint de métricas que podem ser integrados ao Prometheus.

Para começar a usar Kuberhealthy, siga o guia de instalação ou leia mais no canal kuberhealthy no Kubernetes Slack.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT