• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

EKS Fargate에 설치

시사

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

New Relic은 모니터링해야 하는 각 포드에 인프라 에이전트 및 nri-kubernetes 통합이 포함된 사이드카를 자동으로 삽입하여 EKS Fargate에서 Kubernetes 워크로드 모니터링을 지원합니다.

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

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

New Relic은 예약된 위치에 관계없이 Fargate 또는 EC2 노드에 관계없이 모든 Kubernetes 개체에 대해 지원되는 모든 메트릭을 수집합니다. Fargate에 의해 부과된 제한으로 인해 New Relic 통합은 Fargate 노드에서 권한 없는 모드로 실행하는 것으로 제한됩니다. 즉, 실행 중인 프로세스와 같이 일반적으로 호스트에서 직접 가져오는 메트릭은 Fargate 노드에서 사용할 수 없습니다.

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

중요

다른 Kubernetes 클러스터와 마찬가지로 당사 솔루션을 사용하려면 KSM(Kube State Metrics) 인스턴스를 배포하고 모니터링해야 합니다. Helm 차트 및/또는 설치 프로그램은 기본적으로 자동으로 수행하지만 클러스터에 이미 작동 중인 KSM 인스턴스가 있는 경우 이 동작을 비활성화할 수 있습니다. 이 KSM 인스턴스는 다른 워크로드로 모니터링됩니다. Fargate 노드에서 예약된 경우 사이드카를 삽입하고 EC2 노드에서 예약된 경우 DaemonSet 의 로컬 인스턴스로 모니터링합니다.

nri-prometheus , nri-metadata-injectionnri-kube-events 와 같은 Kubernetes용 New Relic 솔루션의 다른 구성요소는 특이 사항이 없으며 Fargate가 아닌 환경에서와 같이 일반적으로 Helm 차트에 의해 배포됩니다.

설치

EKS Fargate 클러스터에 New Relic 전체 관찰 가능성을 설치하기 위한 두 가지 대안 중에서 선택할 수 있습니다.

선택한 접근 방식에 관계없이 설치 후 경험은 완전히 동일합니다. 유일한 차이점은 컨테이너가 주입되는 방식입니다. 모니터링하려는 각 배포를 수동으로 편집할 필요가 없기 때문에 New Relic 인프라 모니터링 연산자로 자동 주입을 설정하는 것이 좋습니다.

자동 주입(권장)

기본적으로 Fargate 지원이 활성화되면 New Relic은 클러스터( newrelic-infra-operator )에 운영자를 배포합니다. 배포되면 이 운영자는 Fargate 노드에 예약된 포드에 모니터링 사이드카를 자동으로 삽입하는 동시에 Secrets , ClusterRoleBindings 및 기타 관련 리소스의 생성 및 업데이트를 관리합니다.

이 연산자는 포드와 네임스페이스 모두에 대한 레이블 선택기를 사용하여 주입 범위를 좁히거나 넓히는 데 사용할 수 있는 다양한 고급 구성 옵션을 허용합니다.

운영자가 하는 일

뒤에서 운영자는 클러스터에서 생성될 포드 객체를 수정할 수 있도록 MutatingWebhookConfiguration 을 설정합니다. 이 이벤트에서 생성되는 포드가 사용자의 구성과 일치하면 운영자는 다음을 수행합니다.

  1. New Relic Kubernetes 통합이 포함된 포드에 사이드카 컨테이너를 추가합니다.

  2. 비밀이 존재하지 않는 경우 New Relic이 포함된 포드와 동일한 네임스페이스에 비밀을 만듭니다.

    , 사이드카가 데이터를 보고하는 데 필요합니다.

  3. 이전에 운영자 차트에서 생성한 ClusterRoleBinding 에 포드의 서비스 계정을 추가하면 이 사이드카에 Kubernetes 측정항목 엔드포인트에 도달하는 데 필요한 권한이 부여됩니다.

ClusterRoleBinding 은 주입 중인 포드에 다음 권한을 부여합니다.

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

사이드카가 주입되고 따라서 운영자가 설치되기 전에 배포된 포드에서 메트릭을 얻으려면 영향을 받는 배포의 롤아웃(다시 시작)을 수동으로 수행해야 합니다. 이렇게 하면 포드가 생성될 때 운영자가 모니터링 사이드카를 삽입할 수 있습니다. New Relic은 예기치 않은 서비스 중단 및 리소스 사용량 급증을 방지하기 위해 이 작업을 자동으로 수행하지 않도록 선택했습니다.

중요

newrelic 네임스페이스(또는 설치를 위해 선택한 네임스페이스)를 선언하는 선택기를 사용하여 Fargate 프로필을 생성해야 합니다.

주입 워크플로는 다음과 같습니다.

자동 주입 설치

다음 단계는 기본 설정을 위한 것입니다. 이 작업을 완료하기 전에 아래의 구성 섹션을 살펴보고 자동 주입의 측면을 수정하고 싶은지 확인하는 것이 좋습니다.

먼저, 이전에 수행하지 않은 경우 New Relic Helm 저장소를 추가하십시오.

