다음을 통해 공유


Kubernetes 클러스터에 모니터링 사용

이 문서에서는 다음과 같은 Azure Monitor 기능을 사용하여 Kubernetes 클러스터를 완전하게 모니터링하도록 설정하는 방법을 설명합니다.

Azure Portal을 사용하면 모든 기능을 동시에 사용하도록 설정할 수 있습니다. Azure CLI, Azure Resource Manager 템플릿, Terraform 또는 Azure Policy를 사용하여 개별적으로 사용하도록 설정할 수도 있습니다. 이 문서에서는 이러한 각 방법에 대해 설명합니다.

Important

Kubernetes 클러스터는 많은 로그 데이터를 생성하므로 수집하는 로그를 선택하지 않으면 상당한 비용이 발생할 수 있습니다. 클러스터에 대한 모니터링을 사용하도록 설정하기 전에 다음 문서를 참조하여 환경이 비용에 최적화되어 있고 로그 컬렉션을 필요한 데이터로만 제한하는지 확인합니다.

지원되는 클러스터

이 문서에서는 다음 유형의 클러스터에 대한 온보딩 지침을 제공합니다. 각 유형에 대한 프로세스의 차이점은 관련 섹션에 나와 있습니다.

필수 조건

권한

Managed Prometheus 필수 구성 요소

  • 클러스터는 관리 ID 인증을 사용해야 합니다.
  • 다음 리소스 공급자는 AKS 클러스터 및 Azure Monitor 작업 영역의 구독에 등록되어야 합니다.
    • Microsoft.ContainerService
    • Microsoft.Insights
    • Microsoft.AlertsManagement
    • Microsoft.Monitor
  • Grafana 작업 영역 구독에 다음 리소스 공급자를 등록해야 합니다.
    • Microsoft.Dashboard

Arc 지원 Kubernetes 클러스터 필수 구성 요소

참고 항목

Managed Prometheus Arc 지원 Kubernetes(미리 보기) 확장은 다음 구성을 지원하지 않습니다.

  • ARO(Azure Red Hat OpenShift)를 포함한 Red Hat Openshift 배포판
  • Windows 노드

작업 영역

다음 표에서는 Managed Prometheus 및 Container Insights를 지원하는 데 필요한 작업 영역을 설명합니다. 온보딩 프로세스의 일부로 각 작업 영역을 만들거나 기존 작업 영역을 사용할 수 있습니다. 만들 작업 영역 수와 배치해야 하는 위치에 대한 지침은 Log Analytics 작업 영역 아키텍처 디자인을 참조하세요.

기능 작업 영역 주의
관리되는 Prometheus Azure Monitor 작업 영역 Contributor 권한은 추가 기능에서 데이터를 Azure Monitor 작업 영역에 보낼 수 있도록 하는 데 충분합니다. Azure Monitor 작업 영역을 연결하여 Azure Managed Grafana에서 메트릭을 보려면 Owner 수준 권한이 필요합니다. 온보딩 단계를 실행하는 사용자가 Azure Monitor 작업 영역에서 Azure Managed Grafana 시스템 ID Monitoring Reader 역할을 제공하여 메트릭을 쿼리할 수 있어야 하므로 이 권한이 필요합니다.
컨테이너 인사이트 Log Analytics 작업 영역 AKS 클러스터를 동일한 Microsoft Entra 테넌트의 다른 Azure 구독에 있는 Log Analytics 작업 영역에 연결할 수 있지만 Azure CLI 또는 Azure Resource Manager 템플릿을 사용해야 합니다. 현재 이 구성은 Azure Portal에서 수행할 수 없습니다.

기존 AKS 클러스터를 다른 구독의 Log Analytics 작업 영역에 연결하는 경우 Microsoft.ContainerService 리소스 공급자를 Log Analytics 작업 영역이 있는 구독에 등록해야 합니다. 자세한 내용은 리소스 공급자 등록을 참조하세요.

