문제
Kubernetes 통합 설치 중에 터미널에서 또는 Kubernetes 통합 설치 후 New Relic 인프라 로그에서 New Relic Kubernetes 통합에 대한 오류 메시지를 받고 있습니다.
수동 Kubernetes 통합 설치 중에 다음 오류 메시지가 표시되는 경우:
repo newrelic not found
투구 차트에 newrelic 저장소를 추가하기 위해 이 명령을 잊었거나 건너뛰었을 수 있습니다.
helm repo add newrelic https://helm-charts.newrelic.com
사용 중인 라이선스가 유효하지 않은 경우 agent
또는 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."
이 문제를 해결하려면 유효한 .
에이전트가 New Relic 서버에 연결할 수 없는 경우 agent
또는 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)"
오류의 정확한 특성에 따라 로그의 메시지가 다를 수 있습니다.
이 문제를 해결하려면 New Relic 네트워크 설명서 를 참조하십시오.
Kubernetes 통합에는 kube-state-metrics
이 필요합니다. 찾을 수 없으면 newrelic-infra 컨테이너 로그에 다음과 같은 오류가 표시됩니다.
time="2022-06-21T09:12:20Z" level=error msg="retrieving scraper data: retrieving ksm data: discovering KSM endpoints: timeout discovering endpoints"
이 오류의 일반적인 이유는 다음과 같습니다.
kube-state-metrics
클러스터에 배포되지 않았습니다.kube-state-metrics
사용자 지정 배포를 사용하여 배포됩니다.- 실행 중인
kube-state-metrics
의 여러 버전이 있으며 Kubernetes 통합이 올바른 버전을 찾지 못합니다.
Kubernetes 통합은 기본적으로 모든 네임스페이스에서 "app.kubernetes.io/name=kube-state-metrics"
라벨을 활용하여 클러스터에서 kube-state-metrics
자동으로 검색합니다.
helm 차트 값 의 ksm.config
에서 검색 동작을 변경할 수 있습니다.
가이드 설치 중에 아래와 같은 출력 오류는 Kubernetes 클라이언트와 Kubernetes API 서버 간에 네트워킹 연결 문제가 발생했음을 나타냅니다. 가이드 설치를 다시 실행하기 전에 Kubernetes 클라이언트가 Kubernetes API 서버에 연결할 수 있는지 확인하십시오.
Unable to connect to the server: dial tcp [7777:777:7777:7777:77::77]:443: i/o timeout
가이드 설치 중에 nrk8s-kubelet pod is not starting
와 같은 출력 오류는 Kubernetes kubelet 포드를 5분 이내에 시작할 수 없으며 이 시간 초과로 인해 설치 스크립트가 종료됨을 나타냅니다. 이 경우 kubectl get pods -o wide -n newrelic | grep nrk8s-kubelet
실행하여 포드의 상태를 확인하고 다시 시작할 수 있습니다.
- 포드가
ImagePullBackOff
상태인 경우 여기에나열된 도메인에서 이미지를 가져올 수 있도록 네트워크 연결을 확인하세요. - 포드가
Pending
또는ContainerCreating
상태인 경우kubectl logs newrelic-bundle-nrk8s-kubelet-***** -n newrelic
및kubectl logs newrelic-bundle-nrk8s-kubelet-***** -n newrelic -c kubelet
를 사용하여 로그에서 잠재적 원인을 파악하십시오.
통합 버전 v2용 솔루션
다음은 가장 일반적인 Kubernetes 통합 오류에 대한 몇 가지 솔루션입니다.이러한 오류는 장황하지 않은 표준 인프라 에이전트 로그에 표시됩니다.
예를 들어 New Relic 지원과 함께 작업하는 더 자세한 로그가 필요한 경우 Kubernetes 로그 를 참조하십시오.
Kubernetes 통합에는 kube-state-metrics
이 필요합니다. 찾을 수 없으면 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"
이 오류의 일반적인 이유는 다음과 같습니다.
kube-state-metrics
클러스터에 배포되지 않았습니다.kube-state-metrics
사용자 지정 배포를 사용하여 배포됩니다.- 실행 중인
kube-state-metrics
의 여러 버전이 있으며 Kubernetes 통합이 올바른 버전을 찾지 못합니다.
Kubernetes 통합은 다음 로직을 사용하여 클러스터에서 kube-state-metrics
을 자동으로 검색합니다.
kube-system
네임스페이스에서 실행 중인kube-state-metrics
서비스를 찾습니다.- 찾을 수 없는 경우 레이블이
"k8s-app: kube-state-metrics"
인 서비스를 찾습니다.
또한 통합을 위해서는 kube-state-metrics 포드에 k8s-app: kube-state-metrics
또는 app: kube-state-metrics
레이블이 있어야 합니다. 둘 중 어느 것도 찾지 못하면 다음과 같은 로그 항목이 표시됩니다.
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
이 문제를 해결하려면 k8s-app=kube-state-metrics
레이블을 kube-state-metrics
포드에 추가하세요.
Kubernetes 노드, 포드 및 컨테이너에 대한 측정항목은 표시되지만 네임스페이스, 배포 및 ReplicaSets
에 대한 측정항목이 누락된 경우 Kubernetes 통합이 kube-state-metrics
에 연결할 수 없습니다.
누락된 네임스페이스, 배포 및 ReplicaSet
데이터 표시기:
- # of K8s 개체 차트에서 해당 데이터가 누락되었습니다.
K8sNamespaceSample
,K8sDeploymentSample
및K8sReplicasetSample
에 대한 쿼리는 데이터를 표시하지 않습니다.
여기에는 몇 가지 가능한 이유가 있습니다.
kube-state-metrics
서비스는 포트 80에서 수신 대기하도록 사용자 지정되었습니다. 이 경우verbose
로그에 다음과 같은 오류가 표시될 수 있습니다.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"이는
kube-state-metrics
에서 통합으로 보내기 전에 모든 클러스터 정보를 수집하는 데 너무 많은 시간이 걸리는 일부 클러스터에서 발생하는 알려진 문제입니다.kube-state-metrics
인스턴스가 kube-rbac-proxy 뒤에서 실행 중입니다. New Relic은 현재 이 구성을 지원하지 않습니다.verbose
로그에 다음과 같은 오류가 표시될 수 있습니다.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"KSM 페이로드는 상당히 크고 날짜를 처리하는 Kubernetes 통합은 OOM이 종료됩니다. 통합은 컨테이너의 주요 프로세스가 아니므로 포드가 다시 시작되지 않습니다. 이 상황은 KSM의 동일한 노드에서 실행 중인
newrelic-infra
포드의 로그에서 확인할 수 있습니다.time="2020-12-10T17:40:44Z" level=error msg="Integration command failed" error="signal: killed" instance=nri-kubernetes integration=com.newrelic.kubernetes이 문제를 해결하려면 프로세스가 종료되지 않도록 DaemonSet 메모리 제한을 늘리십시오.
Newrelic 포드 및 newrelic 서비스 계정은 동일한 네임스페이스에 배포되지 않습니다. 이는 일반적으로 현재 컨텍스트가 네임스페이스를 지정하기 때문입니다. 이 경우 다음과 같은 오류가 표시됩니다.
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\"
이 경우인지 확인하려면 다음을 실행하십시오.
kubectl describe serviceaccount newrelic | grep Namespacekubectl get pods -l name=newrelic-infra --all-namespaceskubectl config get-contexts
이 문제를 해결하려면 New Relic DaemonSet
YAML 파일에서 서비스 계정의 네임스페이스를 현재 컨텍스트의 네임스페이스와 동일하게 변경합니다.
- kind: ServiceAccount name: newrelic namespace: default---