AKS(Azure Kubernetes Service) 클러스터에 대한 컨테이너 인사이트 사용

이 문서에서는 AKS(Azure Kubernetes Service) 클러스터에서 호스트되는 관리되는 Kubernetes 클러스터를 모니터링하도록 컨테이너 인사이트를 설정하는 방법을 설명합니다.

필수 구성 요소

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

새 AKS 클러스터

다음 방법을 사용하여 AKS 클러스터를 만들 때 모니터링을 사용하도록 설정할 수 있습니다.

기존 AKS 클러스터

다음 방법을 사용하여 기존 AKS 클러스터에 대한 모니터링을 사용하도록 설정합니다.

참고

관리 ID 인증에는 Azure CLI 버전 2.39.0 이상이 필요합니다.

기본 Log Analytics 작업 영역 사용

리소스 그룹에 대한 기본 Log Analytics 작업 영역을 사용하면 다음 명령을 통해 AKS 클러스터를 모니터링할 수 있습니다. 기본 작업 영역이 클러스터 지역에 아직 없는 경우 DefaultWorkspace-<GUID>-<Region> 형식의 이름으로 만들어집니다.

az aks enable-addons -a monitoring -n <cluster-name> -g <cluster-resource-group-name>

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

provisioningState       : Succeeded

Log Analytics 작업 영역 지정

다음 명령을 사용하여 특정 Log Analytics 작업 영역에서 AKS 클러스터의 모니터링을 사용하도록 설정할 수 있습니다. 작업 영역의 리소스 ID는 "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<WorkspaceName>" 형식입니다.

az aks enable-addons -a monitoring -n <cluster-name> -g <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id>

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

provisioningState       : Succeeded

에이전트 및 솔루션 배포 확인

다음 명령을 실행하여 에이전트가 성공적으로 배포되었는지 확인합니다.

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

출력은 다음 예제와 유사해야 하며, 이 출력은 제대로 배포된 것을 나타냅니다.

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           beta.kubernetes.io/os=linux   1d

클러스터에 Windows Server 노드가 있는 경우 다음 명령을 실행하여 에이전트가 성공적으로 배포되었는지 확인합니다.

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

출력은 다음 예제와 유사해야 하며, 이 출력은 제대로 배포된 것을 나타냅니다.

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           beta.kubernetes.io/os=windows   1d

솔루션의 배포를 확인하려면 다음 명령을 실행합니다.

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

출력은 다음 예제와 유사해야 하며, 이 출력은 제대로 배포된 것을 나타냅니다.

User@aksuser:~$ kubectl get deployment ama-logs-rs -n=kube-system
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE    AGE
ama-logs-rs   1         1         1            1            3h

CLI로 구성 보기

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

az aks show -g <resourceGroupofAKSCluster> -n <nameofAksCluster>

몇 분 후 명령이 완료되고 솔루션에 대한 JSON 형식 정보가 반환됩니다. 명령의 결과에는 모니터링 추가 항목 프로필이 표시되며 다음 예제 출력과 유사합니다.

"addonProfiles": {
    "omsagent": {
      "config": {
        "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>"
      },
      "enabled": true
    }
  }

관리 ID 인증으로 마이그레이션

이 섹션에서는 관리 ID 인증으로 마이그레이션하는 두 가지 방법을 설명합니다.

서비스 주체가 있는 기존 클러스터

서비스 주체가 있는 AKS 클러스터는 먼저 모니터링을 사용하지 않도록 설정한 다음, 관리 ID로 업그레이드해야 합니다. 현재 이 마이그레이션에는 Azure 퍼블릭 클라우드, Azure 중국 클라우드 및 Azure Government 클라우드만 지원됩니다.

  1. 구성된 Log Analytics 작업 영역 리소스 ID를 가져옵니다.

    az aks show -g <resource-group-name> -n <cluster-name> | grep -i "logAnalyticsWorkspaceResourceID"
    
  2. 다음 명령을 사용하여 모니터링을 사용하지 않도록 설정합니다.

    az aks disable-addons -a monitoring -g <resource-group-name> -n <cluster-name> 
    
  3. 다음 명령을 사용하여 클러스터를 시스템 관리 ID로 업그레이드합니다.

    az aks update -g <resource-group-name> -n <cluster-name> --enable-managed-identity
    
  4. 1단계에서 가져온 Log Analytics 작업 영역 리소스 ID를 사용하여 관리 ID 인증 옵션을 통해 모니터링 추가 항목을 사용하도록 설정합니다.

    az aks enable-addons -a monitoring --enable-msi-auth-for-monitoring -g <resource-group-name> -n <cluster-name> --workspace-resource-id <workspace-resource-id>
    

시스템 또는 사용자가 할당한 ID가 있는 기존 클러스터