기본 작업 영역에 사용할 수 있는 지원되는 매핑 쌍 목록은 Container Insights에서 지원되는 지역 매핑을 참조하세요.
Managed Grafana Azure Managed Grafana 작업 영역 Grafana 작업 영역을 Azure Monitor 작업 영역에 연결하여 클러스터에서 수집된 Prometheus 메트릭을 Grafana 대시보드에서 사용할 수 있도록 합니다.

Prometheus 및 Grafana 사용

다음 방법 중 하나를 사용하여 클러스터에서 Prometheus 메트릭 스크래핑을 사용하도록 설정하고, Managed Grafana를 사용하도록 설정하여 메트릭을 시각화합니다. Azure Monitor 작업 영역과 Azure Managed Grafana 작업 영역을 연결하는 옵션은 Grafana 작업 영역 연결을 참조하세요.

참고 항목

프라이빗으로 연결된 단일 Azure Monitor 리소스가 있는 경우 AKS 클러스터와 Azure Monitor 작업 영역이 다른 지역에 있으면 Prometheus 사용하도록 설정이 작동하지 않습니다. Prometheus 추가 기능에 필요한 구성은 프라이빗 링크 제약 조건으로 인해 지역 간에 사용할 수 없습니다. 이 문제를 해결하려면 AKS 클러스터 위치에 새 DCE를 만들고 동일한 AKS 클러스터 지역에 새 DCRA(연결)를 만듭니다. 새 DCE를 AKS 클러스터와 연결하고 새 연결(DCRA)의 이름을 ConfigurationAccessEndpoint로 지정합니다. 데이터 수집을 위해 Private Link를 사용하도록 Azure Monitor 작업 영역과 연결된 DCE를 구성하는 방법에 대한 전체 지침은 Azure Monitor에서 Kubernetes 모니터링에 대한 프라이빗 링크 사용을 참조하세요.

CLI를 통해 사용

다음 명령에서 기존 Azure Monitor 작업 영역을 지정하지 않으면 리소스 그룹에 대한 기본 작업 영역이 사용됩니다. 기본 작업 영역이 클러스터 지역에 아직 없는 경우 DefaultAzureMonitorWorkspace-<mapped_region> 형식의 이름을 가진 작업 영역이 DefaultRG-<cluster_region>이라는 리소스 그룹에 만들어집니다.

필수 조건

  • Az CLI 버전 2.49.0 이상이 필요합니다.
  • aks-preview 확장은 az extension remove --name aks-preview 명령을 사용하여 AKS 클러스터에서 제거해야 합니다.
  • k8s-extension 확장은 az extension add --name k8s-extension 명령을 사용하여 설치해야 합니다.
  • k8s-extension 버전 1.4.1 이상이 필요합니다.

AKS 클러스터

Prometheus 메트릭을 스크랩하는 메트릭 추가 기능을 설치하려면 -enable-azure-monitor-metrics 옵션 az aks create 또는 az aks update(새 클러스터를 만들거나 기존 클러스터를 업데이트하는지 여부에 따라 다름)를 사용합니다.

샘플 명령

### Use default Azure Monitor workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group>

### Use existing Azure Monitor workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --azure-monitor-workspace-resource-id <workspace-name-resource-id>

### Use an existing Azure Monitor workspace and link with an existing Grafana workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --azure-monitor-workspace-resource-id <azure-monitor-workspace-name-resource-id> --grafana-resource-id  <grafana-workspace-name-resource-id>

### Use optional parameters
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --ksm-metric-labels-allow-list "namespaces=[k8s-label-1,k8s-label-n]" --ksm-metric-annotations-allow-list "pods=[k8s-annotation-1,k8s-annotation-n]"

Arc 지원 클러스터(미리 보기)

### Use default Azure Monitor workspace
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics

## Use existing Azure Monitor workspace
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<workspace-name-resource-id>

### Use an existing Azure Monitor workspace and link with an existing Grafana workspace
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<workspace-name-resource-id> grafana-resource-id=<grafana-workspace-name-resource-id>

