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

如何在EKS节点启动时获取Kubernetes版本

EKS自管理节点运行时获取Kubernetes版本方案

IMDS确实未提供Kubernetes版本相关元数据,这是因为EKS官方默认采用「单版本绑定单AMI」的设计,与Azure多Kubelet版本内置的VHD模式差异明显。针对运行时动态链接对应kubelet二进制的需求,可采用以下几种方案:

方案一:通过User Data传入版本号

在创建节点组时,直接将集群的Kubernetes版本通过user-data注入节点,启动脚本读取该变量完成kubelet链接:

#!/bin/bash
# 从user-data传入集群K8s版本
export KUBERNETES_VERSION="1.29"
# 链接对应版本的kubelet二进制
ln -sf /opt/kubernetes/bin/kubelet-${KUBERNETES_VERSION} /usr/bin/kubelet

此方式可控性强,版本由集群侧统一指定,无需额外权限依赖。

方案二:通过EKS API获取集群版本

为节点实例的IAM角色添加eks:DescribeCluster权限后,在启动脚本中调用AWS CLI拉取集群版本:

#!/bin/bash
CLUSTER_NAME="your-cluster-name"
# 调用EKS API获取版本
KUBERNETES_VERSION=$(aws eks describe-cluster --name $CLUSTER_NAME --query 'cluster.version' --output text)
# 链接对应kubelet二进制
ln -sf /opt/kubernetes/bin/kubelet-${KUBERNETES_VERSION} /usr/bin/kubelet

需确保自定义AMI中已预装AWS CLI,且节点角色权限配置正确。

方案三:自定义AMI预存集群版本(固定集群场景)

若节点组仅对应特定集群,制作自定义AMI时可将集群版本写入本地文件,启动时直接读取:

#!/bin/bash
# 读取预存在AMI中的集群版本
KUBERNETES_VERSION=$(cat /etc/kubernetes/cluster-version)
# 链接对应kubelet二进制
ln -sf /opt/kubernetes/bin/kubelet-${KUBERNETES_VERSION} /usr/bin/kubelet

该方案适合集群版本稳定、节点与集群一一对应的场景。

内容的提问来源于stack exchange,提问作者maxwolffe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:09:21