• English日本語한국어
  • 로그인지금 시작하기

쿠버네티스 통합 설치

뉴렐릭 쿠버네티스 통합은 뉴렐릭 인프라 에이전트를 활용하여 운영 환경의 상태 및 성능에 대한 완전한 옵저버빌리티를 제공합니다. 이 에이전트는 쿠버네티스 이벤트 통합, Prometheus 에이전트뉴렐릭 로그 쿠버네티스 플러그인 같은 여러 뉴렐릭 통합을 사용해 클러스터에서 텔레메트리 데이터를 수집합니다.

설치 옵션

쿠버네티스 통합을 설치하려면, 안내식 설치에 관한 지침을 참조하시기 바랍니다. 서버, VM, 권한이 없는 환경에는 이 대화형 설치 도구를 사용하길 권합니다.

안내식 설치는 뉴렐릭 쿠버네티스 통합의 설치 프로세스를 간단하게 만들어 주고 활성화할 기능과 수집할 데이터를 제어할 수 있도록 합니다. 또한, 쿠버네티스 클러스터에 대한 즉각적인 가시성을 얻을 수 있도록 쿠버네티스 통합과 함께 대시보드, 알림 등 일부 사전 구축된 리소스가 포함된 퀵스타트 옵션을 제공합니다.

다음 세 가지 옵션 중 하나를 선택할 수 있습니다.

  1. 뉴렐릭 CLI

  2. 필수 값이 미리 채워진 Helm 명령어

  3. 일반 매니페스트

    쿠버네티스 통합 안내 설치 탐색

    안내 설치를 시작하면, 다음 정보를 사용해 구성에 대한 결정을 내릴 수 있습니다.

    다음 단계는 퀵스타트에 필요한 사전 단계들을 건너뜁니다. 퀵스타트를 통한 안내 설치를 선택한 경우, Confirm your Kubernetes quickstart installation 및 설치 계획Installation plan 페이지를 클릭하면 아래 설명된 기본 안내 설치 페이지로 이동합니다.

    설치 준비

    안내식 설치를 위해 쿠버네티스 시스템을 준비합니다.

    • Helm 대신 커스텀 매니페스트를 사용한 경우, 먼저 kubectl delete -f previous-manifest-file.yml을 사용하여 이전 설치를 제거한 다음 안내 설치 프로그램을 다시 진행해야 합니다. 그러면 kubectl apply -f manifest-file.yml을 사용하여 배포할 수 있는 업데이트된 매니페스트 세트가 생성됩니다.

    • 지원되는 쿠버네티스 버전을 사용하고 있는지 확인하고 호환성 및 요구 사항 페이지에서 관리형 서비스 또는 플랫폼에 대한 사전 참고 사항을 확인합니다.

    • 뉴렐릭 계정()이 있는지 확인하십시오. 신용카드 없이 무료 계정을 설정할 수 있습니다.

    • newrelic dockerhub(https://hub.docker.com/u/newrelic) 및 Google 레지스트리(registry.k8s.io) 도메인이 허용 목록에 추가되었는지 확인합니다. 설치 시 컨테이너 이미지를 여기로 가져옵니다. 참고로, 허용 목록에 추가할 추가 Google 레지스트리 도메인을 식별하려면 명령을 따라야 할 수도 있습니다. registry.k8s.io는 일반적으로 해당 지역에 따라 로컬 레지스트리 도메인(예: asia-northeast1-docker.pkg.dev)로 리디렉션되기 때문입니다.

      매니지드 클라우드에 통합을 설치하는 경우, 진행하기 전에 다음 사전 참고 사항을 확인하시기 바랍니다.

    안내식 설치 시작

    아래 옵션 중 하나를 클릭하여 안내식 설치를 시작합니다.

    안내 설치 옵션

    설명

    안내 설치

    귀사의 뉴렐릭 팀이 EU 데이터센터를 사용하지 않고 퀵스타트의 보너스 대시보드와 알림이 필요하지 않은 경우 사용합니다.

    가이드 설치(EU)

    귀사의 뉴렐릭 팀이 EU 데이터 센터를 사용하고 퀵스타트의 보너스 대시보드와 알림이 필요하지 않은 경우 사용합니다.

    퀵스타트를 사용한 안내 설치

    귀사의 뉴렐릭 팀이 EU 데이터센터를 사용하지 않고 퀵스타트에서 일부 보너스 대시보드와 알림을 설치하려는 경우 이 옵션을 사용합니다.

    설치 구성

    Configure the Kubernetes Integration 페이지에서 다음 필드를 완료합니다.

    필드

    설명

    We'll send your data to this account

    쿠버네티스 데이터를 쓰기할 뉴렐릭 계정을 선택합니다.

    Cluster name

    이 통합을 설치하는 클러스터에 특정한 데이터를 필터링할 수 있도록 쿠버네티스 데이터에 태그를 지정하는 데 사용할 이름입니다. 여러 클러스터를 뉴렐릭 계정에 연결하기로 선택한 경우 중요하므로 쉽게 인지할 수 있는 이름을 선택하는 것이 좋습니다.

    Namespace for the integration

    클러스터에서 쿠버네티스 통합을 수용하는 데 사용할 네임스페이스입니다. newrelic의 기본 네임스페이스를 사용하는 것이 좋습니다.

    추가 데이터 선택

    Select the additional data you want to gather 페이지에서 적합한 옵션을 선택합니다.

    Scrape Prometheus endpoints

    이 옵션을 선택하면, 에이전트 모드로 Prometheus를 설치하여 클러스터에 노출된 Prometheus 엔드포인트로부터 메트릭을 수집합니다. 확장하면 각 옵션에 대한 세부정보를 확인할 수 있습니다.

    로그 데이터 수집

    설치 UI 내에서 로그 데이터의 세부정보를 맞춤화할 수 있습니다.

    Pixie를 통해 서비스 수준 인사이트, 풀-바디 요청 및 애플리케이션 프로필 활성화

    Pixie는 eBPF를 사용해 텔레메트리 데이터를 자동으로 수집하는 쿠버네티스 애플리케이션을 위한 오픈소스 옵저버빌리티 툴입니다. 클러스터에 Pixie가 설치되어 있지 않지만 뉴렐릭 플랫폼에서 Pixie의 강력한 텔레메트리 데이터 수집 및 시각화를 활용하려면 Enable service-level insights, full-body requests, and application profiles through Pixie를 선택합니다.

    이미 Community Cloud를 사용하고 있는 경우 Community Cloud hosted Pixie is already running on this cluster를 선택합니다. Pixie를 호스팅할 수 있는 다양한 방법이 존재한다는 사실을 염두에 두십시오. 뉴렐릭은 각 Pixie 호스팅 옵션에 대해 여러 수준의 통합 지원을 제공합니다.

    설치 완료

    가이드 설치의 마지막 단계에서 다음 설치 방법 중 하나를 선택하여 쿠버네티스 설치 설정을 완료합니다.

    • Guided Install (recommended): 이 옵션은 newrelic-cli CLI를 자동으로 다운로드하고 사용하여 쿠버네티스 통합을 설치하고 구성합니다.

    • Helm 3: Helm을 사용하여 쿠버네티스 통합을 설치하고 구성하려는 경우 이 옵션을 사용합니다. 이 옵션은 여기에 설명된 옵션으로 추가로 구성할 수 있는 nri-bundle Helm 차트를 설치합니다.

    • Manifest: YAML 형식으로 쿠버네티스 매니페스트를 생성하고 kubectl을 사용하여 수동으로 설치하려는 경우 이 옵션을 선택합니다.

      데이터가 보이지 않습니까? 위 단계를 완료했는데도 데이터가 표시되지 않으면 문제 해결 페이지를 확인하십시오.

Windows 기반 쿠버네티스 시스템이 있는 경우 이 옵션을 사용하십시오. Windows 통합에는 여러 가지 제한 사항들이 있습니다.

미리보기

이 기능은 현재 미리 보기 상태입니다.

호환성 및 요구사항

쿠버네티스 통합을 설치하기 전에 호환성 및 요구 사항을 먼저 확인하십시오.

중요

Windows에서 컨테이너를 사용하는 경우 컨테이너 호스트 버전과 컨테이너 이미지 버전이 동일해야 합니다. 쿠버네티스 통합은 Windows 버전 LTSC 2019(1809), 20H2 및 LTSC 2022에서 실행할 수 있습니다.

Windows 버전을 확인하려면:

  1. 명령 창을 엽니다.

  2. 다음 명령을 실행합니다.

    bash
    $
    Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v
    $
    ReleaseIdcmd.exe

    예: BusyBox 컨테이너에서 Windows용 쿠버네티스 가져오기

    다음 명령을 실행합니다.

    bash
    $
    kubectl exec -it busybox1-766bb4d6cc-rmsnj -- Reg Query
    $
    "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId

    다음과 같은 내용이 표시됩니다.

    bash
    $
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    $
    ReleaseId REG_SZ 1809

    릴리스 ID와 OS 버전 간의 유용한 매핑은 여기를 참조하십시오.

    설치

    Helm을 사용하여 Windows용 쿠버네티스 통합을 설치할 수 있습니다. Windows 빌드 버전(1809 및 2004)이 여러 개인 노드가 있는 클러스터에 통합을 설치하는 방법을 참조하십시오.

  3. 뉴렐릭 Helm 차트 리포지토리 추가:

    bash
    $
    helm repo add newrelic https://helm-charts.newrelic.com
  4. newrelic에 대한 네임스페이스를 만듭니다.

    bash
    $
    kubectl create namespace newrelic
  5. kube-state-metrics를 설치합니다.

    bash
    $
    helm repo add ksm https://kubernetes.github.io/kube-state-metrics
    $
    helm install ksm ksm/kube-state-metrics --version 2.13.2

    중요

    이 명령은 통합의 필수 종속성인 kube-state-metrics를 Linux 노드에 설치하기 위한 명령입니다. Linux가 아닌 노드에서는 이 설치가 지원되지 않으며, Linux가 아닌 노드에 설치하면 배포가 실패할 수 있습니다. Linux 노드를 선택하려면 nodeSelector를 사용하는 것이 좋습니다. 이는 kube-state-metrics 배포를 수정하여 수행할 수 있습니다.

  6. Helm에서 사용할 다음의 데이터로 values-newrelic.yaml 파일을 만듭니다.

    global:
    licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
    cluster: _K8S_CLUSTER_NAME_
    enableLinux: true # Set to true if your cluster also has linux nodes
    enableWindows: true
    windowsOsList:
  • version: 2019 # Human-readable version identifier imageTag: 2-windows-1809-alpha # Tag to be used for nodes running the windows version above buildNumber: 10.0.17763 # Build number for your nodes running the version above. Used as a selector.
  • version: 20h2 imageTag: 2-windows-20H2-alpha buildNumber: 10.0.19042
  • version: 2022 imageTag: 2-windows-ltsc2022-alpha buildNumber: 10.0.20348 nodeSelector: kubernetes.io/os: linux # Selector for Linux installation. windowsNodeSelector: kubernetes.io/os: windows # Selector for Windows installation.
  1. 통합을 설치합니다.

    bash
    $
    helm upgrade --install newrelic newrelic/newrelic-infrastructure \
    >
    --namespace newrelic --create-namespace \
    >
    --version 2.7.2 \
    >
    -f values-newrelic.yaml
  2. 파드가 배포되고 안정적인 상태에 도달하는지 확인합니다.

    bash
    $
    kubectl -n newrelic get pods -w

    Helm 차트는 목록에 있는 각 Windows 버전당 하나의 DaemonSet를 생성하고 NodeSelector를 사용하여 노드당 파드를 배포합니다.

    제한

    Windows용 쿠버네티스 통합에는 다음 제한사항이 적용됩니다.

  • Windows 에이전트는 쿠버네티스 샘플(K8sNodeSample, K8sPodSample 등)만 보냅니다.

    • SystemSample, StorageSample, NetworkSample, ProcessSample은 생성되지 않습니다.
    • Windows kubelet에 없기 때문에 일부 쿠버네티스 메트릭이 누락되었습니다.
  • 노드:

    • fsInodes: 전송되지 않음
    • fsInodesFree: 전송되지 않음
    • fsInodesUsed: 전송되지 않음
    • memoryMajorPageFaultsPerSecond: 항상 0을 값으로 반환
    • memoryPageFaults: 항상 0을 값으로 반환
    • memoryRssBytes: 항상 0을 값으로 반환
    • runtimeInodes: 전송되지 않음
    • runtimeInodesFree: 전송되지 않음
    • runtimeInodesUsed: 전송되지 않음
  • 파드:

    • net.errorsPerSecond: 전송되지 않음
    • net.rxBytesPerSecond: 전송되지 않음
    • net.txBytesPerSecond: 전송되지 않음
  • 컨테이너:

    • containerID: 전송되지 않음
    • containerImageID: 전송되지 않음
    • memoryUsedBytes: UI에서 이는 파드를 클릭할 때 나타나는 파드 카드에 표시되며 데이터는 표시되지 않음. 이 문제를 해결하기 위해 대신 memoryWorkingSetBytes를 사용하도록 차트가 업데이트될 예정입니다.
  • 볼륨:

    • fsUsedBytes: 0이므로 fsUsedPercent는 0

    Windows Kubelet의 알려진 문제

    Kubelet의 Windows 버전에는 통합이 데이터를 가져오는 것을 방해할 수 있는 몇 가지 문제가 있습니다.

  • Issue 90554: 이 문제로 인해 통합이 /stats/summary 엔드포인트에 요청할 때 Kubelet이 500 오류를 반환하게 됩니다. 쿠버네티스 1.19 릴리스에 포함될 예정이며 릴리스 1.16.11, 1.17.7 및 1.18.4로 백포트되었습니다. 통합 측에서 이 문제에 대한 해결책은 없습니다. 가능한 한 빨리 패치 버전 중 하나로 업데이트하는 것이 좋습니다. 세부 로그를 활성화하고 다음 유형의 메시지를 찾아 보면 이 문제의 영향을 받고 있는지를 확인할 수 있습니다.

    bash
    $
    error querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": error calling kubelet endpoint. Got status code: 500
  • Issue 87730: 이 문제로 인해 최소 로드를 실행할 때 Kubelet 메트릭이 매우 느려집니다. 시간 초과 오류로 인해 통합이 실패합니다. 이 문제에 대한 패치가 쿠버네티스 1.18에 추가되었으며 1.15.12, 1.16.9 및 1.17.5로 백포트되었습니다. 가능한 한 빨리 패치 버전 중 하나로 업데이트하는 것이 좋습니다. 이 문제를 완화하려면 TIMEOUT 구성 옵션을 사용하여 통합 시간 초과를 늘릴 수 있습니다. 세부 로그를 활성화하고 다음 유형의 메시지를 찾아 보면 이 문제의 영향을 받고 있는지를 확인할 수 있습니다.

    bash
    $
    error querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

EKS Fargate에서 쿠버네티스 워크로드를 모니터링할 때 이 옵션을 사용합니다. 이 통합은 모니터링해야 하는 각 포드에 인프라 에이전트와 nri-kubernetes 통합이 포함된 사이드카를 자동으로 주입합니다.

미리보기

이 기능은 현재 미리 보기 상태입니다.

뉴렐릭은 모니터링해야 하는 각 파드에 인프라 에이전트와 nri-kubernetes 통합이 포함된 사이드카를 자동으로 주입하여 EKS Fargate에서 쿠버네티스 워크로드 모니터링을 지원합니다.

동일한 쿠버네티스 클러스터에 EC2 노드도 포함되어 있는 경우 솔루션도 모든 노드에 DaemonSet로 배포됩니다. EC2 노드에 예약된 파드에 사이드카가 삽입되지 않으며 Fargate 노드에 DaemonSet가 배포되지 않습니다. Fargate 노드와 EC2 노드가 모두 포함된 하이브리드 인스턴스의 예는 다음과 같습니다.

혼합된 환경에서 통합은 Fargate 노드에 대해 사이드카만 사용합니다.

뉴렐릭은 Fargate 또는 EC2 노드 등 예약된 위치에 관계없이 모든 쿠버네티스 오브젝트에 대해 지원되는 모든 메트릭을 수집합니다. Fargate의 제한 사항으로 인해 뉴렐릭 통합은 Fargate 노드에서 권한 없는 모드로 실행되도록 제한됩니다. 이는 실행 중인 프로세스와 같이 일반적으로 호스트에서 직접 가져오는 메트릭을 Fargate 노드에서 사용할 수 없음을 의미합니다.

두 시나리오 모두에서 에이전트는 KSM(Kube State Metrics), Kubelet 및 cAdvisor에서 데이터를 스크랩하고 동일한 포맷으로 데이터를 보냅니다.

중요

다른 쿠버네티스 클러스터와 마찬가지로 뉴렐릭 솔루션에서도 KSM(Kube State Metrics) 인스턴스를 배포하고 모니터링해야 합니다. Helm Chart 및/또는 설치 프로그램은 기본적으로 이를 자동으로 수행하지만 클러스터에 이미 작동 중인 KSM 인스턴스가 있는 경우 이 동작을 비활성화할 수 있습니다. 이 KSM 인스턴스는 다른 워크로드와 마찬가지로 모니터링되며, Fargate 노드에 예약된 경우 사이드카를 주입하고, EC2 노드에 예약된 경우 DaemonSet의 로컬 인스턴스를 주입하여 모니터링됩니다.

nri-prometheus, nri-metadata-injection, nri-kube-events 등 쿠버네티스를 위한 뉴렐릭 솔루션의 다른 구성 요소에는 특별한 특징이 없으며, Fargate가 아닌 환경에서와 마찬가지로 Helm Chart로 배포됩니다.

설치

두 가지 방법 중 선택하여 EKS Fargate 클러스터에 뉴렐릭의 풀 옵저버빌리티를 설치할 수 있습니다.

  • 자동 주입(권장)

  • 수동 주입

    선택한 접근 방식에 관계없이 설치 후 경험은 동일합니다. 컨테이너를 주입하는 방법만 다릅니다. 모니터링하려는 각 배포를 수동으로 수정할 필요가 없으므로 뉴렐릭 인프라 모니터링 연산자를 사용하여 자동 주입을 설정하는 것을 권합니다.

    자동 주입(권장)

    기본적으로 Fargate 지원이 활성화되면 뉴렐릭은 클러스터(newrelic-infra-operator)에 연산자를 배포합니다. 배포가 되면, 이 연산자는 Fargate 노드에 예약된 파드에 모니터링 사이드카를 자동으로 주입하고, Secrets, ClusterRoleBindings 및 기타 관련 리소스의 생성과 업데이트도 관리를 합니다.

    이 연산자는 레이블 셀렉터를 통해 파드와 네임스페이스 모두에서 주입 범위를 좁히거나 넓히는 데 사용할 수 있는 다양한 고급 구성 옵션을 허용합니다.

    연산자의 역할

    백그라운드에서 연산자는 클러스터에 생성될 파드 오브젝트를 수정할 수 있도록 해주는 MutatingWebhookConfiguration을 설정합니다. 이 이벤트에서 생성 중인 파드가 사용자의 구성과 일치하면 연산자는 다음을 수행합니다.

  1. 뉴렐릭 쿠버네티스 통합이 포함된 파드에 사이드카 컨테이너를 추가합니다.

  2. 시크릿이 존재하지 않으면 뉴렐릭

    을 포함하는 파드와 동일한 네임스페이스에 시크릿을 생성합니다. 이는 사이드카가 데이터를 보고하는 데 필요합니다.

  3. 연산자 차트에서 이전에 생성한 ClusterRoleBinding에 파드의 서비스 계정을 추가하면, 이 사이드카에 쿠버네티스 메트릭 엔드포인트에 도달하는 데 필요한 권한이 부여됩니다.

    ClusterRoleBinding은 삽입되는 파드에 다음 권한을 부여합니다.

    rules:
  • apiGroups: [""] resources:

    • "nodes"
    • "nodes/metrics"
    • "nodes/stats"
    • "nodes/proxy"
    • "pods"
    • "services"
    • "namespaces" verbs: ["get", "list"]
  • nonResourceURLs: ["/metrics"] verbs: ["get"]

    <Callout variant="tip">
    사이드카를 삽입하여 연산자가 설치되기 전에 배포된 파드에서 메트릭을 얻으려면, 영향을 받는 배포의 롤아웃(다시 시작)을 수동으로 수행해야 합니다. 이렇게 하면 파드가 생성될 때 연산자가 모니터링 사이드카를 주입할 수 있습니다. 뉴렐릭은 예상치 못한 서비스 중단 및 리소스 사용량 급증을 방지하기 위해 이 작업이 자동으로 수행되지 않도록 하고 있습니다.
    </Callout>
    <Callout variant="important">
    `newrelic` 네임스페이스(또는 설치를 위해 선택한 네임스페이스)를 선언하는 셀렉터를 사용하여 Fargate 프로필을 생성해야 합니다.
    </Callout>
    주입 워크플로우는 다음과 같습니다.
    <img
    title="Diagram showing the workflow of sidecar injection"
    alt="Diagram showing the workflow of sidecar injection"
    src={kubernetesFargateWorkflow}
    />
    #### 자동 주입 설치 [#auto-injection-install]
    <Callout variant="tip">
    다음 단계는 기본 설정을 위한 것입니다. 이 작업을 완료하기 전에 아래 [구성](#config-auto) 섹션을 살펴보고 자동 주입에서 수정할 부분이 있는지 확인하시기 바랍니다.
    </Callout>
    아직 수행하지 않았다면, 먼저 뉴렐릭 Helm 저장소를 추가합니다.
    ```shell
    helm repo add newrelic https://helm-charts.newrelic.com

    그런 다음, 인프라 사이드카 주입을 담당하는 연산자를 설치할 수 있도록 values.yaml 파일을 생성합니다. 이 파일은 구성을 정의하는 데 사용됩니다.

    ## Global values
    global:
    # -- The cluster name for the Kubernetes cluster.
    cluster: "_YOUR_K8S_CLUSTER_NAME_"
    # -- The license key for your New Relic Account. This will be preferred configuration option if both `licenseKey` and `customSecret` are specified.
    licenseKey: "_YOUR_NEW_RELIC_LICENSE_KEY_"
    # -- (bool) In each integration it has different behavior. Enables operating system metric collection on each EC2 K8s node. Not applicable to Fargate nodes.
    # @default -- false
    privileged: true
    # -- (bool) Must be set to `true` when deploying in an EKS Fargate environment
    # @default -- false
    fargate: true
    ## Enable nri-bundle sub-charts
    newrelic-infra-operator:
    # Deploys the infrastructure operator, which injects the monitoring sidecar into Fargate pods
    enabled: true
    tolerations:
    - key: "eks.amazonaws.com/compute-type"
    operator: "Equal"
    value: "fargate"
    effect: "NoSchedule"
    config:
    ignoreMutationErrors: true
    infraAgentInjection:
    # Injection policies can be defined here. See [values file](https://github.com/newrelic/newrelic-infra-operator/blob/main/charts/newrelic-infra-operator/values.yaml#L114-L125) for more detail.
    policies:
    - namespaceName: namespace-a
    - namespaceName: namespace-b
    newrelic-infrastructure:
    # Deploys the Infrastructure Daemonset to EC2 nodes. Disable for Fargate-only clusters.
    enabled: true
    nri-metadata-injection:
    # Deploy our mutating admission webhook to link APM and Kubernetes entities
    enabled: true
    kube-state-metrics:
    # Deploys Kube State Metrics. Disable if you are already running KSM in your cluster.
    enabled: true
    nri-kube-events:
    # Deploy the Kubernetes events integration.
    enabled: true
    newrelic-logging:
    # Deploys the New Relic's Fluent Bit daemonset to EC2 nodes. Disable for Fargate-only clusters.
    enabled: true
    newrelic-prometheus-agent:
    # Deploys the Prometheus agent for scraping Prometheus endpoints.
    enabled: true
    config:
    kubernetes:
    integrations_filter:
    enabled: true
    source_labels: ["app.kubernetes.io/name", "app.newrelic.io/name", "k8s-app"]
    app_values: ["redis", "traefik", "calico", "nginx", "coredns", "kube-dns", "etcd", "cockroachdb", "velero", "harbor", "argocd", "istio"]

    마지막으로, 파일을 생성하고 필요한 수정을 했다면, 다음 Helm 명령어를 사용하여 솔루션을 배포합니다.

    bash
    $
    helm upgrade --install newrelic-bundle newrelic/nri-bundle -n newrelic --create-namespace -f values.yaml

    중요

    하이브리드 클러스터(EC2 및 Fargate 노드 모두 포함)에 솔루션을 배포하는 경우 해당 솔루션이 Fargate 프로필에서 선택되지 않았는지 확인합니다. 선택이 되면 DaemonSet 인스턴스가 보류 상태로 계속 유지됩니다. Fargate만 있는 환경에서는 DaemonSet 인스턴스가 생성되지 않으므로 이는 문제가 되지 않습니다.

    구성

    자동 주입의 다양한 측면을 구성할 수 있습니다. 기본적으로 운영자는 Job 또는 BatchJob의 일부가 아닌 Fargate 노드에 배포된 모든 파드에 모니터링 사이드카를 주입합니다.

    이 동작은 구성 옵션을 통해 변경할 수 있습니다. 예를 들어, 주입되는 파드의 선택 범위를 좁히거나 넓히는 셀렉터를 정의하고, 연산자에게 리소스를 할당하고, 사이드카를 조정할 수 있습니다. 또한 다른 속성, 레이블, 환경 변수를 추가할 수도 있습니다. README.mdvalue.yaml 차트를 참조하십시오.

    중요

    사용자가 주입 규칙을 정의하면 Fargate에 예약되지 않은 파드에 사이드카 주입을 방지하는 기본 규칙 세트가 삭제됩니다. 사용자가 정의한 규칙이 동일한 효과를 갖는지 확인하십시오. 그렇지 않으면 DaemonSet가 배포된 하이브리드 클러스터에서 EC2에 예약된 파드가 두 번 모니터링되어 데이터가 부정확하거나 중복됩니다.

    최신 버전 또는 새로운 구성으로 업데이트

    EKS Fargate 통합의 최신 버전으로 업데이트하려면 helm repo update newrelic을 사용하여 Helm 저장소를 업그레이드하고 위 명령어를 다시 실행하여 번들을 다시 설치하십시오.

    삽입된 인프라 에이전트 구성이나 연산자 자체를 업데이트하려면 values-newrelic.yaml을 수정하고 Helm 릴리스를 새 구성으로 업그레이드합니다. 연산자는 즉시 업데이트되며 워크로드는 다음에 다시 시작할 때 새 버전으로 계측됩니다. 즉시 업그레이드하려면 다음을 실행하여 워크로드를 강제로 다시 시작할 수 있습니다.

    bash
    $
    kubectl rollout restart deployment YOUR_APP

    Fargate 통합 제거

    자동 주입을 수행하는 사이드카를 제거하고 뉴렐릭 솔루션의 나머지 부분은 유지하려면 Helm을 사용하여 values.yaml 파일 또는 명령줄(--set)에서 infra-operator.enabledfalse로 설정하여 인프라 연산자를 비활성하고, 위의 설치 명령을 다시 실행합니다.

    --set global.fargate=true 플래그를 유지하는 것을 권합니다. 이 플래그가 자동 주입을 활성화하지는 않지만 설치의 다른 구성 요소들이 Fargate를 인식하게 만들어 원치 않는 동작이 수행되지 않도록 해주기 때문입니다.

    전체 솔루션을 제거하려면:

  1. Helm 릴리스를 완전히 제거합니다.

  2. 사이드카를 제거하려면 파드를 롤아웃합니다.

    bash
    $
    kubectl rollout restart deployment YOUR_APP
  3. 시크릿 가비지 컬렉션을 수행합니다.

    bash
    $
    kubectl delete secrets -n YOUR_NAMESPACE -l newrelic/infra-operator-created=true

    알려진 제한사항: 자동 주입

    자동 주입을 사용할 때 주의해야 할 몇 가지 문제는 다음과 같습니다.

  4. 전체 클러스터를 감시하여 더 이상 필요하지 않은 시크릿이 가비지 컬렉션이 되었는지 확인하는 컨트롤러는 현재 없습니다. 그러나 모든 오브젝트들은 동일한 레이블을 공유하여 필요한 경우 모든 리소스를 제거하는 데 사용할 수 있습니다. 뉴렐릭은 단일 명령으로 리소스를 삭제하는 데 사용할 수 있는 newrelic/infra-operator-created: true 레이블을 주입합니다.

  5. 현재로서는 주입된 사이드카를 사용하여 파드에서 실행 중인 서비스를 모니터링할 수 없습니다. 사이드카는 쿠버네티스 자체만 모니터링합니다. 그러나 고급 사용자는 이러한 파드를 자동 주입에서 제외시키고 해당 파드를 구성해 적절한 위치에 마운트하여 온호스트 통합이 활성화된 사이드카의 사용자 정의 버전을 수동으로 주입할 수 있습니다. 도움이 필요하면 이 튜토리얼을 참조하십시오.

    수동 주입

    자동 주입에 대해 우려 사항이 있는 경우 Fargate 노드에 예약될 예정인 워크로드의 매니페스트를 수정하여 직접 사이드카를 주입할 수 있습니다. EC2 노드에 예약된 배포에 사이드카를 추가하면 데이터가 잘못되거나 중복될 수 있습니다. 특히 해당 노드가 이미 DaemonSet로 모니터링되고 있는 경우에는 더욱 그렇습니다.

    사이드카가 데이터를 성공적으로 보고하려면 다음 오브젝트가 필요합니다.

  • nri-kubernetes 통합에 필요한 권한을 제공하는 ClusterRole

  • ClusterRole과 파드의 서비스 계정을 연결하는 ClusterRoleBinding

  • 각 Fargate 네임스페이스에 뉴렐릭 licenseKey를 저장하는 시크릿

  • 모니터링되는 워크로드의 사양 템플릿에 있는 사이드카 컨테이너

    수동 주입 설치

    이러한 수동 설정 단계는 일반적인 설치를 위한 것입니다. 이 작업을 완료하기 전에 아래 구성 섹션을 살펴보고 자동 주입에서 수정할 부분이 있는지 확인하시기 바랍니다.

    수동 주입의 경우 다음을 완료합니다.

  1. ClusterRole이 존재하지 않으면 먼저 생성한 후 메트릭 엔드포인트에 도달하는 데 필요한 권한을 부여합니다. 동일한 클러스터에서 여러 애플리케이션을 모니터링하는 경우에도 이 작업은 한 번만 수행하면 됩니다.

  2. 모니터링하려는 각 워크로드에 대해, newrelic/infrastructure-k8s 이미지에 대한 추가 사이드카 컨테이너를 추가합니다. 다음은 주입된 사이드카의 예입니다.

  3. ClusterRoleBinding을 생성하거나 이전에 생성된 모니터링할 애플리케이션의 ServiceAccount를 추가합니다. 모든 워크로드는 동일한 ClusterRoleBinding을 공유할 수 있지만 각 워크로드의 ServiceAccount를 여기에 추가해야 합니다.

  4. 뉴렐릭

    을 포함하는 시크릿을 생성합니다. 각 네임스페이스에는 고유한 시크릿이 필요합니다.

    구성

    사이드카 에이전트의 매니페스트를 수동으로 추가하는 경우 에이전트 구성 옵션을 사용하여 에이전트 동작을 구성할 수 있습니다. 도움이 필요하면 인프라 에이전트 구성 설정을 참조하십시오.

    최신 버전으로 업데이트

    구성 요소를 업데이트하려면 배포된 yaml을 수정하기만 하면 됩니다.

    주입된 컨테이너의 필드를 업데이트하면 파드가 다시 생성됩니다.

    중요

    에이전트는 뉴렐릭 을 핫로드할 수 없습니다. 시크릿을 업데이트한 후 배포를 다시 롤아웃해야 합니다.

    Fargate 통합 제거

    주입된 컨테이너와 관련 리소스를 제거하려면 다음을 제거하면 됩니다.

  • 더 이상 모니터링하지 않아도 되는 워크로드의 사이드카

  • newrelic 라이선스가 포함된 모든 시크릿

  • ClusterRoleClusterRoleBinding 오브젝트

    사이드카 컨테이너를 제거하면 파드가 다시 생성됩니다.

    로깅

    AWS에서 부과한 보안 제약으로 인해 Fargate 노드에서는 뉴렐릭 로깅을 사용할 수 없지만, 다음과 같은 몇 가지 로깅 옵션을 사용할 수 있습니다.

  • 로깅에 Fluentbit를 사용하는 경우 로그 전달을 위한 쿠버네티스 플러그인을 참조하십시오.

  • 로그 데이터가 이미 AWS FireLens에서 모니터링되고 있는 경우 로그 전달을 위한 AWS FireLens 플러그인을 참조하십시오.

  • Amazon CloudWatch Logs에서 로그 데이터를 이미 모니터링하고 있는 경우 Kinesis Data Firehose를 사용한 로그 스트리밍을 참조하십시오.

  • CloudWatch 로그 전송에 대해서는 AWS Lambda를 참조하십시오.

  • Amazon ECS에서 뉴렐릭으로 로그를 전달하는 세 가지 방법을 참조하십시오.

    문제 해결

    DaemonSet 복제본이 Fargate 노드에 배포

    Fargate 노드에서 인프라 DaemonSet 복제본이 예약되고 있다면, 이는 nodeAffinity 규칙이 제대로 구성되지 않았기 때문일 수 있습니다.

    global.fargate 옵션이 true로 설정되었는지 확인합니다. 명령줄(--set global.fargate=true) 또는 values.yaml 파일을 사용해 확인할 수 있습니다. 설치 방법이 Helm이 아닌 경우 Fargate 노드를 제외하려면 nodeAffinity 규칙을 수동으로 추가해야 합니다.

    허용되지 않는 오염으로 인한 이벤트 FailedScheduling

    파드를 생성하려고 시도하는 동안 다음 이벤트가 발생하는 경우 자동 주입 설치에 설명된 tolerationsvalues.yaml 파일에 추가해야 합니다.

    LAST SEEN | TYPE | REASON | OBJECT | MESSAGE
    :--|:--|:--|:--|:--
    3m9s (x2 over 8m10s) | Warning | FailedScheduling | Pod/no-fargate-deploy-cbddd6ccf-8f9x4 | 0/2 nodes are available: 2 node(s) had untolerated taint {eks.amazonaws.com/compute-type: fargate}. preemption: 0/2 nodes are available: 2 Preemption is not helpful for scheduling..

    파드가 너무 많은 것으로 인한 이벤트 FailedScheduling

    파드를 생성하려고 시도하는 동안 다음 이벤트가 발생하는 경우 설치가 발생하는 네임스페이스의 이름을 지정하는 셀렉터가 있는 Fargate 프로필이 있는지 확인합니다.

    LAST SEEN | TYPE | REASON | OBJECT | MESSAGE
    :--|:--|:--|:--|:--
    61s | Warning | FailedScheduling | Pod/newrelic-bundle-newrelic-infra-operator-admission-create-d8ggt | 0/2 nodes are available: 2 Too many pods. preemption: 0/2 nodes are available: 2 No preemption victims found for incoming pod..

    EKS 데이터 보기

    다음은 뉴렐릭 UI에서 Fargate 노드가 어떻게 표시되는지에 대한 예입니다.

    AWS 데이터를 보려면:

  1. one.newrelic.com > All capabilities > Infrastructure > Kubernetes

    로 이동하여 다음 중 하나를 수행합니다.

  • 데이터를 보려면 통합 이름을 선택합니다.
  • AWS 데이터를 보려면 데이터 탐색 아이콘을 선택합니다.
  1. 두 개의 Fargate 태그를 사용하여 데이터를 필터링합니다.
  • computeType=serverless
  • fargateProfile=[name of the Fargate profile to which the workload belongs]

Helm을 사용하여 통합을 설치하려는 경우 다음 두 가지 옵션이 있습니다.

  1. 필수 필드가 미리 채워진 Helm 명령을 제공하는 안내식 설치를 사용합니다. 이 옵션을 사용하면 Helm 릴리스가 아닌 일반 매니페스트로 통합을 설치할 수도 있습니다.

  2. values.yaml 파일을 통한 수동 구성. 이 탭에서는 이를 수행하는 방법을 안내합니다.

    Helm은 쿠버네티스 위에 있는 패키지 매니저입니다. 설치, 업그레이드 또는 개정 추적을 용이하게 하고 쿠버네티스에 설치하는 서비스들의 종속성을 관리합니다. 아직 계정이 없으시면, 아래에서 무료 뉴렐릭 계정을 생성해 지금 바로 데이터 모니터링을 시작하십시오.

    설치 프로그램 시작

    호환성 및 요구사항

    Helm이 컴퓨터에 설치되어 있어야 합니다. 쿠버네티스 통합 버전 3에는 Helm 버전 3이 필요합니다.

    Helm을 사용하여 쿠버네티스 통합을 설치하려면 뉴렐릭 와 쿠버네티스 클러스터의 이름이 필요합니다:

  3. 를 찾아서 복사합니다.

  4. 클러스터가 표시될 이름을 선택합니다. 예를 들어 다음과 같은 출력을 사용할 수 있습니다.

    bash
    $
    kubectl config current-context

    중요

    나중에 설치 과정에서 필요하므로 이 값을 안전한 곳에 기록해 두시기 바랍니다.

    Helm과 쿠버네티스 통합 설치

    뉴렐릭에는 플랫폼에 다양한 기능을 제공하는 다양한 구성 요소에 대한 Helm 차트가 여러 개 있습니다.

  • newrelic-infrastructure: 주요 쿠버네티스 통합 및 인프라 에이전트를 포함합니다. 쿠버네티스 대시보드와 쿠버네티스 클러스터 탐색기에 표시되는 대부분의 데이터를 보고하는 일을 담당하는 뉴렐릭 쿠버네티스 환경의 핵심 구성요소입니다.

  • newrelic-logging: 뉴렐릭의 Fluent Bit 출력 플러그인에 DaemonSet을 제공하여 로그를 뉴렐릭으로 쉽게 전달할 수 있도록 합니다.

  • nri-kube-events: 클러스터 이벤트(예: kubectl get events)를 수집하고 뉴렐릭에 보고합니다.

  • newrelic-prometheus-agent: 뉴렐릭의 Prometheus Configurator는 에이전트 모드에서 Prometheus를 구성하고 원격 쓰기 엔드포인트를 사용하여 텔레메트리를 뉴렐릭에 보고합니다.

  • nri-metadata-injection: 컨테이너에 몇 가지 환경 변수를 삽입하는 최소 MutatingAdmissionWebhook를 설정합니다. 여기에는 클러스터와 뉴렐릭 설치에 대한 메타데이터가 포함되어 있으며, 나중에 APM을 사용하여 계측된 애플리케이션에서 픽업되어 APM과 인프라 데이터를 상호 연관시킬 수 있도록 합니다.

  • nri-statsd: 뉴렐릭 StatsD 통합.

    이러한 구성 요소를 별도로 설치할 수 있지만 nri-bundle 차트를 사용하는 것이 좋습니다. 뉴렐릭은 위에서 언급한 개별 차트에 대한 래퍼 또는 메타 패키지 역할을 하는 차트를 제공합니다. 이 차트를 사용하면 다음과 같은 이점이 있습니다.

  • 설치되는 구성 요소를 완벽하게 제어할 수 있습니다. 각 구성 요소는 별도의 Helm 종속성으로 설치됩니다. 여기 언급된 매개변수를 사용하여 개별적으로 구성할 수 있습니다.

  • 설치된 버전이 서로 호환되는지 확인합니다.

  • 설치된 차트 전반에서 구성 값이 일관되어야 합니다.

    nri-bundle 차트는 쿠버네티스 가이드 설치에 의해 설치 및 구성되는 차트입니다.

    Helm을 사용한 nri-bundle 설치 및 구성

  1. Helm 및 kubectl을 실행할 시스템에서 적절한 컨텍스트를 사용하고 있는지 확인합니다.

    다음을 사용하여 사용 가능한 컨텍스트를 확인할 수 있습니다.

    bash
    $
    kubectl config get-contexts

    다음을 사용하여 원하는 컨텍스트로 전환합니다.

    bash
    $
    kubectl config use-context _CONTEXT_NAME_
  2. 뉴렐릭 Helm 차트 리포지토리 추가:

    bash
    $
    helm repo add newrelic https://helm-charts.newrelic.com
  3. 구성을 정의하는 데 사용할 파일을 생성하고 values-newrelic.yaml라는 이름을 지정합니다.

    global:
    licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
    cluster: _K8S_CLUSTER_NAME_
    newrelic-prometheus-agent:
    # Automatically scrape prometheus metrics for annotated services in the cluster
    # Collecting prometheus metrics for large clusters might impact data usage significantly
    enabled: true
    nri-metadata-injection:
    # Deploy our webhook to link APM and Kubernetes entities
    enabled: true
    nri-kube-events:
    # Report Kubernetes events
    enabled: true
    newrelic-logging:
    # Report logs for containers running in the cluster
    enabled: true
    kube-state-metrics:
    # Deploy kube-state-metrics in the cluster.
    # Set this to true unless it is already deployed.
    enabled: true
  4. 다음 명령을 실행하여 차트의 모든 항목이 올바르게 구성되었는지 확인합니다. --dry-run--debug를 지정하는 단계로, 이 단계에서는 아무것도 설치되지 않습니다.

    bash
    $
    helm upgrade --install newrelic-bundle newrelic/nri-bundle \
    >
    --namespace newrelic --create-namespace \
    >
    -f values-newrelic.yaml \
    >
    --dry-run \
    >
    --debug

    다음 플래그를 확인하고 조정하십시오.

  • global.licenseKey=YOUR_NEW_RELIC_LICENSE_KEY: 계정에 유효한

    로 설정되어야 합니다.

  • global.cluster=K8S_CLUSTER_NAME: 뉴렐릭 UI에서 클러스터를 식별하는 데 사용되므로, 뉴렐릭 계정에 구성된 다른 쿠버네티스 클러스터에서 사용되지 않는 설명 값을 사용해야 합니다.

  • kube-state-metrics.enabled=true: 이 값을 true로 설정하면 통합을 실행하는 데 필요한 Kube State Metrics(KSM)가 자동으로 설치됩니다. KSM이 다른 네임스페이스에 있더라도 클러스터에 이미 있는 경우 이 값을 false로 설정할 수 있습니다.

  • newrelic-prometheus-agent.enabled=true: 클러스터에 있는 Prometheus 엔드포인트에서 자동으로 데이터를 수집하는 Prometheus 에이전트를 배포합니다.

  • nri-metadata-injection.enabled=true: 뉴렐릭 APM으로 계측된 애플리케이션을 쿠버네티스에 연결할 수 있도록 하는 환경 변수를 추가하는 소규모 웹훅을 설치합니다.

    쿠버네티스 차트에는 특정 요구 사항에 더 잘 맞도록 수정할 수 있는 포괄적인 플래그와 조정 가능 세트가 있습니다. 변경할 수 있는 사항을 보려면 아래의 통합 구성 섹션을 확인하십시오.

  1. --debug--dry-run 없이 명령어를 실행하여 쿠버네티스 통합을 설치합니다.

    bash
    $
    helm upgrade --install newrelic-bundle newrelic/nri-bundle \
    >
    --namespace newrelic --create-namespace \
    >
    -f values-newrelic.yaml

    중요

    쿠버네티스 버전 1.27.x 또는 뉴렐릭이 지원하는 더 낮은 버전을 사용하고 있는지 확인합니다.

  2. 파드가 배포되고 안정적인 상태에 도달하는지 확인합니다.

    bash
    $
    kubectl -n newrelic get pods -w

    다음 상태여야 합니다.

  • newrelic-nrk8s-ksm 파드.

  • newrelic-nrk8s-kubelet 클러스터의 각 노드에 대한 파드.

  • newrelic-nrk8s-control-plane 클러스터의 각 마스터 노드에 대한 파드

  • newrelic-kube-state-metrics 파드(설치에 KSM을 포함시킨 경우)

  • newrelic-nri-kube-events 파드(쿠버네티스 이벤트 보고를 활성화한 경우)

  • prometheus-agent 파드( Prometheus 에이전트 통합을 활성화한 경우)

  • newrelic-newrelic-logging 로깅 통합을 활성화한 경우 클러스터의 각 노드에 대한 파드

    이 문서가 설치하는데 도움이 되셨나요?

    통합 구성

    뉴렐릭의 nri-bundle 차트의 설치 지침은 위에서 찾을 수 있으며, 뉴렐릭 솔루션의 구성 요소를 포함하는 몇 가지 다른 차트에 대한 래퍼 또는 메타 패키지 역할을 합니다. 이러한 래퍼를 제공함으로써, 뉴렐릭은 컴포넌트의 차트를 비교적 간단하게 유지하면서, 서로 호환되는 버전들을 통해 제어되는 구성 요소 세트를 제공할 수 있습니다.

    nri-bundle 차트는 여러 개별 차트를 래핑하여 다양한 텔레메트리 데이터를 수집하고 이를 뉴렐릭으로 보냅니다. 번들을 사용하면 필요에 따라 원하는 하위 차트를 선택적으로 활성화할 수 있습니다. 각각의 개별 구성요소를 구성하려면 Helm의 종속성 시스템을 사용해야 합니다. 이는 각 하위 차트에 대한 구성이 values-newrelic.yml 파일의 별도 섹션(각 하위 차트의 이름을 따서 명명됨) 아래에 배치되어야 한다는 의미입니다. 예를 들어 newrelic-infrastructure 차트를 구성하려면 values-newrelic.yaml에 다음을 추가합니다.

    # General settings that apply to all the child charts
    global:
    licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
    cluster: _K8S_CLUSTER_NAME_
    # ... Other settings as shown above
    # Specific configuration for the newrelic-infrastructure child chart
    newrelic-infrastructure:
    verboseLog: true # Enable debug logs
    privileged: false # Install with minimal privileges
    # Other options from https://github.com/newrelic/helm-charts/tree/master/charts/newrelic-infrastructure-v3
    # Specific configuration for the newrelic-logging child chart
    newrelic-logging:
    fluentBit:
    retryLimit: 10

    하위 차트 이름을 접두사로 지정하고 중첩을 점으로 대체함으로써 명령줄을 통해 하위 차트 옵션을 전달할 수도 있습니다.

    helm upgrade --install newrelic-bundle newrelic/nri-bundle \
    --namespace=newrelic \
    --set global.licenseKey=_YOUR_NEW_RELIC_LICENSE_KEY_ \
    --set global.cluster=_K8S_CLUSTER_NAME_ \
    --set newrelic-infrastructure.privileged=false \
    --set newrelic-infrastructure.verboseLog=true \
    --set newrelic-logging.fluentBit.retryLimit=10

    각 하위 차트에 대해 조정할 수 있는 플래그(예: scrape-interval)의 전체 목록은 해당 저장소에서 찾을 수 있습니다.

  • newrelic-infrastructure

  • 디버그 로그, 권한 모드, 컨트롤 플레인 모니터링 등을 설정합니다.

  • nri-kube-events

  • nri-metadata-injection

  • APM 연동을 위한 Webhook 배포 방식을 설정합니다.

  • 스크래핑할 Prometheus 엔드포인트을 설정합니다.

  • newrelic-logging

  • 뉴렐릭에 보낼 로그 또는 로그 속성을 구성합니다.

    하위 차트에 대한 구성 옵션을 지정할 때 values-newrelic.yaml의 차트 이름을 따라 명명된 섹션 아래에 두어야 합니다.

    명령줄을 통해 하위 차트 옵션을 전달하려면 하위 차트 이름을 접두사로 지정하고 중첩을 점으로 바꿔야 합니다.

GKE Autopilot 클러스터에 쿠버네티스 통합을 설치하는 방법에는 세 가지가 있습니다.

  • 안내 설치에 포함된 뉴렐릭 CLI

  • 필수 값이 미리 채워진 Helm 명령어

  • 필수 값이 미리 채워진 일반 매니페스트

쿠버네티스 데이터 사용

자세히 알아보기:

이 문서가 설치하는데 도움이 되셨나요?

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.