### Use optional parameters
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<workspace-name-resource-id> grafana-resource-id=<grafana-workspace-name-resource-id> AzureMonitorMetrics.KubeStateMetrics.MetricAnnotationsAllowList="pods=[k8s-annotation-1,k8s-annotation-n]" AzureMonitorMetrics.KubeStateMetrics.MetricLabelsAllowlist "namespaces=[k8s-label-1,k8s-label-n]"

모든 명령에서 다음과 같은 선택적 매개 변수를 사용할 수 있습니다.

  • AKS: --ksm-metric-annotations-allow-list
    Arc: --AzureMonitorMetrics.KubeStateMetrics.MetricAnnotationsAllowList
    리소스의 kube_resource_annotations 메트릭에 사용되는 Kubernetes 주석 키의 쉼표로 구분된 목록입니다. 예를 들어 kube_pod_annotations는 pods 리소스에 대한 주석 메트릭입니다. 기본적으로 이 메트릭에는 이름과 네임스페이스 레이블만 포함됩니다. 더 많은 주석을 포함하려면 복수형의 리소스 이름 목록과 이를 허용할 Kubernetes 주석 키를 제공합니다. 단일 *는 주석을 허용하기 위해 각 리소스에 제공할 수 있지만 이 경우 성능에 심각한 영향을 줍니다. 예: pods=[kubernetes.io/team,...],namespaces=[kubernetes.io/team],....
  • AKS: --ksm-metric-labels-allow-list
    Arc: --AzureMonitorMetrics.KubeStateMetrics.MetricLabelsAllowlist
    리소스의 kube_resource_labels metric kube_resource_labels 메트릭에 사용되는 추가 Kubernetes 레이블 키의 쉼표로 구분된 목록입니다. 예를 들어 kube_pod_labels는 pods 리소스에 대한 레이블 메트릭입니다. 기본적으로 이 메트릭에는 이름과 네임스페이스 레이블만 포함됩니다. 더 많은 레이블을 포함하려면 복수 형식의 리소스 이름 목록과 이를 허용할 Kubernetes 레이블 키를 제공합니다. 단일 *는 레이블을 허용하기 위해 각 리소스에 제공할 수 있지만 이 경우 성능에 심각한 영향을 줍니다. 예: pods=[app],namespaces=[k8s-label-1,k8s-label-n,...],....
  • AKS: --enable-windows-recording-rules Windows 대시보드가 제대로 작동하는 데 필요한 기록 규칙 그룹을 사용하도록 설정할 수 있습니다.

Container Insights 사용

다음 방법 중 하나를 사용하여 클러스터에서 Container Insights를 사용하도록 설정합니다. 이 작업이 완료되면 Container Insights에 대한 에이전트 데이터 수집 구성을 참조하여 필요한 것보다 더 많은 데이터를 수집하지 않도록 구성을 사용자 지정합니다.

다음 명령 중 하나를 사용하여 AKS 및 Arc 지원 클러스터를 모니터링합니다. 기존 Log Analytics 작업 영역을 지정하지 않으면 리소스 그룹에 대한 기본 작업 영역이 사용됩니다. 기본 작업 영역이 클러스터 지역에 아직 없는 경우 DefaultWorkspace-<GUID>-<Region> 형식의 이름으로 만들어집니다.

필수 조건

  • Azure CLI 버전 2.43.0 이상
  • 관리 ID 인증은 CLI 버전 2.49.0 이상에서 기본값입니다.
  • Azure k8s-extension 버전 1.3.7 이상
  • 관리 ID 인증은 k8s-extension 버전 1.43.0 이상에서 기본값입니다.
  • ARO(Azure Red Hat Openshift) 또는 Windows 노드가 있는 Arc 지원 Kubernetes 클러스터에는 관리 ID 인증이 지원되지 않습니다. 레거시 인증을 사용합니다.
  • CLI 버전 2.54.0 이상의 경우 로깅 스키마는 ConfigMap을 사용하여 ContainerLogV2로 구성됩니다.

참고 항목

