Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Kubernetes 服务(AKS)通信管理器使用 Azure 资源通知和 Azure Resource Graph 框架简化了所有 AKS 维护任务的通知。 通信管理器提供针对事件触发器和结果的及时警报,以便可以密切监视升级。
如果维护失败,通信管理器会通知你失败的原因。 此信息可减少与可观察性和后续措施相关的麻烦。
按照本文中的步骤操作,您可以为在维护时段内进行的所有类型自动升级设置通知。
先决条件
设置通信管理器
在 Azure 门户中,转到资源。
选择“ 监视>警报警报>规则”,然后选择“ 创建”。
在 “条件 ”选项卡上,选择 “信号名称”,选择“ 自定义日志搜索”。
在 “搜索查询 ”框中,粘贴以下自定义查询之一。 请务必更新
where id contains
路径,以便参考您订阅 ID、资源组名称和群集名称的资源。以下查询用于通知群集的自动升级:
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(30m) // Ensure this matches aggregation granularity & frequency | where upgradeType == "K8sVersionUpgrade" | project eventTime, upgradeType, status, properties, name, details | order by eventTime asc
以下查询用于通知 NodeOS 的自动升级:
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(30m) // Ensure this matches aggregation granularity & frequency | where upgradeType == "NodeOSUpgrade" | project eventTime, upgradeType, status, properties, name, details | order by eventTime asc
转到“ 条件 ”选项卡。使用以下设置配置警报条件:
- 度量值:选择 表行。
- 聚合类型:选择 计数。
- 聚合粒度:选择 30 分钟。
- 阈值:保持 为 0。
- 按维度拆分:对于 维度名称,请选择 状态。 然后选择“ 包括所有未来值 ”复选框。
在 “按维度拆分 ”区域中的 维度值中,选择一个值。 由于你选择了维度名称 的状态 ,因此可用值为 “计划”、“ 已启动”、“ 已完成”、“ 已取消”和 “失败”。
注释
仅当群集之前执行自动升级作时,才会显示这些状态值。 对于新群集或尚未进行自动升级的群集,下拉列表可能显示为空或未显示任何可用维度。 群集执行其第一次自动升级后,这些状态值将可供选择。
转到操作选项卡。确保存在一个包含正确电子邮件地址的操作组,以便你能够收到通知。
选择使用动作组>创建动作组。
对于 通知类型,请选择 “电子邮件/SMS_message/推送/语音”。
选中 “电子邮件 ”复选框,然后在 “电子邮件 ”框中输入电子邮件地址。
用于操作组输入电子邮件信息的窗格的屏幕截图。
转到“ 详细信息 ”选项卡。分配托管标识,以便授予对所需资源的访问权限。 在 “标识 ”区域中,选择 “系统分配的托管标识”。
转到“ 审阅 + 创建 ”选项卡,然后选择“ 创建”。
创建警报规则后,可以为托管标识分配相应的角色:
- 在警报规则中,转到 设置>标识>系统分配的托管标识>Azure角色分配。
- 选择 “添加角色分配”,选择 “读取者 ”角色,并将其分配给资源组。
- 再次选择 “添加角色分配 ”,选择 “读取者 ”角色,并将其分配给订阅。
小窍门
如果未看到 “标识 ”选项,请确保已创建警报规则,并且你具有必要的权限。
设置通信管理器后,它会在维护开始前一周发送提前通知,并在维护开始前一天发送通知。 它还会在维护操作时及时发送警报。
验证配置
若要升级群集,请等待自动升级程序启动。 然后,验证是否在配置为接收通知的电子邮件地址上立即收到通知。
检查 Azure Resource Graph 数据库中的计划通知记录。 每个计划的事件通知都应列为表中的一条记录 ContainerServiceEventResources
。