Compartilhar via

设置 Azure Kubernetes 服务通信管理器

Azure Kubernetes 服务(AKS)通信管理器使用 Azure 资源通知和 Azure Resource Graph 框架简化了所有 AKS 维护任务的通知。 通信管理器提供针对事件触发器和结果的及时警报,以便可以密切监视升级。

如果维护失败,通信管理器会通知你失败的原因。 此信息可减少与可观察性和后续措施相关的麻烦。

按照本文中的步骤操作,您可以为在维护时段内进行的所有类型自动升级设置通知。

先决条件

设置通信管理器

  1. 在 Azure 门户中,转到资源。

  2. 选择“ 监视>警报警报>规则”,然后选择“ 创建”。

  3. “条件 ”选项卡上,选择 “信号名称”,选择“ 自定义日志搜索”。

    显示窗格中用于创建警报规则的自定义日志搜索选择的屏幕截图。

  4. “搜索查询 ”框中,粘贴以下自定义查询之一。 请务必更新 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
    
  5. 转到“ 条件 ”选项卡。使用以下设置配置警报条件:

    • 度量值:选择 表行
    • 聚合类型:选择 计数
    • 聚合粒度:选择 30 分钟
    • 阈值:保持 为 0
    • 按维度拆分:对于 维度名称,请选择 状态。 然后选择“ 包括所有未来值 ”复选框。

    警报条件的配置选项的屏幕截图。

  6. “按维度拆分 ”区域中的 维度值中,选择一个值。 由于你选择了维度名称 的状态 ,因此可用值为 “计划”、“ 已启动”、“ 已完成”、“ 已取消”和 “失败”。

    注释

    仅当群集之前执行自动升级作时,才会显示这些状态值。 对于新群集或尚未进行自动升级的群集,下拉列表可能显示为空或未显示任何可用维度。 群集执行其第一次自动升级后,这些状态值将可供选择。

    用于按维度拆分的区域下拉列表框的屏幕截图。

  7. 转到操作选项卡。确保存在一个包含正确电子邮件地址的操作组,以便你能够收到通知。

    1. 选择使用动作组>创建动作组

    2. 对于 通知类型,请选择 “电子邮件/SMS_message/推送/语音”。

    3. 选中 “电子邮件 ”复选框,然后在 “电子邮件 ”框中输入电子邮件地址。

      用于操作组输入电子邮件信息的窗格的屏幕截图。

  8. 转到“ 详细信息 ”选项卡。分配托管标识,以便授予对所需资源的访问权限。 在 “标识 ”区域中,选择 “系统分配的托管标识”。

    显示用于分配系统分配托管标识的选择的屏幕截图。

  9. 转到“ 审阅 + 创建 ”选项卡,然后选择“ 创建”。

  10. 创建警报规则后,可以为托管标识分配相应的角色:

    1. 在警报规则中,转到 设置>标识>系统分配的托管标识>Azure角色分配
    2. 选择 “添加角色分配”,选择 “读取者 ”角色,并将其分配给资源组。
    3. 再次选择 “添加角色分配 ”,选择 “读取者 ”角色,并将其分配给订阅。

    小窍门

    如果未看到 “标识 ”选项,请确保已创建警报规则,并且你具有必要的权限。

设置通信管理器后,它会在维护开始前一周发送提前通知,并在维护开始前一天发送通知。 它还会在维护操作时及时发送警报。

验证配置

若要升级群集,请等待自动升级程序启动。 然后,验证是否在配置为接收通知的电子邮件地址上立即收到通知。

检查 Azure Resource Graph 数据库中的计划通知记录。 每个计划的事件通知都应列为表中的一条记录 ContainerServiceEventResources

显示 Azure Resource Graph 中的通知记录的屏幕截图。