Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
平台管理员通常需要确保群集更新仅在特定日期和时间开始。 例如,选择团队有空进行监控或用户流量最低的时候。
机队管理器提供计划启动门,平台管理员可以使用它来延迟更新运行进度,直到指定的日期和时间。 例如,可以在更新策略的生产阶段之前放置计划的启动门。 此门控可确保生产集群要到预定时间才会开始更新,即使前序阶段提前完成也是如此。
本文介绍如何在更新策略中定义计划启动门,以及这些启动门如何在更新运行的执行过程中完成。
Important
Azure Kubernetes 舰队管理器预览功能可以通过自助服务方式选择性启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 客户支持部门会尽力为 Azure Kubernetes 舰队管理器预览功能提供部分支持。 因此,这些功能并不适合用于生产。
先决条件
请参阅舰队更新的概念概述,其中提供了本指南中引用的更新运行、阶段、组和策略的说明。
必须具有包含一个或多个成员群集的舰队资源。 如果没有机队资源,请按照快速入门创建一个机队资源并将Azure Kubernetes 服务 (AKS)群集加入为成员。
设置以下环境变量:
export GROUP=<resource-group> export FLEET=<fleet-name> export CLUSTERID=<aks-cluster-resource-id> export STRATEGY=<strategy-name>如果按照本文中的Azure CLI说明进行操作,则需要安装最新的Azure CLI。 若要安装或升级,请参阅安装 Azure CLI。
还需要
fleetAzure CLI扩展。 若要安装它,请运行以下命令:az extension add --name fleet运行
az extension update命令,更新到最新发布的扩展版本:az extension update --name fleet
在更新策略中配置计划的启动入口
可以在创建更新策略时,或者在将 阶段 用作更新序列类型来创建更新运行时,配置计划启动门。
配置计划启动门时,请记住以下几点:
- 不能将计划启动门与 逐个 更新序列一起使用。
- 若要控制某个阶段中所有组的开始时间,请在阶段级别而非组级别配置计划开始入口。 组级计划的启动门仅影响该特定组。
- 只能在阶段或组 之前 放置计划的开始门。 与审批门不同, 它们不能 作为后门放置。
下面是有关如何使用此功能的一些示例:
- 在进入生产阶段之前设置计划启动闸门,可确保更新直到周日晚上 8:00 才开始,从而避免在工作时间内造成潜在中断。
- 组前计划的启动门允许你错开执行。
注释
如果单个 AKS 集群还配置了 计划维护窗口,这些窗口仍会得到遵守。 在计划的启动门完成和群集自己的计划内维护时段允许之前,群集不会启动升级。
在更新策略中配置阶段和组的计划启动时间
创建 JSON 文件以定义更新策略的阶段和组。 下面是一个示例文件,用于定义阶段和组上的计划启动门(example-stages.json):
{ "stages": [ { "name": "stage-1", "beforeGates": [ { "displayName": "wait until Wednesday 2am", "type": "ScheduledStart", "scheduledStartConfiguration": { "startDay": "Wednesday", "startTime": "02:00", "utcOffset": "+00:00" } } ], "groups": [ { "name": "group-1", "beforeGates": [ { "displayName": "wait until Thursday 10am PST", "type": "ScheduledStart", "scheduledStartConfiguration": { "startDay": "Thursday", "startTime": "10:00", "utcOffset": "-08:00" } } ] } ] } ] }对象
scheduledStartConfiguration需要三个字段:领域 Description Format startDay计划开始的一周中的一天。 Sunday、Monday、Tuesday、Wednesday、Thursday、Friday或SaturdaystartTime计划开始时的当地时间。 24 小时 HH:MM格式(例如,02:00,14:30)utcOffset计划时间的 UTC 偏移量。 +HH:MM或-HH:MM格式,范围从-14:00+14:00使用
az fleet updatestrategy create命令新建更新策略,并将--stages标志设置为 JSON 文件的名称。az fleet updatestrategy create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name $STRATEGY \ --stages example-stages.json
注释
当更新运行过程到达预定的启动时间点时,系统会计算指定日期和时间的下一次发生时间。 例如,如果门控指定为 Wednesday 02:00 UTC,并且更新运行流程在星期一到达该门控,则门控会一直等待到星期三 02:00 UTC。 如果它于周三以03:00 UTC(已经过去)到达大门,它将等到下周三。
了解计划启动门的状态
计划的启动门表示为控制更新运行流的 入口 。 门的状态指示是否已达到计划的时间。 更新运行本身也会维持网关的状态。 以下列出了您在更新运行过程中可以看到的所有门状态:
-
未启动:在更新运行到达入口之前,它将显示为
NotStarted。 -
待定:当门控正在等待其预定时间时,其状态为
Pending。 该门还具有一个absoluteStartTime属性,用于显示完成的确切 UTC 时间。 -
已跳过:如果跳过组或阶段,该组或阶段中的所有入口将自动移动到
Skipped状态。 -
已完成:闸门会在达到预定时间时自动变为
Completed,或者在用户将闸门的状态手动修补为Completed时变为Completed。
在更新运行期间手动完成计划启动门
如果您想提前进行更新,可以通过将计划启动门的状态设置为 Completed,在预定时间之前手动完成该计划启动门。
使用
az fleet updaterun show命令检索更新运行状态。az fleet updaterun show \ --resource-group $GROUP \ --fleet-name $FLEET \ --name <run-name>在响应中的
statusJSON 对象下,查找你配置了计划启动闸门的阶段或组。 查找匹配beforeGates的 JSON 对象。 在下面的示例中,带有displayNamewait until Wednesday 2am的 beforeGate 处于 待定 状态——即等待到达预定时间。{ "status": { "stages": [ { "beforeGates": [ { "displayName": "wait until Wednesday 2am", "gateId": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.ContainerService/fleets/<fleet name>/gates/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "status": { "completedTime": null, "error": null, "startTime": "2025-08-08T06:20:46.283255+00:00", "state": "Pending" } } ], ... } ] } }输出内容可能很多,因此很难从中找到你要找的门。 使用 jq 之类的工具可以更轻松地找到处于等待状态的计划启动关卡。 例如,若要获取当前处于等待状态的所有阶段门:
az fleet updaterun show \ --resource-group $GROUP \ --fleet-name $FLEET \ --name <run-name> \ | jq '.status.stages[] | .beforeGates | .[] | select(.status.state == "Pending")'找到要手动完成的关卡后,确定其
gateId。 记下 gateId 的最后一部分(在最后一个斜杠之后)。 例如,对于前面的示例响应中的 挂起 门控,请使用aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e。使用上一步中的门名称,通过
az fleet gate update命令提前完成该门。az fleet gate update \ --resource-group $GROUP \ --fleet-name $FLEET \ --gate-name aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e \ --state Completed
或者,可以列出队列中所有更新运行的所有计划启动门。
az fleet gate list使用命令,按类型和状态筛选入口。az fleet gate list \ --resource-group $GROUP \ --fleet-name $FLEET \ --gate-type ScheduledStart \ --state Pending如前所述,使用
az fleet gate update命令并结合 list 命令返回的 gate 名称,可以提前完成该 gate。az fleet gate update \ --resource-group $GROUP \ --fleet-name $FLEET \ --gate-name aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e \ --state Completed
清理
更新运行完成后,可能需要清理创建的入口资源。 如果在列出所有待处理的门时看到残留的计划启动门,请按以下步骤将其删除。
注释
无法直接删除入口。 相反,必须删除与入口关联的更新运行。 此操作会自动删除与更新运行关联的 所有 入口。
确定与要删除的入口关联的更新运行。 在入口
target.updateRunProperties.name字段中查找更新运行名称。删除更新运行任务:
az fleet updaterun delete \ --resource-group $GROUP \ --fleet-name $FLEET \ --name <run-name>现在会删除与更新运行关联的所有入口。