시스템이 할당한 ID가 있는 AKS 클러스터는 먼저 모니터링을 사용하지 않도록 설정한 다음, 관리 ID로 업그레이드해야 합니다. 현재 시스템 ID가 있는 클러스터에는 Azure 퍼블릭 클라우드, Azure 중국 클라우드 및 Azure Government 클라우드만 지원됩니다. 사용자가 할당한 ID가 있는 클러스터의 경우 Azure 퍼블릭 클라우드만 지원됩니다.

  1. 구성된 Log Analytics 작업 영역 리소스 ID를 가져옵니다.

    az aks show -g <resource-group-name> -n <cluster-name> | grep -i "logAnalyticsWorkspaceResourceID"
    
  2. 다음 명령을 사용하여 모니터링을 사용하지 않도록 설정합니다.

    az aks disable-addons -a monitoring -g <resource-group-name> -n <cluster-name>
    
  3. 1단계에서 가져온 Log Analytics 작업 영역 리소스 ID를 사용하여 관리 ID 인증 옵션을 통해 모니터링 추가 항목을 사용하도록 설정합니다.

    az aks enable-addons -a monitoring --enable-msi-auth-for-monitoring -g <resource-group-name> -n <cluster-name> --workspace-resource-id <workspace-resource-id>
    

다음 절차 중 하나를 사용하여 Azure Private Link 사용하여 클러스터를 Log Analytics 작업 영역에 연결하여 네트워크 격리를 사용하도록 설정합니다.

관리 ID 인증

클러스터가 Azure Monitor 에이전트에서 관리 ID 인증을 사용하는 경우 다음 절차를 사용합니다.

  1. Azure Monitor 에이전트에 대한 네트워크 격리 사용의 단계에 따라 데이터 수집 엔드포인트를 만들고 Azure Monitor 프라이빗 링크 서비스에 추가합니다.

  2. 다음 API 호출을 사용하여 클러스터와 데이터 수집 엔드포인트 간의 연결을 만듭니다. 이 호출에 대한 자세한 내용은 데이터 수집 규칙 연결 - 만들기를 참조하세요. DCR 연결 이름은 configurationAccessEndpoint이어야 하며, resourceUri는 AKS 클러스터의 리소스 ID입니다.

    PUT https://management.azure.com/{cluster-resource-id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/configurationAccessEndpoint?api-version=2021-04-01
    {
    "properties": {
        "dataCollectionEndpointId": "{data-collection-endpoint-resource-id}"
        }
    }
    

    다음 코드 조각은 이 API 호출의 예제입니다.

    PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/my-aks-cluster/providers/Microsoft.Insights/dataCollectionRuleAssociations/configurationAccessEndpoint?api-version=2021-04-01
    
    {
    "properties": {
        "dataCollectionEndpointId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionEndpoints/myDataCollectionEndpoint"
        }
    }
    
  3. 관리 ID 인증으로 마이그레이션의 단계를 사용하여 관리 ID 인증 옵션을 통해 모니터링을 사용하도록 설정합니다.

관리 ID 인증이 없는 경우

관리 ID 인증을 사용하지 않는 경우 다음 절차를 사용합니다. 이렇게 하려면 프라이빗 AKS 클러스터가 필요합니다.

  1. 프라이빗 Azure Kubernetes Service 클러스터 만들기의 지침에 따라 프라이빗 AKS 클러스터를 만듭니다.

  2. Log Analytics 작업 영역에서 공용 수집을 사용하지 않도록 설정합니다.

    다음 명령을 사용하여 기존 작업 영역에서 공용 수집을 사용하지 않도록 설정합니다.

    az monitor log-analytics workspace update --resource-group <azureLogAnalyticsWorkspaceResourceGroup> --workspace-name <azureLogAnalyticsWorkspaceName>  --ingestion-access Disabled
    

    다음 명령을 사용하여 공용 수집을 사용하지 않도록 설정된 새 작업 영역을 만듭니다.

    az monitor log-analytics workspace create --resource-group <azureLogAnalyticsWorkspaceResourceGroup> --workspace-name <azureLogAnalyticsWorkspaceName>  --ingestion-access Disabled
    
  3. 프라이빗 링크 구성의 지침에 따라 프라이빗 링크를 구성합니다. 퍼블릭에 대한 수집 액세스를 설정한 다음, 프라이빗 엔드포인트를 만든 후 모니터링을 사용하도록 설정하기 전에 프라이빗으로 설정합니다. 프라이빗 링크 리소스 지역은 AKS 클러스터 지역과 동일해야 합니다.

  4. AKS 클러스터에 대한 모니터링을 사용하도록 설정합니다.

    az aks enable-addons -a monitoring --resource-group <AKSClusterResourceGorup> --name <AKSClusterName> --workspace-resource-id <workspace-resource-id>
    

제한 사항

  • 현재 Terraform 또는 Azure Policy를 사용하여 관리 ID 인증(미리 보기)을 사용하도록 설정하는 기능은 지원되지 않습니다.
  • 관리 ID 인증(미리 보기)을 사용하도록 설정하면 MSCI-<cluster-name>-<cluster-region>이라는 이름의 데이터 수집 규칙이 만들어집니다. 현재 이 이름은 수정할 수 없습니다.

다음 단계

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