bash
$
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.mdvalues.yaml 차트를 참조하십시오.

중요

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

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

최신 버전의 EKS Fargate 통합으로 업데이트하려면 helm repo update newrelic 을 사용하여 Helm 리포지토리를 업그레이드하고 위의 명령을 다시 실행하여 번들을 다시 설치하세요.

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

bash
$
kubectl rollout restart deployment YOUR_APP

Fargate 통합 제거

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

자동 삽입을 활성화하지 않지만 설치의 다른 구성 요소가 Fargate를 인식하도록 하여 원치 않는 동작을 방지하기 때문에 --set global.fargate=true 플래그를 유지하는 것이 좋습니다.

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

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

  2. 사이드카를 제거하기 위해 포드를 롤아웃합니다.

    bash
    $
    kubectl rollout restart deployment YOUR_APP
  3. 쓰레기 수집 비밀:

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

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

다음은 자동 주입을 사용할 때 알아야 할 몇 가지 문제입니다.

  1. 현재 더 이상 필요하지 않은 비밀이 가비지 수집되는지 확인하기 위해 전체 클러스터를 감시하는 컨트롤러는 없습니다. 그러나 모든 개체는 필요한 경우 모든 리소스를 제거하는 데 사용할 수 있는 동일한 레이블을 공유합니다. 단일 명령으로 리소스를 삭제하는 데 사용할 수 있는 newrelic/infra-operator-created: true 레이블을 삽입합니다.
  2. 현재로서는 주입된 사이드카를 사용하여 포드에서 실행 중인 서비스를 모니터링할 수 없습니다. 사이드카는 Kubernetes 자체만 모니터링합니다. 그러나 고급 사용자는 이러한 포드를 자동 삽입에서 제외하고 사이드카를 구성하고 적절한 위치에 구성을 마운트하여 활성화된 온-호스트 통합이 있는 맞춤형 버전의 사이드카를 수동으로 삽입할 수 있습니다. 도움이 필요하면 이 튜토리얼 을 참조하십시오.

수동 주입

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

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

  • nri-kubernetes 통합에 필요한 권한을 제공하는 ClusterRole
  • ClusterRole 과 포드의 서비스 계정을 연결하는 ClusterRoleBinding
  • 각 Fargate 네임스페이스에 New Relic licenseKey 를 저장하는 비밀
  • 모니터링되는 워크로드의 사양 템플릿에 있는 사이드카 컨테이너

수동 주입 설치

이러한 수동 설정 단계는 일반 설치를 위한 것입니다. 이 작업을 완료하기 전에 아래의 구성 섹션을 살펴보고 자동 주입의 측면을 수정하고 싶은지 확인하십시오.

수동 주입을 위해 다음을 완료하십시오.

  1. ClusterRole 이(가) 없으면 새로 만들고 측정항목 엔드포인트에 도달하는 데 필요한 권한을 부여합니다. 이는 동일한 클러스터에서 여러 애플리케이션을 모니터링하는 경우에도 한 번만 수행하면 됩니다.

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

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

  1. New Relic을 포함하는 비밀 만들기 . 각 네임스페이스에는 자체 비밀이 필요합니다.

구성

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

최신 버전으로 업데이트

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

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

중요

에이전트가 New Relic을 핫로드할 수 없습니다. . 암호를 업데이트한 후 배포를 다시 롤아웃해야 합니다.

Fargate 통합 제거

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

  • 더 이상 모니터링하지 않아야 하는 워크로드의 사이드카입니다.
  • newrelic 라이센스를 포함하는 모든 비밀.
  • ClusterRoleClusterRoleBinding 개체.

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

벌채 반출

New Relic 로깅은 AWS의 보안 제약으로 인해 Fargate 노드에서 사용할 수 없지만 몇 가지 로깅 옵션은 다음과 같습니다.

문제점 해결

DaemonSet 복제본이 Fargate 노드에 배포되고 있습니다.

Fargate 노드에서 Infra DaemonSet 복제본이 예약되고 있는 것을 발견하면 nodeAffinity 규칙이 제대로 구성되지 않았기 때문일 수 있습니다.

명령줄( --set global.fargate=true ) 또는 values.yaml 파일을 통해 global.fargate 옵션을 사용하여 솔루션이 true 에 설치되었는지 다시 확인하십시오. 설치 방법이 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 데이터 보기

다음은 New Relic UI에서 Fargate 노드가 어떻게 보이는지 보여주는 예입니다.

AWS 데이터를 보려면:

  1. one.newrelic.com > All capabilities > Infrastructure > Kubernetes 로 이동하고 다음 중 하나를 수행합니다.

    • 데이터를 보려면 통합 이름을 선택하세요.
    • 데이터 탐색 아이콘을 선택하여 AWS 데이터를 봅니다.
  2. 두 개의 Fargate 태그를 사용하여 데이터를 필터링합니다.

    • computeType=serverless
    • fargateProfile=[name of the Fargate profile to which the workload belongs]
Copyright © 2024 New Relic Inc.

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