AKS(Azure Kubernetes Service) Communication Manager는 Azure 리소스 알림 및 Azure Resource Graph 프레임워크를 사용하여 모든 AKS 유지 관리 작업에 대한 알림을 간소화합니다. 이 도구를 사용하면 이벤트 트리거 및 결과에 대한 시기 적절하게 경고를 제공하므로 업그레이드를 면밀히 모니터링할 수 있습니다. 유지 관리가 실패하면 오류의 이유를 알리고 관찰 가능성 및 후속 작업과 관련된 운영 문제를 줄입니다. 다음 단계에 따라 유지 관리 기간을 활용하는 모든 유형의 자동 업그레이드에 대한 알림을 설정할 수 있습니다.
필수 조건
자동 업그레이드 채널 또는 노드 자동 업그레이드 채널에 대한 클러스터를 구성합니다.
자동 업그레이드 구성 에 대한 계획된 유지 관리 기간을 만듭니다.
비고
일단 설정되면 통신 관리자는 유지 관리가 시작되기 1주일 전과 유지 관리가 시작되기 하루 전에 사전 알림을 보냅니다. 이는 유지 관리 작업 중 적시에 경고에 추가됩니다.
비고
각 쿼리에 대해 구독 ID, 리소스 그룹 이름 및 클러스터 이름에 대한 리소스를 참조하도록 where id contains
경로를 업데이트해야 합니다.
통신 관리자를 설정하는 방법
리소스로 이동한 다음 모니터링을 선택하고 경고를 선택한 다음 경고 규칙을 클릭합니다.
경고의 조건은 사용자 지정 로그 검색이어야 합니다.
열린 "검색 쿼리" 상자에 다음 사용자 지정 쿼리 중 하나를 붙여넣고 "검토+만들기" 단추를 클릭합니다.
클러스터 자동 업그레이드 알림 쿼리
containerserviceeventresources
| where type == "microsoft.containerservice/managedclusters/scheduledevents"
| where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>"
| where properties has "eventStatus"
| extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50)
| extend status = substring(status, 0, indexof(status, ",") - 1)
| where status != ""
| where properties has "eventDetails"
| extend upgradeType = case(
properties has "K8sVersionUpgrade",
"K8sVersionUpgrade",
properties has "NodeOSUpgrade",
"NodeOSUpgrade",
""
)
| extend details = parse_json(tostring(properties.eventDetails))
| where properties has "lastUpdateTime"
| extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50)
| extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1)
| extend eventTime = todatetime(tostring(eventTime))
| where eventTime >= ago(2h)
| where upgradeType == "K8sVersionUpgrade"
| project
eventTime,
upgradeType,
status,
properties,
name,
details
| order by eventTime asc
노드 OS 자동 업그레이드 알림 쿼리
containerserviceeventresources
| where type == "microsoft.containerservice/managedclusters/scheduledevents"
| where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>"
| where properties has "eventStatus"
| extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50)
| extend status = substring(status, 0, indexof(status, ",") - 1)
| where status != ""
| where properties has "eventDetails"
| extend upgradeType = case(
properties has "K8sVersionUpgrade",
"K8sVersionUpgrade",
properties has "NodeOSUpgrade",
"NodeOSUpgrade",
""
)
| extend details = parse_json(tostring(properties.eventDetails))
| where properties has "lastUpdateTime"
| extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50)
| extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1)
| extend eventTime = todatetime(tostring(eventTime))
| where eventTime >= ago(2h)
| where upgradeType == "NodeOSUpgrade"
| project
eventTime,
upgradeType,
status,
properties,
name,
details
| order by eventTime asc
- 다음 설정을 사용하여 경고 조건을 구성합니다.
- 측정값: "테이블 행" 선택
- 집계: "개수" 선택
- 집계 세분성: "30분" 선택
- 임계값: 0으로 유지
- 차원으로 분할: "상태"를 선택하고 "모든 이후 값 포함"을 선택합니다.
차원별 분할 드롭다운에서 "상태"를 선택하는 경우 사용 가능한 값은 예약됨, 시작됨, 완료됨, 취소됨 및 실패입니다.
비고
이러한 상태 값은 클러스터에서 이전에 자동 업그레이드 작업을 실행한 경우에만 표시됩니다. 아직 자동 업그레이드를 수행하지 않은 새 클러스터 또는 클러스터의 경우 드롭다운이 비어 있거나 사용 가능한 차원이 표시되지 않을 수 있습니다. 클러스터가 첫 번째 자동 업그레이드를 수행하면 이러한 상태 값을 선택할 수 있게 됩니다.
- 알림을 받으려면 올바른 이메일 주소가 있는 작업 그룹을 확인합니다.
관리 시스템 ID 할당: 경고 규칙을 만든 후 필요한 리소스에 액세스할 수 있도록 관리 ID를 할당합니다. 이 단계는 초기 설정 중이 아니라 경고 규칙을 만든 후에 수행됩니다. 관리 ID를 할당하려면 다음을 수행합니다.
- Azure Portal에서 모니터>경고>경고 규칙으로 이동한 다음, 경고 규칙을 선택합니다.
- 경고 규칙 창의 설정에서 ID를 선택합니다.
- 시스템 할당 관리 ID를켜기로 설정합니다.
- 저장을 클릭하여 경고 규칙에 대한 관리 ID를 사용하도록 설정합니다.
팁 (조언)
ID 옵션이 표시되지 않으면 경고 규칙이 만들어졌으며 필요한 권한이 있는지 확인합니다. 관리 ID를 할당하는 것은 경고 규칙을 만든 후 항상 별도의 단계입니다.
적절한 판독기 역할을 할당해야 합니다.
경고 규칙에서 설정>정체성>시스템 할당 관리 ID>Azure 역할 할당>역할 할당 추가으로 이동합니다.
읽기 권한자 역할을 선택하고 리소스 그룹에 할당합니다. 필요한 경우 구독에 대해 "역할 할당 추가"를 반복합니다.
비고
Communication Manager가 설정되면 유지 관리가 시작되기 1주일 전과 유지 관리가 시작되기 하루 전에 사전 알림을 보냅니다. 또한 유지 관리 작업 중에 적시에 경고를 보냅니다.
커뮤니케이션 매니저 설정
리소스로 이동하여 모니터링을 선택하고 경고를 선택한 다음 경고 규칙을 선택합니다.
조건 탭의 신호 이름에 대해 사용자 지정 로그 검색을 선택합니다.
검색 쿼리 상자에 다음 사용자 지정 쿼리 중 하나를 붙여넣은 다음 검토+만들기 단추를 선택합니다.
다음 쿼리는 클러스터 자동 업그레이드 알림에 대한 것입니다.
arg("").containerserviceeventresources | where type == "microsoft.containerservice/managedclusters/scheduledevents" | where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>" | where properties has "eventStatus" | extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50) | extend status = substring(status, 0, indexof(status, ",") - 1) | where status != "" | where properties has "eventDetails" | extend upgradeType = case( properties has "K8sVersionUpgrade", "K8sVersionUpgrade", properties has "NodeOSUpgrade", "NodeOSUpgrade", "" ) | extend details = parse_json(tostring(properties.eventDetails)) | where properties has "lastUpdateTime" | extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50) | extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1) | extend eventTime = todatetime(tostring(eventTime)) | where eventTime >= ago(2h) | where upgradeType == "K8sVersionUpgrade" | project eventTime, upgradeType, status, properties, name, details | order by eventTime asc
다음 쿼리는 노드 OS 자동 업그레이드 알림에 대한 것입니다.
arg("").containerserviceeventresources | where type == "microsoft.containerservice/managedclusters/scheduledevents" | where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>" | where properties has "eventStatus" | extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50) | extend status = substring(status, 0, indexof(status, ",") - 1) | where status != "" | where properties has "eventDetails" | extend upgradeType = case( properties has "K8sVersionUpgrade", "K8sVersionUpgrade", properties has "NodeOSUpgrade", "NodeOSUpgrade", "" ) | extend details = parse_json(tostring(properties.eventDetails)) | where properties has "lastUpdateTime" | extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50) | extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1) | extend eventTime = todatetime(tostring(eventTime)) | where eventTime >= ago(2h) | where upgradeType == "NodeOSUpgrade" | project eventTime, upgradeType, status, properties, name, details | order by eventTime asc
간격은 30분이어야 하며 임계값은 1이어야 합니다.
알림을 받을 수 있도록 올바른 전자 메일 주소를 가진 작업 그룹이 있는지 확인합니다.
로그 검색 경고 규칙의 관리형 ID에 리소스 그룹과 구독에 대한 읽기 역할을 부여해야 합니다.
설정>ID>시스템 할당 관리 ID>Azure 역할 할당>역할 항당 추가의 경고 규칙으로 이동합니다.
읽기 권한자 역할을 선택하고 리소스 그룹에 할당합니다. 구독에 대한 역할 할당 추가 를 반복합니다.
확인
클러스터를 업그레이드하려면 자동 업그레이드가 시작될 때까지 기다립니다. 그런 다음 알림을 받도록 구성된 전자 메일에 대한 알림을 즉시 받는지 확인합니다.
Azure Resource Graph 데이터베이스에서 예약된 알림 레코드를 확인합니다. 예약된 각 이벤트 알림은 테이블에 하나의 레코드 containerserviceeventresources
로 나열되어야 합니다.
관련 콘텐츠
Azure Kubernetes Service