Share via


AKS(Azure Kubernetes Service) 컨트롤 플레인 메트릭 모니터링(미리 보기)

AKS(Azure Kubernetes Service) 컨트롤 플레인 상태는 클러스터의 성능 및 안정성에 매우 중요합니다. 컨트롤 플레인 메트릭(미리 보기)은 가용성 및 성능을 더 많이 표시하므로 전반적인 가시성을 최대화하고 최적의 작동을 유지 관리할 수 있습니다. 이러한 메트릭은 Prometheus 및 Grafana와 완벽하게 호환되며 필요한 항목만 저장하도록 사용자 지정할 수 있습니다. 이러한 새 메트릭을 사용하면 API 서버, ETCD, Scheduler, Autoscaler 및 컨트롤러 관리자에서 모든 메트릭을 수집할 수 있습니다.

이 문서는 이 새로운 기능, 이를 구현하는 방법 및 수집된 원격 분석을 관찰하는 방법을 이해하는 데 도움이 됩니다.

필수 구성 요소 및 제한 사항

aks-preview Azure CLI 확장 설치 또는 업데이트

Important

AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.

az extension add 명령을 사용하여 aks-preview Azure CLI 확장을 설치합니다.

az extension add --name aks-preview

확장 버전을 업데이트해야 하는 경우 az extension update 명령을 사용하여 이 작업을 수행할 수 있습니다.

az extension update --name aks-preview

'AzureMonitorMetricsControlPlanePreview' 기능 플래그 등록

다음 예제와 같이 az feature register 명령을 사용하여 AzureMonitorMetricsControlPlanePreview 기능 플래그를 등록합니다.

az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

상태가 Registered로 표시되는 데 몇 분 정도 걸립니다. az feature show 명령을 사용하여 등록 상태를 확인합니다.

az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

상태가 등록됨으로 표시되면 az provider register 명령을 사용하여 Microsoft.ContainerService 리소스 공급자의 등록을 새로 고칩니다.

az provider register --namespace "Microsoft.ContainerService"

AKS 클러스터에서 컨트롤 플레인 메트릭 사용

클러스터를 만드는 동안 또는 기존 클러스터에 대해 Prometheus 추가 기능에 대한 Azure Monitor 관리 서비스를 사용하여 컨트롤 플레인 메트릭을 사용하도록 설정할 수 있습니다. Kubernetes 클러스터에서 Prometheus 메트릭을 수집하려면 Kubernetes 클러스터에 Prometheus 및 Grafana를 사용하도록 설정하고 AKS 클러스터에 대한 CLI 탭의 단계를 따릅니다. 명령줄에서 --generate-ssh-keys--enable-managed-identity 매개 변수를 포함해야 합니다.

클러스터에 이미 Prometheus 추가 기능이 배포된 경우 az aks update를 실행하여 클러스터가 컨트롤 플레인 메트릭 수집을 시작하도록 업데이트할 수 있습니다.

az aks update -n <cluster-name> -g <resource-group>

참고 항목

클러스터 노드에서 수집된 메트릭과 달리, 컨트롤 플레인 메트릭은 ama-metrics 추가 기능의 일부가 아닌 구성 요소에 의해 수집됩니다. AzureMonitorMetricsControlPlanePreview 기능 플래그 및 관리되는 Prometheus 추가 기능을 사용하도록 설정하면 컨트롤 플레인 메트릭이 수집됩니다. 메트릭 수집을 사용하도록 설정한 후 데이터가 작업 영역에 표시되는 데 몇 분 정도 걸릴 수 있습니다.

컨트롤 플레인 메트릭 쿼리

컨트롤 플레인 메트릭은 클러스터 지역의 Azure Monitor 작업 영역에 저장됩니다. 이러한 메트릭은 작업 영역 또는 작업 영역에 연결된 Azure Managed Grafana 인스턴스를 통해 직접 쿼리할 수 있습니다. 클러스터와 연결된 Azure Monitor 작업 영역을 찾으려면 선택한 AKS 클러스터의 왼쪽 창에서 모니터링 섹션으로 이동하여 인사이트를 선택합니다. 클러스터의 Container Insights 페이지에서 모니터 설정을 선택합니다.

Azure Monitor 작업 영역의 스크린샷.

Azure Managed Grafana를 사용하여 데이터를 시각화하는 경우 다음 대시보드를 가져올 수 있습니다. AKS는 컨트롤 플레인 원격 분석 데이터를 실시간으로 보고 분석하는 데 도움이 되는 대시보드 템플릿을 제공합니다.

컨트롤 플레인 메트릭 사용자 지정

