Problema
Você está recebendo uma mensagem de erro para a integração do New Relic Kubernetes em seu terminal durante a instalação de integração Kubernetes ou em seu log New Relic Infrastructure após a instalação de integração Kubernetes .
Se você vir a seguinte mensagem de erro durante a instalação manual da integração do Kubernetes:
repo newrelic not found
Você pode ter esquecido ou ignorado este comando para adicionar o repositório newrelic ao seu gráfico do helm:
helm repo add newrelic https://helm-charts.newrelic.com
Se a licença que você está usando for inválida, você verá um erro como este no log do contêiner agent
ou forwarder
:
2018-04-09T14:20:17.750893186Z time="2018-04-09T14:20:17Z" level=error msg="metric sender can't process 0 times" error="InventoryIngest: events were not accepted: 401 401 Unauthorized Invalid license key."
Para resolver esse problema, certifique-se de especificar um válido.
Se o agente não conseguir se conectar aos servidores New Relic você verá um erro como o seguinte no log do contêiner agent
ou forwarder
:
2018-04-09T18:16:35.497195185Z time="2018-04-09T18:16:35Z" level=error msg="metric sender can't process 1 times" error="Error sending events: Post https://staging-infra-api.newrelic.com/metrics/events/bulk: net/http: request canceled (Client.Timeout exceeded while awaiting headers)"
Dependendo da natureza exata do erro, a mensagem no log pode ser diferente.
Para resolver esse problema, consulte a documentação das redes New Relic.
A integração do Kubernetes requer kube-state-metrics
. Caso não seja encontrado, você verá um erro como o seguinte no log do contêiner newrelic-infra:
time="2022-06-21T09:12:20Z" level=error msg="retrieving scraper data: retrieving ksm data: discovering KSM endpoints: timeout discovering endpoints"
Os motivos comuns para esse erro incluem:
kube-state-metrics
não foi implantado no cluster.kube-state-metrics
é implantar usando uma implantação personalizada.- Há diversas versões de
kube-state-metrics
em execução e a integração do Kubernetes não está encontrando a versão correta.
A integração Kubernetes descobre automaticamente kube-state-metrics
em seu cluster usando, por padrão, o aproveitamento do rótulo "app.kubernetes.io/name=kube-state-metrics"
em todo o namespace.
Você pode alterar o comportamento de descoberta em ksm.config
dos valores do gráfico do Helm.
Durante a instalação guiada, um erro de saída como o mostrado abaixo indica que você está enfrentando um problema de conexão de rede entre o cliente Kubernetes e o servidor API Kubernetes. Certifique-se de que seu cliente Kubernetes possa se conectar ao servidor API Kubernetes antes de executar a instalação guiada novamente.
Unable to connect to the server: dial tcp [7777:777:7777:7777:77::77]:443: i/o timeout
Durante a instalação guiada, um erro de saída, como nrk8s-kubelet pod is not starting
, indica que o pod kubelet do Kubernetes não pode ser iniciado em 5 minutos e o script de instalação é encerrado devido a esse tempo limite. Nesse caso, você pode executar kubectl get pods -o wide -n newrelic | grep nrk8s-kubelet
para ver o status do pod e reinicializá-lo.
- Se o pod estiver no status
ImagePullBackOff
, verifique sua conexão de rede para permitir a extração de imagens do domínio listado aqui. - Se o pod estiver no status
Pending
ouContainerCreating
, usekubectl logs newrelic-bundle-nrk8s-kubelet-***<DoNotTranslate>** -n newrelic
ekubectl logs newrelic-bundle-nrk8s-kubelet-**</DoNotTranslate>*** -n newrelic -c kubelet
para descobrir os possíveis motivos do registro.
Solução para integração versão v2
Abaixo estão algumas soluções para os erros mais comuns de integração do Kubernetes. Esses erros aparecem no log padrão não detalhado do agente de infraestrutura.
Se você precisar de um log mais detalhado trabalhando com o suporte New Relic , por exemplo, consulte LogKubernetes .
A integração do Kubernetes requer kube-state-metrics
. Caso não seja encontrado, você verá um erro como o seguinte no log do contêiner newrelic-infra:
2018-04-11T08:02:41.765236022Z time="2018-04-11T08:02:41Z" level=error msg="executing data source" data prefix="integration/com.newrelic.kubernetes" error="exit status 1" plugin name=nri-kubernetes stderr="time=\"2018-04-11T08:02:41Z\" level=fatal msg=\"failed to discover kube-state-metrics endpoint, got error: no service found by label k8s-app=kube-state-metrics\"\n"
Os motivos comuns para esse erro incluem:
kube-state-metrics
não foi implantado no cluster.kube-state-metrics
é implantar usando uma implantação personalizada.- Há diversas versões de
kube-state-metrics
em execução e a integração do Kubernetes não está encontrando a versão correta.
A integração do Kubernetes descobre automaticamente kube-state-metrics
em seu cluster usando esta lógica:
- Ele procura um serviço
kube-state-metrics
em execução no namespacekube-system
. - Se não for encontrado, ele procura uma etiqueta de serviço com o rótulo
"k8s-app: kube-state-metrics"
.
A integração também exige que o pod kube-state-métrica tenha o rótulo k8s-app: kube-state-metrics
ou app: kube-state-metrics
. Se nenhum deles for encontrado, haverá uma entrada de log como esta:
2018-04-11T09:25:00.825532798Z time="2018-04-11T09:25:00Z" level=error msg="executing data source" data prefix="integration/com.newrelic.kubernetes" error="exit status 1" plugin name=nri-kubernetes stderr="time=\"2018-04-11T09:25:00Z\" level=fatal msg=\"failed to discover nodeIP with kube-state-metrics, got error: no pod found by label k8s-app=kube-state-metrics\"\n
Para resolver esse problema, adicione o rótulo k8s-app=kube-state-metrics
ao pod kube-state-metrics
.
Se a métrica para nós, pod e contêiner do Kubernetes estiver aparecendo, mas a métrica para namespace, implantação e ReplicaSets
estiver faltando, a integração Kubernetes não consegue se conectar a kube-state-metrics
.
Indicadores de namespace, implantação e dados ReplicaSet
ausentes:
No gráfico
# of K8s objects
, esses dados estão faltando.
Consulta para
K8sNamespaceSample
,K8sDeploymentSample
eK8sReplicasetSample
não mostram nenhum dado.
Existem algumas razões possíveis para isso:
kube-state-metrics
serviço foi personalizado para escutar na porta 80. Se for esse o caso, você poderá ver um erro como este no registroverbose
:time="2018-04-04T09:35:47Z" level=error msg="executing data source"data prefix="integration/com.newrelic.kubernetes" error="exit status 1"plugin name=nri-kubernetes stderr="time=\"2018-04-04T09:35:47Z\"level=fatal msg=\"Non-recoverable error group: error querying KSM.Get http://kube-state-metrics.kube-system.svc.cluster.local:0/metrics:net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)\"\n"Este é um problema conhecido que acontece em alguns clusters onde o
kube-state-metrics
demora muito para coletar todas as informações do cluster antes de enviar para a integração.Como solução alternativa, aumente o tempo limite do cliente kube-state-métrica.
kube-state-metrics
a instância está sendo executada por trás do kube-rbac-proxy. Atualmente, a New Relic não oferece suporte a esta configuração. Você poderá ver um erro como este no registroverbose
:time="2018-03-28T23:09:12Z" level=error msg="executing data source"data prefix="integration/com.newrelic.kubernetes" error="exit status 1"plugin name=nri-kubernetes stderr="time=\"2018-03-28T23:09:12Z\"level=fatal msg=\"Non-recoverable error group: error querying KSM.Get http://192.168.132.37:8443/metrics: net/http: HTTP/1.xtransport connection broken: malformed HTTP response \\\"\\\\x15\\\\x03\\\\x01\\\\x00\\\\x02\\\\x02\\\"\"\n"A carga útil do KSM é muito grande e a integração do Kubernetes que processa a data está sendo eliminada pelo OOM. Como a integração não é o processo principal do contêiner, o pod não é reiniciado. Essa situação pode ser detectada no log do pod
newrelic-infra
em execução no mesmo nó do KSM:time="2020-12-10T17:40:44Z" level=error msg="Integration command failed" error="signal: killed" instance=nri-kubernetes integration=com.newrelic.kubernetesComo solução alternativa, aumente os limites de memória do DaemonSet para que o processo não seja eliminado.
O pod Newrelic e a conta de serviço newrelic não são implantados no mesmo namespace. Geralmente isso ocorre porque o contexto atual especifica um namespace. Se for esse o caso, você verá um erro como o seguinte:
time=\"2018-05-31T10:55:39Z\" level=panic msg=\"pods is forbidden: User \\\"system:serviceaccount:kube-system:newrelic\\\" cannot list pods at the cluster scope\"
Para verificar se este é o caso, execute:
kubectl describe serviceaccount newrelic | grep Namespacekubectl get pods -l name=newrelic-infra --all-namespaceskubectl config get-contexts
Para resolver esse problema, altere o namespace da conta de serviço no arquivo YAML New Relic DaemonSet
para ser igual ao namespace do contexto atual:
- kind: ServiceAccount name: newrelic namespace: default---