Google cloud platform 如何以编程方式获取GKE集群的网络标记
如果我创建一个名为Google cloud platform 如何以编程方式获取GKE集群的网络标记,google-cloud-platform,google-compute-engine,google-kubernetes-engine,Google Cloud Platform,Google Compute Engine,Google Kubernetes Engine,如果我创建一个名为cluster-1的新GKE集群,集群中的虚拟机都将有一个自动生成的网络标签,例如GKE-cluster-1-d4732bcc-node 是否可以使用gcloudCLI或其他工具,以编程方式使用群集名称检索此网络标记?您只能使用命令获取带有gcloud的VM网络标记 gcloud compute instances describe INSTANCE-NAME --project=PROJECT-ID --zone=INSTANCE-ZONE 网络标签信息位于底部,输出类似于
cluster-1
的新GKE集群,集群中的虚拟机都将有一个自动生成的网络标签,例如GKE-cluster-1-d4732bcc-node
是否可以使用
gcloud
CLI或其他工具,以编程方式使用群集名称检索此网络标记?您只能使用命令获取带有gcloud的VM网络标记
gcloud compute instances describe INSTANCE-NAME --project=PROJECT-ID --zone=INSTANCE-ZONE
网络标签信息位于底部,输出类似于:
tags:
fingerprint: xxxx
items:
- tag1
- tag2
- tag3
集群创建的所有VM都将具有相同的前缀。
gke-CLUSTER\u NAME-NODE\u POOL\u NAME-RANDOM\u字符串
例如,我创建了集群“testcluster”,并且只使用“defaultpool”。我的一个实例是[gke-test-cluster-default-pool-xxxxxxx-xxxxxxx]
您可以获取集群创建的所有实例名称,并将它们放入类似于的变量中
name=`gcloud compute instances list --project=PROJECT-ID | grep gke | awk '{print $1}'`
现在可以使用FOR循环来运行该命令
for tags in $name; do gcloud compute instances describe $tags --project=PROJECT-ID --zone=ZONE; done
您可以在命令末尾添加一个GREP,仅用于获取网络标记信息、将输出存储在文件中或根据需要进行解析。我通过获取GKE集群的一个自动生成的防火墙规则并拉出目标标记来实现这一点:
CLUSTER_NAME=<cluster-name>
PROJECT_NAME=<project-name>
NODE_NETWORK_TAG=$(gcloud compute firewall-rules list --project $PROJECT_NAME --filter="name~gke-$CLUSTER_NAME-[0-9a-z]*-master" --format="value(targetTags[0])")
echo "$NODE_NETWORK_TAG"
CLUSTER\u名称=
项目名称=
NODE_NETWORK_TAG=$(gcloud compute防火墙规则列表--project$project_NAME--filter=“NAME~gke-$CLUSTER_NAME-[0-9a-z]*-master”--format=“value(targetTags[0]))
回显“$NODE\u NETWORK\u TAG”