如何使用Azure SDK for Python获取AKS可用Kubernetes最新版本
AKS版本查询与升级问题解决方法
1 返回结果无kubernetesVersion字段的原因
Azure Python SDK返回的升级配置对象为分层结构,目标字段没有挂载在返回结果的顶层属性中,需要从下层属性提取:
- 当前集群运行的Kubernetes版本:存放在
upgrade_profile.control_plane_profile.kubernetes_version - 控制平面可升级的版本列表:存放在
upgrade_profile.control_plane_profile.upgrades列表中,列表内每个元素的kubernetes_version字段即为可用版本 - 各工作节点池的对应版本可以从
upgrade_profile.agent_pool_profiles列表中按节点池名称提取
2 修正后的版本查询代码
for resource in list(resource_list): if resource.type == "Microsoft.ContainerService/managedClusters": print("ResourceName:", resource.name, "ResourceType:", resource.type) containerservice_client = ContainerServiceClient(credential, sub.subscription_id) # 获取集群升级配置 aks_upgrade_profile = containerservice_client.managed_clusters.get_upgrade_profile(group.name, resource.name) # 提取控制平面配置 cp_profile = aks_upgrade_profile.control_plane_profile # 获取当前版本 current_version = cp_profile.kubernetes_version print(f"当前集群Kubernetes版本:{current_version}") # 获取可升级版本列表,过滤预览版可根据需求调整判断逻辑 available_versions = [upgrade.kubernetes_version for upgrade in cp_profile.upgrades if upgrade.kubernetes_version] if available_versions: # 按版本号规则排序取最新版本 latest_version = sorted(available_versions, key=lambda x: [int(k) for k in x.split('.')], reverse=True)[0] print(f"可用升级版本:{available_versions}") print(f"最新可升级版本:{latest_version}") else: print("当前集群已为支持的最新版本,无需升级")
3 集群升级代码示例
拿到最新可用版本后,可以通过以下代码执行集群升级操作:
# 获取集群当前配置 aks_cluster = containerservice_client.managed_clusters.get(group.name, resource.name) # 赋值要升级的目标版本 aks_cluster.kubernetes_version = latest_version # 提交升级请求,异步等待执行完成 upgrade_operation = containerservice_client.managed_clusters.begin_create_or_update( resource_group_name=group.name, resource_name=resource.name, parameters=aks_cluster ) upgrade_operation.wait() print(f"AKS集群{resource.name}已成功升级到{latest_version}版本")
内容的提问来源于stack exchange,提问作者Matrix
相关产品推荐
相关产品推荐