클러스터의 DCR(데이터 수집 규칙) 또는 ConfigMap을 사용하여 클러스터에 대한 ContainerLogV2 스키마를 사용하도록 설정할 수 있습니다. 두 설정을 모두 사용하도록 설정하면 ConfigMap이 우선 적용됩니다. Stdout 및 stderr 로그는 DCR 및 ConfigMap이 모두 명시적으로 꺼짐으로 설정된 경우에만 ContainerLog 테이블에 수집됩니다.

AKS 클러스터

### Use default Log Analytics workspace
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name>

### Use existing Log Analytics workspace
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id>

### Use legacy authentication
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id> --enable-msi-auth-for-monitoring false

예제

az aks enable-addons --addon monitoring --name "my-cluster" --resource-group "my-resource-group" --workspace-resource-id "/subscriptions/my-subscription/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace"

Arc 지원 클러스터

### Use default Log Analytics workspace
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers

### Use existing Log Analytics workspace
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID=<workspace-resource-id>

### Use managed identity authentication (default as k8s-extension version 1.43.0)
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.useAADAuth=true

### Use advanced configuration settings
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings  amalogs.resources.daemonset.limits.cpu=150m amalogs.resources.daemonset.limits.memory=600Mi amalogs.resources.deployment.limits.cpu=1 amalogs.resources.deployment.limits.memory=750Mi

### With custom mount path for container stdout & stderr logs
### Custom mount path not required for Azure Stack Edge version > 2318. Custom mount path must be /home/data/docker for Azure Stack Edge cluster with version <= 2318
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.logsettings.custommountpath=<customMountPath>

사용 가능한 구성 설정은 Helm 차트의 리소스 요청 및 제한 섹션을 참조하세요.

예제

az k8s-extension create --name azuremonitor-containers --cluster-name "my-cluster" --resource-group "my-resource-group" --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID="/subscriptions/my-subscription/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace"

전달 프록시가 포함된 Arc 지원 클러스터

클러스터가 전달 프록시로 구성된 경우 프록시 설정이 확장에 자동으로 적용됩니다. AMPLS + 프록시가 있는 클러스터의 경우 프록시 구성을 무시해야 합니다. 구성 설정 amalogs.ignoreExtensionProxySettings=true를 사용하여 확장을 온보딩합니다.

az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.ignoreExtensionProxySettings=true

ARO, OpenShift 또는 Windows 노드가 있는 Arc 지원 클러스터

ARO(Azure Red Hat OpenShift), OpenShift 또는 Windows 노드가 있는 Arc 지원 Kubernetes 클러스터에는 관리 ID 인증이 지원되지 않습니다. 다음 예와 같이 amalogs.useAADAuth=false를 지정하여 레거시 인증을 사용합니다.

az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.useAADAuth=false

확장 인스턴스 삭제

다음 명령은 확장 인스턴스만 삭제하고 Log Analytics 작업 영역을 삭제하지는 않습니다. Log Analytics 리소스의 데이터는 그대로 유지됩니다.

az k8s-extension delete --name azuremonitor-containers --cluster-type connectedClusters --cluster-name <cluster-name> --resource-group <resource-group>

Azure Portal에서 전체 모니터링 사용

새 AKS 클러스터(Prometheus, Container Insights 및 Grafana)

Azure Portal에서 새 AKS 클러스터를 만들 때 모니터링 탭에서 Prometheus, Container Insights 및 Grafana를 사용하도록 설정할 수 있습니다. 컨테이너 로그 사용, Prometheus 메트릭 사용Grafana 사용 확인란을 선택합니다.

새 AKS 클러스터에 대한 모니터링 탭의 스크린샷