기본적으로 AK에는 각 구성 요소에 대해 수집하고 저장할 미리 구성된 메트릭 집합이 포함됩니다. API serveretcd는 기본적으로 사용하도록 설정됩니다. 이 목록은 ama-settings-configmap를 통해 사용자 지정할 수 있습니다. minimal-ingestion 프로필 메트릭 목록은 여기에서 사용할 수 있습니다.

다음은 기본 대상을 나열합니다.

controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true

다양한 옵션은 여기에 나열된 Azure Managed Prometheus와 유사합니다.

모든 ConfigMaps는 모든 클러스터의 kube-system 네임스페이스에 적용해야 합니다.

기본 대상에 대한 최소 메트릭만 수집

이 동작은 설정이 default-targets-metrics-keep-list.minimalIngestionProfile="true"인 기본 동작입니다. 이 문서의 뒷부분에 나열된 메트릭만 각 기본 대상에 대해 수집되며, 이 경우에는 controlplane-apiservercontrolplane-etcd입니다.

모든 대상에서 모든 메트릭 수집

클러스터의 모든 대상에서 모든 메트릭을 수집하려면 다음 단계를 수행합니다.

  1. ConfigMap 파일 ama-metrics-settings-configmap.yaml을 다운로드하고 이름을 configmap-controlplane.yaml로 바꿉니다.

  2. minimalingestionprofile = false를 설정하고 스크래핑하려는 default-scrape-settings-enabled 아래의 대상이 true로 설정되었는지 확인합니다. 다음 대상만 지정할 수 있습니다. controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manager, controlplane-etcd.

  3. kubectl apply 명령을 실행하여 ConfigMap을 적용합니다.

    kubectl apply -f configmap-controlplane.yaml
    

    구성이 적용된 후 컨트롤 플레인에서 스크래핑된 지정된 대상의 메트릭이 Azure Monitor 작업 영역에 표시되기까지 몇 분 정도 걸립니다.

최소 메트릭 외에도 몇 가지 다른 메트릭 수집

Minimal ingestion profile은 기본 대시보드, 기본 기록 규칙 및 기본 경고에서 사용되는 메트릭만 수집되므로 메트릭 수집 볼륨을 줄이는 데 도움이 되는 설정입니다. 이 동작을 사용자 지정하려면 다음 단계를 수행합니다.

  1. ConfigMap 파일 ama-metrics-settings-configmap을 다운로드하고 이름을 configmap-controlplane.yaml로 바꿉니다.

  2. minimalingestionprofile = true를 설정하고 스크래핑하려는 default-scrape-settings-enabled 아래의 대상이 true로 설정되었는지 확인합니다. 다음 대상만 지정할 수 있습니다. controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manager, controlplane-etcd.

  3. default-targets-metrics-keep-list 아래에서 true 대상에 대한 메트릭 목록을 지정합니다. 예를 들면 다음과 같습니다.

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • kubectl apply 명령을 실행하여 ConfigMap을 적용합니다.

    kubectl apply -f configmap-controlplane.yaml
    

    구성이 적용된 후 컨트롤 플레인에서 스크래핑된 지정된 대상의 메트릭이 Azure Monitor 작업 영역에 표시되기까지 몇 분 정도 걸립니다.

일부 대상에서 특정 메트릭만 수집

  1. ConfigMap 파일 ama-metrics-settings-configmap을 다운로드하고 이름을 configmap-controlplane.yaml로 바꿉니다.

  2. minimalingestionprofile = false를 설정하고 스크래핑하려는 default-scrape-settings-enabled 아래의 대상이 true로 설정되었는지 확인합니다. 다음 대상만 지정할 수 있습니다. controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler,controlplane-kube-controller-manager, controlplane-etcd.

  3. default-targets-metrics-keep-list 아래에서 true 대상에 대한 메트릭 목록을 지정합니다. 예를 들면 다음과 같습니다.

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • kubectl apply 명령을 실행하여 ConfigMap을 적용합니다.

    kubectl apply -f configmap-controlplane.yaml
    

    구성이 적용된 후 컨트롤 플레인에서 스크래핑된 지정된 대상의 메트릭이 Azure Monitor 작업 영역에 표시되기까지 몇 분 정도 걸립니다.

컨트롤 플레인 메트릭 문제 해결

기능 플래그 AzureMonitorMetricsControlPlanePreview를 사용하도록 설정되어 있고 ama-metrics Pod가 실행 중인지 확인해야 합니다.

참고 항목

