Problema
Recibe un mensaje de error para la integración de New Relic Kubernetes desde su terminal durante la instalación de la integración Kubernetes o en su registro New Relic Infrastructure después de la instalación de la integración de Kubernetes .
Si ve el siguiente mensaje de error durante la instalación manual de integración de Kubernetes:
repo newrelic not found
Es posible que haya olvidado u omitido este comando para agregar el repositorio de newrelic a su gráfico de timón:
helm repo add newrelic https://helm-charts.newrelic.com
Si la licencia que está utilizando no es válida, verá un error como este en el registro del contenedor agent
o 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 este problema, asegúrese de especificar un válido.
Si el agente no puede conectarse a los servidores New Relic , verá un error como el siguiente en el registro del contenedor agent
o 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)"
Dependiendo de la naturaleza exacta del error, el mensaje en el registro puede diferir.
Para solucionar este problema, consulte la documentación de redes de New Relic.
La integración de Kubernetes requiere kube-state-metrics
. Si no se encuentra, verá un error como el siguiente en el registro del contenedor newrelic-infra:
time="2022-06-21T09:12:20Z" level=error msg="retrieving scraper data: retrieving ksm data: discovering KSM endpoints: timeout discovering endpoints"
Las razones comunes para este error incluyen:
kube-state-metrics
no se ha implementado en el clúster.kube-state-metrics
es desplegar usando un despliegue personalizado.- Hay varias versiones de
kube-state-metrics
ejecutándose y la integración de Kubernetes no encuentra la correcta.
La integración Kubernetes descubre automáticamente kube-state-metrics
en su clúster aprovechando de forma predeterminada la etiqueta "app.kubernetes.io/name=kube-state-metrics"
en todo el espacio de nombres.
Puede cambiar el comportamiento de descubrimiento en el ksm.config
de los valores del gráfico de timón.
Durante la instalación guiada, un error de salida como el siguiente indica que está experimentando un problema de conexión de red entre el cliente de Kubernetes y el servidor API de Kubernetes. Asegúrese de que su cliente de Kubernetes pueda conectarse a su servidor API de Kubernetes antes de volver a ejecutar la instalación guiada.
Unable to connect to the server: dial tcp [7777:777:7777:7777:77::77]:443: i/o timeout
Durante la instalación guiada, un error de salida, como nrk8s-kubelet pod is not starting
, indica que el pod Kubernetes kubelet no se puede iniciar en 5 minutos y el script de instalación se cierra debido a este tiempo de espera. En este caso, puede ejecutar kubectl get pods -o wide -n newrelic | grep nrk8s-kubelet
para ver el estado y los reinicios del pod.
- Si el pod está en estado
ImagePullBackOff
, verifique su conexión de red para permitir la extracción de imágenes del dominio que se enumera aquí. - Si el pod está en estado
Pending
oContainerCreating
, utilicekubectl logs newrelic-bundle-nrk8s-kubelet-***<DoNotTranslate>** -n newrelic
ykubectl logs newrelic-bundle-nrk8s-kubelet-**</DoNotTranslate>*** -n newrelic -c kubelet
para descubrir los posibles motivos en el registro.
Solución para integración versión v2
A continuación se muestran algunas soluciones a los errores de integración de Kubernetes más comunes. Estos errores aparecen en el registro estándar no detallado del agente de infraestructura.
Si necesita un registro más detallado sobre cómo trabajar con el soporte New Relic , por ejemplo, consulte RegistroKubernetes .
La integración de Kubernetes requiere kube-state-metrics
. Si no se encuentra, verá un error como el siguiente en el registro del contenedor 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"
Las razones comunes para este error incluyen:
kube-state-metrics
no se ha implementado en el clúster.kube-state-metrics
es desplegar usando un despliegue personalizado.- Hay varias versiones de
kube-state-metrics
ejecutándose y la integración de Kubernetes no encuentra la correcta.
La integración de Kubernetes descubre automáticamente kube-state-metrics
en su clúster usando esta lógica:
- Busca un servicio
kube-state-metrics
ejecutándose en el namespacekube-system
. - Si no lo encuentra, busca un servicio etiquetado con la etiqueta
"k8s-app: kube-state-metrics"
.
La integración también requiere que el pod kube-state-métrica tenga la etiqueta k8s-app: kube-state-metrics
o app: kube-state-metrics
. Si no se encuentra ninguno de ellos, habrá una entrada log como la siguiente:
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 este problema, agregue la etiqueta k8s-app=kube-state-metrics
al pod kube-state-metrics
.
Si se muestran métricas para los nodos, pod y contenedor Kubernetes , pero faltan métricas para el espacio de nombres, extensión y ReplicaSets
, la integración Kubernetes no puede conectarse a kube-state-metrics
.
Indicadores de namespace faltantes, implementación y datos ReplicaSet
:
En el gráfico
# of K8s objects
, faltan esos datos.
Consulta para
K8sNamespaceSample
,K8sDeploymentSample
yK8sReplicasetSample
no muestra ningún dato.
Hay algunas razones posibles para esto:
kube-state-metrics
El servicio se ha personalizado para escuchar en el puerto 80. Si ese es el caso, es posible que vea un error como el siguiente en el 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 es un problema conocido que ocurre en algún clúster donde le toma demasiado tiempo a
kube-state-metrics
recopilar toda la información del clúster antes de enviarla a la integración.Como solución alternativa, aumente el tiempo de espera del cliente kube-state-métrica.
kube-state-metrics
La instancia se ejecuta detrás de kube-rbac-proxy. New Relic actualmente no admite esta configuración. Es posible que vea un error como el siguiente en el 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"La carga útil de KSM es bastante grande y la integración de Kubernetes que procesa la fecha está siendo eliminada por OOM. Dado que la integración no es el proceso principal del contenedor, el pod no se reinicia. Esta situación se puede detectar en el registro del pod
newrelic-infra
que se ejecuta en el mismo nodo de KSM:time="2020-12-10T17:40:44Z" level=error msg="Integration command failed" error="signal: killed" instance=nri-kubernetes integration=com.newrelic.kubernetesComo solución alternativa, aumente los límites de memoria de DaemonSet para que el proceso no finalice.
Newrelic pod y la cuenta de servicio newrelic no se implementan en el mismo namespace. Esto suele deberse a que el contexto actual especifica un namespace. Si este es el caso, verá un error como el siguiente:
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 comprobar si este es el caso, ejecute:
kubectl describe serviceaccount newrelic | grep Namespacekubectl get pods -l name=newrelic-infra --all-namespaceskubectl config get-contexts
Para resolver este problema, cambie el namespace de la cuenta de servicio en el archivo YAML New Relic DaemonSet
para que sea el mismo namespace para el contexto actual:
- kind: ServiceAccount name: newrelic namespace: default---