기존 클러스터(Prometheus, Container Insights 및 Grafana)

  1. Azure Portal에서 AKS 클러스터로 이동합니다.
  2. 서비스 메뉴의 모니터링아래에서 Insights>모니터링 구성을 선택합니다.
  3. 컨테이너 인사이트가 이미 활성화되어 있습니다. Prometheus 메트릭 사용을 선택하고 Grafana 사용 확인란을 선택합니다. 기존 Azure Monitor 작업 영역과 Grafana 작업 영역이 있으면 해당 작업 영역이 자동으로 선택됩니다.
  4. 대체 작업 영역을 선택하거나 새 작업 영역을 만들려면 고급 설정을 선택합니다. 비용 사전 설정 설정을 사용하면 기본 컬렉션 세부 정보를 수정하여 모니터링 비용을 줄일 수 있습니다. 자세한 내용은 Container Insights에서 비용 최적화 사용을 참조하세요.
  5. 구성을 선택합니다.

기존 클러스터(Prometheus만 해당)

  1. Azure Portal에서 AKS 클러스터로 이동합니다.
  2. 서비스 메뉴의 모니터링아래에서 Insights>모니터링 구성을 선택합니다.
  3. Prometheus 메트릭 사용 확인란을 선택합니다.
  4. 대체 작업 영역을 선택하거나 새 작업 영역을 만들려면 고급 설정을 선택합니다. 비용 사전 설정 설정을 사용하면 기본 컬렉션 세부 정보를 수정하여 모니터링 비용을 줄일 수 있습니다.
  5. 구성을 선택합니다.

Windows 메트릭 수집 사용(미리 보기)

참고 항목

windows-exporter-daemonset.yaml에는 CPU/메모리 제한이 없으므로 Windows 노드를 오버프로비전할 수 있습니다.
자세한 내용은 리소스 예약을 참조하세요.

워크로드를 배포할 때 리소스 메모리 및 CPU 제한을 컨테이너에 설정합니다. 또한 이는 NodeAllocatable에서 빼고 클러스터 전체 스케줄러가 특정 노드에 배치할 특정 Pod를 결정하는 데 도움이 됩니다. 제한 없이 Pod를 예약하면 Windows 노드가 오버프로비전될 수 있으며 극단적인 경우 노드가 비정상 상태가 될 수 있습니다.

Managed Prometheus 추가 기능 컨테이너(prometheus_collector)의 버전 6.4.0-main-02-22-2023-3ee44b9e부터 Windows 메트릭 수집이 AKS 클러스터에 사용하도록 설정되었습니다. Azure Monitor Metrics 추가 기능에 온보딩하면 Windows DaemonSet Pod가 노드 풀에서 실행되기 시작할 수 있습니다. Windows Server 2019 및 Windows Server 2022가 모두 지원됩니다. Pod가 Windows 노드 풀에서 메트릭을 수집하도록 사용하도록 설정하려면 다음 단계를 따릅니다.

  1. windows-exporter-daemonset YAML 파일을 배포하여 Windows 메트릭에 액세스하기 위해 AKS 노드에 Windows 내보내기를 수동으로 설치합니다. 다음 수집기를 사용하도록 설정합니다.

    • [defaults]
    • container
    • memory
    • process
    • cpu_info

    더 많은 수집기에 대해서는 Windows 메트릭용 Prometheus 내보내기 도구를 참조하세요.

    windows-exporter-daemonset YAML 파일을 배포합니다. 노드에 taint가 적용된 경우 적절한 허용 오차를 적용해야 한다는 점에 유의하세요.

        kubectl apply -f windows-exporter-daemonset.yaml
    
  2. 클러스터에 ama-metrics-settings-configmap을 적용합니다. windowsexporterwindowskubeproxy 부울을 true로 설정합니다. 자세한 내용은 메트릭 추가 기능 설정 configmap을 참조하세요.

  3. 기본 제공 대시보드에 필요한 기록 규칙을 사용하도록 설정합니다.

    • CLI를 사용하여 온보딩하는 경우 --enable-windows-recording-rules 옵션을 포함합니다.
    • ARM 템플릿, Bicep 또는 Azure Policy를 사용하여 온보딩하는 경우 매개 변수 파일에서 enableWindowsRecordingRulestrue로 설정합니다.
    • 클러스터가 이미 온보딩된 경우 이 ARM 템플릿이 매개 변수 파일을 사용하여 규칙 그룹을 만듭니다. 이렇게 하면 필요한 레코딩 규칙이 추가되며 클러스터에 대한 ARM 작업이 아니므로 클러스터의 현재 모니터링 상태에 영향을 미치지 않습니다.

