如何定位EKS集群中的实例?

jjo*_*nes 3 containers cluster-computing nodes aws-cli kubernetes

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

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

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

    "clusters": [
        "foo-cluster",
        "bar-cluster"
    ]
}
Run Code Online (Sandbox Code Playgroud)

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"
    }
}

Run Code Online (Sandbox Code Playgroud)

Ric*_*ico 6

您不能aws eks ...专门从 CLI 进行操作。Kubernetes 节点基本上是 EC2 实例,因此希望您在创建实例时对其进行适当标记,通常使用具有eksctl等工具的自动缩放组。

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

$ aws ec2 describe-instances --filters Name=tag:Name,Values=node-name
Run Code Online (Sandbox Code Playgroud)

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

$ kubectl get nodes -o=wide
Run Code Online (Sandbox Code Playgroud)

然后您可以根据此找到您的实例:

$ aws ec2 describe-instances --filter Name=private-dns-name,Values=NAME
$ aws ec2 describe-instances --filter Name=private-ip-address,Values=INTERNAL-IP
Run Code Online (Sandbox Code Playgroud)

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

$ aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names <your-asg-name> | jq .AutoScalingGroups[0].Instances[].InstanceId
Run Code Online (Sandbox Code Playgroud)