You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS Boto3查询EKS集群的可用更新

问题答复

目前Boto3 EKS客户端不存在可以直接查询EKS集群所有可用更新的单一专用方法。你查阅文档找到的describe_update、list_updates接口,仅支持查询已经手动触发的历史更新任务的执行记录与状态,确实无法返回待执行的可用更新列表。

要获取集群维度的所有可用更新,需要按更新类型组合调用现有EKS接口实现,常见场景的实现路径如下:

  • 集群控制面版本可用更新
    1. 调用describe_cluster接口传入目标集群名称,从返回结果中获取当前集群运行的Kubernetes版本、平台版本、升级策略配置
    2. 调用版本列表查询接口获取当前区域支持的所有EKS K8s版本,按照EKS不支持跨次版本升级的规则,过滤出当前版本紧邻的可升级高版本,即为控制面可用的版本更新
  • 已安装Addon可用更新
    1. 调用list_addons接口获取集群下所有已安装的EKS托管Addon列表
    2. 对每个Addon调用describe_addon,拿到当前安装的Addon版本
    3. 调用describe_addon_versions传入Addon名称、当前集群版本,拿到该Addon兼容当前集群的所有可安装版本,和当前运行版本对比,过滤出可升级的版本,就是对应Addon的可用更新
  • 节点组可用更新
    1. 调用list_nodegroups接口获取集群下所有托管节点组列表
    2. 对每个节点组调用describe_nodegroup,拿到当前节点组绑定的EKS版本、节点AMI发布版本
    3. 对照当前集群版本(或待升级的目标集群版本)匹配AWS发布的最新托管节点AMI版本,即可得到节点组的版本、AMI更新项

简单的代码实现片段参考:

import boto3

eks = boto3.client("eks")
cluster_name = "your-cluster-name"

# 获取集群基础信息
cluster_info = eks.describe_cluster(name=cluster_name)["cluster"]
current_cluster_version = cluster_info["version"]
print(f"当前集群版本: {current_cluster_version}")

# 查询所有Addon可用更新
addons = eks.list_addons(clusterName=cluster_name)["addons"]
for addon in addons:
    addon_info = eks.describe_addon(clusterName=cluster_name, addonName=addon)["addon"]
    current_ver = addon_info["addonVersion"]
    # 取兼容当前集群的默认推荐版本
    addon_version_list = eks.describe_addon_versions(
        addonName=addon,
        kubernetesVersion=current_cluster_version
    )["addons"][0]["addonVersions"]
    latest_ver = next(
        v["addonVersion"] for v in addon_version_list
        if v["compatibilities"][0]["defaultVersion"]
    )
    if current_ver != latest_ver:
        print(f"Addon {addon} 可从 {current_ver} 升级到最新推荐版 {latest_ver}")

注意:如果你的集群开启了控制面、节点组自动升级配置,部分更新会由AWS在配置的维护窗口自动触发,这类更新不会在上述手动查询结果中单独标记,需要结合集群的updateConfig配置项判断。

内容的提问来源于stack exchange,提问作者awab-dogsbody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:01:28