배포 확인

kubectl 명령줄 도구를 사용하여 에이전트가 제대로 배포되었는지 확인합니다.

관리되는 Prometheus

DaemonSet가 Linux 노드 풀에 제대로 배포되었는지 확인

kubectl get ds ama-metrics-node --namespace=kube-system

Pod 수는 클러스터의 Linux 노드 수와 같아야 합니다. 출력은 다음 예와 유사해야 합니다.

User@aksuser:~$ kubectl get ds ama-metrics-node --namespace=kube-system
NAME               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ama-metrics-node   1         1         1       1            1           <none>          10h

Windows 노드가 제대로 배포되었는지 확인

kubectl get ds ama-metrics-win-node --namespace=kube-system

Pod 수는 클러스터의 Windows 노드 수와 같아야 합니다. 출력은 다음 예와 유사해야 합니다.

User@aksuser:~$ kubectl get ds ama-metrics-node --namespace=kube-system
NAME                   DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ama-metrics-win-node   3         3         3       3            3           <none>          10h

Prometheus에 대해 두 개의 ReplicaSet가 배포되었는지 확인

kubectl get rs --namespace=kube-system

출력은 다음 예와 유사해야 합니다.

User@aksuser:~$kubectl get rs --namespace=kube-system
NAME                            DESIRED   CURRENT   READY   AGE
ama-metrics-5c974985b8          1         1         1       11h
ama-metrics-ksm-5fcf8dffcd      1         1         1       11h

컨테이너 인사이트

DaemonSet가 Linux 노드 풀에 제대로 배포되었는지 확인

kubectl get ds ama-logs --namespace=kube-system

Pod 수는 클러스터의 Linux 노드 수와 같아야 합니다. 출력은 다음 예와 유사해야 합니다.

User@aksuser:~$ kubectl get ds ama-logs --namespace=kube-system
NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ama-logs   2         2         2         2            2           <none>          1d

Windows 노드가 제대로 배포되었는지 확인

kubectl get ds ama-logs-windows --namespace=kube-system

Pod 수는 클러스터의 Windows 노드 수와 같아야 합니다. 출력은 다음 예와 유사해야 합니다.

User@aksuser:~$ kubectl get ds ama-logs-windows --namespace=kube-system
NAME                   DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR     AGE
ama-logs-windows           2         2         2         2            2       <none>            1d

Container Insights 솔루션 배포 확인

kubectl get deployment ama-logs-rs --namespace=kube-system

출력은 다음 예와 유사해야 합니다.

User@aksuser:~$ kubectl get deployment ama-logs-rs --namespace=kube-system
NAME          READY   UP-TO-DATE   AVAILABLE   AGE
ama-logs-rs   1/1     1            1           24d

CLI를 사용하여 구성 보기

aks show 명령을 사용하여 솔루션 사용 여부, Log Analytics 작업 영역 리소스 ID 및 클러스터에 대한 요약 정보를 확인합니다.

az aks show --resource-group <resourceGroupofAKSCluster> --name <nameofAksCluster>

이 명령은 솔루션에 대한 JSON 형식 정보를 반환합니다. addonProfiles 섹션에는 다음 예제와 같이 omsagent에 대한 정보가 포함됩니다.

"addonProfiles": {
    "omsagent": {
        "config": {
            "logAnalyticsWorkspaceResourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
            "useAADAuth": "true"
        },
        "enabled": true,
        "identity": null
    },
}

프로비전된 리소스

모니터링을 사용하도록 설정하면 구독에서 다음 리소스가 만들어집니다.

