如何通过eksctl或kubectl获取EKS中节点对应的Nodegroup?
获取EKS节点对应的Nodegroup的几种可行方法
EKS节点默认会携带标识所属Nodegroup的标签,你可以通过以下几种方式快速关联节点和Nodegroup:
1. 直接用kubectl查看节点标签
EKS自动给每个节点打上了eks.amazonaws.com/nodegroup标签,执行以下命令就能同时看到节点名称和对应的Nodegroup:
kubectl get nodes -L eks.amazonaws.com/nodegroup
如果需要更简洁的输出格式,可以用jsonpath过滤:
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.eks\.amazonaws\.com/nodegroup}{"\n"}{end}'
2. 结合eksctl和kubectl批量查询
先获取集群下所有Nodegroup列表,再逐个查询每个Nodegroup包含的节点:
# 替换<你的集群名>为实际集群名称 CLUSTER_NAME="你的集群名" for ng in $(eksctl get nodegroups --cluster $CLUSTER_NAME -o name); do echo "=== Nodegroup: $ng ===" kubectl get nodes -l eks.amazonaws.com/nodegroup=$ng --no-headers -o custom-columns=NODE_NAME:.metadata.name done
3. 通过AWS CLI查询EC2实例标签
EKS节点对应的EC2实例会带有eks:nodegroup-name标签,用AWS CLI可以直接查询:
# 替换<你的集群名>为实际集群名称 aws ec2 describe-instances \ --filters "Name=tag:eks:cluster-name,Values=你的集群名" \ --query 'Reservations[*].Instances[*].{节点名称:Tags[?Key==`Name`].Value|[0], Nodegroup:Tags[?Key==`eks:nodegroup-name`].Value|[0]}' \ --output table
内容的提问来源于stack exchange,提问作者Stack_IQ
相关产品推荐
相关产品推荐