Azure 관리되는 서비스 Prometheus에 대한 문제 해결 방법은 여기에서 직접 변환되지 않습니다. 관리되는 Prometheus 추가 기능에 컨트롤 플레인을 스크래핑하는 구성 요소가 없기 때문입니다.

ConfigMap 서식 지정 또는 오류

ConfigMap의 서식을 두 번 확인하고 필드가 의도한 값으로 올바르게 채워져 있는지 확인합니다. 특히 default-targets-metrics-keep-list, minimal-ingestion-profiledefault-scrape-settings-enabled를 확인합니다.

데이터 평면에서 컨트롤 플레인 격리 문제

먼저 일부 노드 관련 메트릭true로 설정하여 메트릭이 작업 영역으로 전달되는지 확인합니다. 이렇게 하면 문제가 컨트롤 플레인 메트릭 스크래핑과 관련된 것인지 확인하는 데 도움이 됩니다.

수집되는 이벤트

변경 내용을 적용한 후에는 Azure Monitor 개요 페이지 또는 선택한 클러스터의 모니터링 섹션에서 메트릭 탐색기를 열 수 있습니다. Azure Portal에서 메트릭을 선택합니다. 분당 수집되는 이벤트 수의 증가 또는 감소를 확인합니다. 특정 메트릭이 없는지 또는 모든 메트릭이 없는지 확인하는 데 도움이 됩니다.

특정 메트릭이 표시되지 않음

메트릭이 문서화되었지만 대상에서 표시되지 않고 Azure Monitor 작업 영역으로 전달되지 않은 경우가 있었습니다. 이 경우 다른 메트릭이 작업 영역으로 전달되고 있는지 확인해야 합니다.

Azure Monitor 작업 영역에 대한 액세스 권한 없음

추가 기능을 사용하도록 설정할 때 액세스 권한이 없는 기존 작업 영역을 지정했을 수 있습니다. 이 경우 메트릭이 수집 및 전달되지 않는 것처럼 보일 수 있습니다. 추가 기능을 사용하도록 설정하거나 클러스터를 만드는 동안 새 작업 영역을 만들어야 합니다.

AKS 클러스터에서 컨트롤 플레인 메트릭 사용 안 함

기능 플래그를 사용하지 않도록 설정하거나, 관리되는 Prometheus를 사용하지 않도록 설정하거나, AKS 클러스터를 삭제하여 언제든지 컨트롤 플레인 메트릭을 사용하지 않도록 설정할 수 있습니다.

관리되는 Prometheus 설정 후 미리 보기 플래그가 사용하도록 설정되었습니다.

기존 관리되는 Prometheus 클러스터에서 미리 보기 플래그(AzureMonitorMetricsControlPlanePreview)가 사용하도록 설정된 경우 컨트롤 플레인 메트릭을 내보내려면 클러스터를 강제로 업데이트해야 합니다.

az aks update를 실행하면 클러스터 업데이트가 컨트롤 플레인 메트릭 수집을 시작하도록 할 수 있습니다.

az aks update -n <cluster-name> -g <resource-group>

참고 항목

이 작업은 Azure Monitor 작업 영역에 저장된 기존 데이터를 제거하지 않습니다.

다음 명령을 실행하여 Prometheus 메트릭을 스크래핑하는 메트릭 추가 기능을 제거합니다.

az aks update --disable-azure-monitor-metrics -n <cluster-name> -g <cluster-resource-group>

az feature unregister 명령을 사용하여 AzureMonitorMetricsControlPlanePreview 기능 플래그의 등록을 취소하는 방법으로 AKS 클러스터에서 컨트롤 플레인 메트릭의 스크래핑을 사용하지 않도록 설정하려면 다음 명령을 실행합니다.

az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

FAQ

  • 자체 호스트된 프로메테우스를 사용하여 이러한 메트릭을 스크랩할 수 있나요?

    • 컨트롤 플레인 메트릭은 현재 자체 호스트된 Prometheus를 사용하여 스크랩할 수 없습니다. 자체 호스트된 프로메테우스는 부하 분산 장치에 따라 단일 인스턴스를 스크레이핑할 수 있습니다. 관리되는 Prometheus를 통해서만 볼 수 있는 컨트롤 플레인 메트릭의 복제본이 여러 개 있는 경우가 많기 때문에 이러한 메트릭은 정확하지 않습니다.
  • 컨트롤 플레인 메트릭을 통해 사용자 에이전트를 사용할 수 없는 이유는 무엇인가요?

다음 단계

이 미리 보기 기능을 평가한 후 피드백을 공유합니다. 여러분이 어떻게 생각하는지 듣고 싶습니다.