在EKS中获取节点和所属节点组的方法

为了后续的参考,请记下来。使用 EKS (由 Managed Nodegroup 创建的) 节点会自动附带一个名为 nodegroup-name 的标签。

$ kubectl describe nodes/ip-10-173-30-116.ap-northeast-1.compute.internal
Name:               ip-10-173-30-116.ap-northeast-1.compute.internal
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/instance-type=m5.large
                    beta.kubernetes.io/os=linux
                    cluster-name=my-cluster
                    eks.amazonaws.com/nodegroup=my-nodegroup
                    eks.amazonaws.com/nodegroup-image=ami-04574e0c4fb2f03fc
                    failure-domain.beta.kubernetes.io/region=ap-northeast-1
                    failure-domain.beta.kubernetes.io/zone=ap-northeast-1a
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=ip-10-173-30-116.ap-northeast-1.compute.internal
                    kubernetes.io/os=linux
                    nodegroup-name=my-nodegroup

所以,如果在 “kubectl get nodes” 命令后加上 “-L nodegroup-name” 选项并且输出这个标签,就可以获取节点的列表。

$ kubectl get nodes -L nodegroup-name
NAME                                               STATUS   ROLES    AGE   VERSION                NODEGROUP-NAME
ip-10-173-30-116.ap-northeast-1.compute.internal   Ready    <none>   61d   v1.16.12-eks-904af05   my-nodegroup
ip-10-173-35-117.ap-northeast-1.compute.internal   Ready    <none>   15h   v1.16.12-eks-904af05   my-nodegroup
ip-10-173-57-100.ap-northeast-1.compute.internal   Ready    <none>   11h   v1.16.12-eks-904af05   another-nodegroup

此外,GKE的情况下,节点名称是根据节点池名称自动生成的,所以仅通过节点名称就可以大致了解。我本身并没有对这种功能有所需求之前的思考。

广告
将在 10 秒后关闭
bannerAds