首页 > 解决方案 > 如何在 EKS 集群中定位实例?

问题描述

如何查看与 EKS 集群关联的实例?

我可以使用 AWS CLI 列出集群名称并描述集群,但如何查看集群中实际存在哪些实例?

aws eks list-clusters --region us-east-1

    "clusters": [
        "foo-cluster",
        "bar-cluster"
    ]
}

aws eks describe-cluster --name foo-cluster

{
    "cluster": {
        "name": "foo-cluster",
        "arn": "arn:aws:eks:us-east-1:12345:cluster/foo-cluster",
        "createdAt": 1554068824.493,
        "version": "1.13",
        "endpoint": "https://12345.abc.us-east-1.eks.amazonaws.com",
        "roleArn": "arn:aws:iam::12345:role/foo-cluster12345",
        "resourcesVpcConfig": {
            "subnetIds": [
                "subnet-45678",
                "subnet-34567",
                "subnet-23456",
                "subnet-12345"
            ],
            "securityGroupIds": [
                "sg-12345"
            ],
            "vpcId": "vpc-12345"
        },
        "status": "ACTIVE",
        "certificateAuthority": {
            "data": "zubzubzub="
        },
        "platformVersion": "eks.2"
    }
}

标签: kubernetescontainersnodescluster-computingaws-cli

解决方案


您不能aws eks ...专门从 CLI 中获取。Kubernetes 节点基本上是 EC2 实例,因此希望您在创建实例时适当地标记实例,通常使用带有eksctl 之类的工具的 Autoscaling Group 。

您的实例通常具有与工作程序节点名称相同的“名称”标签。所以你可以这样做:

$ aws ec2 describe-instances --filters Name=tag:Name,Values=node-name

或者,您可以通过以下方式获取节点的NAME或:INTERNAL-IP

$ kubectl get nodes -o=wide

然后你可以根据它找到你的实例:

$ aws ec2 describe-instances --filter Name=private-dns-name,Values=NAME
$ aws ec2 describe-instances --filter Name=private-ip-address,Values=INTERNAL-IP

或者,您可以查询自动缩放组:

$ aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names <your-asg-name> | jq .AutoScalingGroups[0].Instances[].InstanceId

推荐阅读