AKS 每周发布一个新节点映像。 每个新群集、新节点池或升级群集总是会收到最新的映像,使得很难保持一致性并拥有可重复的环境。
通过节点池快照,可以拍摄节点池的配置快照,接下来,只要该配置和 Kubernetes 版本受支持,就可以根据该快照创建新节点池或新群集。 有关可支持性窗口的详细信息,请参阅 AKS 中支持的 Kubernetes 版本。
快照是一个 Azure 资源,将包含来自源节点池的配置信息,例如节点映像版本、Kubernetes 版本、OS 类型和 OS SKU。 然后,可引用此快照资源及其配置的相应值,以根据该快照资源创建任何新节点池或群集。
本文假定你拥有现有的 AKS 群集。
- 任何根据快照创建的节点池或群集都必须与快照使用同一虚拟机系列中的 VM,例如,你无法根据 D 系列节点池中捕获的快照创建 N 系列的新节点池,因为这两种情况下的节点映像结构不同。
- 必须在与源节点池相同的区域创建快照,这些快照可用于创建或更新其他区域中的群集和节点池。
要从节点池中拍摄快照,需要节点池资源 ID,可从以下命令中获取:
NODEPOOL_ID=$(az aks nodepool show --name nodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --query id -o tsv)
重要
必须在 2021 年 11 月 10 日之后创建或升级 AKS 节点池,才能从中拍摄快照。
如果使用的是 aks-preview
Azure CLI 扩展版本 0.5.59
或更高版本,则节点池快照的命令已更改。 有关更新的命令,请参阅节点池快照 CLI 参考。
现在,要从上一个节点池拍摄快照,请使用 az aks snapshot
CLI 命令。
az aks nodepool snapshot create --name MySnapshot --resource-group MyResourceGroup --nodepool-id $NODEPOOL_ID --location chinaeast2
首先,需要从先前创建的快照中获取资源 ID,可从以下命令中获取:
SNAPSHOT_ID=$(az aks nodepool snapshot show --name MySnapshot --resource-group myResourceGroup --query id -o tsv)
现在,可使用以下命令根据此快照添加新节点池。
az aks nodepool add --name np2 --cluster-name myAKSCluster --resource-group myResourceGroup --snapshot-id $SNAPSHOT_ID
只要快照 Kubernetes 版本和节点映像版本比当前节点池中的版本更新,就可以将节点池升级到快照配置。
首先,需要从先前创建的快照中获取资源 ID,可从以下命令中获取:
SNAPSHOT_ID=$(az aks nodepool snapshot show --name MySnapshot --resource-group myResourceGroup --query id -o tsv)
现在,可使用此命令将此节点池升级到此快照配置。
az aks nodepool upgrade --name nodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --snapshot-id $SNAPSHOT_ID
备注
节点池映像版本与快照中包含的版本相同,并且在每个缩放操作中都保持不变。 但是,如果此节点池已升级,或者未提供快照 ID 就执行节点映像升级,则节点映像会升级到最新版本。
备注
若要仅升级节点池的节点版本,请使用 --node-image-only
标志。 基于具有相同 Kubernetes 版本的快照升级节点池的节点映像版本时,这是必需的。
从快照创建群集时,快照配置会创建群集原始系统池。
首先,需要从先前创建的快照中获取资源 ID,可从以下命令中获取:
SNAPSHOT_ID=$(az aks nodepool snapshot show --name MySnapshot --resource-group myResourceGroup --query id -o tsv)
现在,可使用此命令根据快照配置创建此群集。
az aks create --name myAKSCluster2 --resource-group myResourceGroup --snapshot-id $SNAPSHOT_ID