리소스 이름 리소스 종류 리소스 그룹 지역/위치 설명
MSCI-<aksclusterregion>-<clustername> 데이터 수집 규칙 클러스터와 동일 Log Analytics 작업 영역과 동일 이 데이터 수집 규칙은 Log Analytics 작업 영역을 대상으로 사용하는 Azure Monitor 에이전트의 로그 수집을 위한 것이며, AKS 클러스터 리소스에 연결됩니다.
MSPROM-<aksclusterregion>-<clustername> 데이터 수집 규칙 클러스터와 동일 Azure Monitor 작업 영역과 동일 이 데이터 수집 규칙은 Azure Monitor 작업 영역을 대상으로 선택한 메트릭 추가 기능의 Prometheus 메트릭 수집을 위한 것이며, AKS 클러스터 리소스에도 연결됩니다.
MSPROM-<aksclusterregion>-<clustername> 데이터 수집 엔드포인트 클러스터와 동일 Azure Monitor 작업 영역과 동일 이 데이터 수집 엔드포인트는 메트릭 추가 기능에서 Prometheus 메트릭을 수집하기 위해 위의 데이터 수집 규칙에서 사용됩니다.

새 Azure Monitor 작업 영역을 만들면 다음과 같은 추가 리소스가 해당 작업 영역의 일부로 만들어집니다.

리소스 이름 리소스 종류 리소스 그룹 지역/위치 설명
<azuremonitor-workspace-name> 데이터 수집 규칙 MA_<azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed Azure Monitor 작업 영역과 동일 OSS Prometheus 서버를 사용하여 원격 쓰기를 Azure Monitor 작업 영역에 수행할 때 만들어지는 DCR입니다.
<azuremonitor-workspace-name> 데이터 컬렉션 엔드포인트 MA_<azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed Azure Monitor 작업 영역과 동일 OSS Prometheus 서버를 사용하여 원격 쓰기를 Azure Monitor 작업 영역에 수행할 때 만들어지는 DCE입니다.

Windows 및 Linux 클러스터 간 차이점

Windows Server 클러스터를 모니터링할 때 Linux 클러스터와 주로 다음과 같은 점이 다릅니다.

  • Windows에는 메모리 RSS 메트릭이 없습니다. 따라서 Windows 노드와 컨테이너에 사용할 수 없습니다. 작업 집합 메트릭을 사용할 수 있습니다.
  • Windows 노드에 대한 디스크 스토리지 용량 정보는 제공되지 않습니다.
  • Pod 환경만 모니터링되고 Docker 환경은 모니터링되지 않습니다.
  • 미리 보기 릴리스에서는 최대 30개의 Windows Server 컨테이너가 지원됩니다. Linux 컨테이너에는 이 제한이 적용되지 않습니다.

참고 항목

미리 보기에서 Windows Server 2022 운영 체제에 대한 컨테이너 인사이트를 지원합니다.

컨테이너화 Linux Agent(replicaset pod)는 클러스터 내의 Kubelet 보안 포트(10250)의 모든 Windows 노드에 대한 API 호출을 수행하여 노드 및 컨테이너 성능 관련 메트릭을 수집합니다. Kubelet 보안 포트(:10250)는 Windows 노드 및 컨테이너 성능 관련 메트릭 수집이 작동되려면 인바운드 및 아웃바운드 둘 다에 대한 클러스터의 가상 네트워크에서 열려 있어야 합니다.

Windows 노드가 포함된 Kubernetes 클러스터가 있는 경우 네트워크 보안 그룹 및 네트워크 정책을 검토하고 구성하여 클러스터의 가상 네트워크에서 Kubelet 보안 포트(:10250)가 인바운드 및 아웃바운드 모두에 대해 열려 있는지 확인합니다.

다음 단계

  • 솔루션을 온보딩하는 동안 문제가 발생하는 경우 문제 해결 가이드를 검토하세요.
  • 모니터링을 사용하여 AKS 클러스터의 상태 및 리소스 사용률을 수집하고 해당 작업에서 실행되는 작업을 수집합니다. Container 인사이트 사용 방법을 알아보세요.