我想要一个 AWS CLI 命令列出 AWS EKS 集群中所有节点使用的所有映像。我们可以使用 kubectl 列出用于启动容器的镜像。但我希望 AWS CLI 命令列出用于启动 AWS EKS 集群中所有节点的所有映像。
我试图找到类似的 kubectl 命令,但经过多次研究后我没有找到任何东西,我正在寻找 AWS CLI 命令。
那么您的意思是 AMI 用于启动您的节点吗?
如果这就是您所指的,您可以将 AWS CLI 命令与
jq
结合使用来列出每个 EKS 节点及其相应的 AMI,您可以按照以下步骤操作:
从 EKS 获取节点实例 ID: 使用
kubectl
获取节点名称(对应于 EKS 集群的 AWS 中的 EC2 实例 ID)。
kubectl get nodes -o jsonpath="{.items[*].metadata.name}"
使用 AWS CLI 获取实例详细信息: 对于从上一个命令获取的每个实例 ID,使用 AWS CLI 获取实例详细信息,包括 AMI。此步骤可以组合成脚本或单行命令。
这是一个结合了这些步骤的 bash 脚本:
#!/bin/bash
# Set your AWS region
AWS_REGION="your-region"
# Loop over each Kubernetes node
for node in $(kubectl get nodes -o jsonpath="{.items[*].metadata.name}"); do
# Use AWS CLI to find the AMI ID for the instance
ami_id=$(aws ec2 describe-instances \
--region $AWS_REGION \
--instance-ids $node \
--query "Reservations[*].Instances[*].ImageId" \
--output text)
# Output the node and its corresponding AMI ID
echo "Node: $node, AMI: $ami_id"
done
要运行我提供的脚本,您需要执行以下步骤:
list-eks-nodes-ami.sh
。chmod +x list-eks-nodes-ami.sh
./list-eks-nodes-ami.sh
将
your-region
替换为适当的 AWS 区域。该脚本将循环遍历每个节点,使用节点名称查询对应的 EC2 实例,然后提取并打印 AMI ID。
确保您拥有必要的权限,并且
kubectl
和 AWS CLI 均已正确配置。此脚本假设 Kubernetes 中的节点名称直接对应于 EC2 实例 ID,EKS 就是这种情况。
如果您指的不是 AMI,请分享更多详细信息。