kubernetes 如何从k8s集群中检索节点池大小?

rryofs0p  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(5)|浏览(152)

我找不到有用的信息:

gcloud container clusters describe CLUSTER_NAME

字符串
或从

gcloud container node-pools describe POOL_NAME --cluster CLUSTER_NAME


使用gcloud工具很容易扩展/缩小:

gcloud container clusters resize [CLUSTER_NAME] --node-pool [POOL_NAME] \
    --size [SIZE]


但是我怎么能事先知道我的节点池的大小呢?

f0brbegy

f0brbegy1#

我不同意目前的答案,因为它只给出了集群的总大小
问题是关于node-pools。我实际上需要找出一个游泳池的大小,所以我给予你我最好的镜头后,许多小时的搜索和思考。

read -p 'Cluster name: ' CLUSTER_NAME
read -p 'Pool name:    ' POOL_NAME

gcloud compute instance-groups list \
 | grep "^gke-$CLUSTER_NAME-$POOL_NAME" \
 | awk '{print $6}';

字符串
gcloud命令返回6列:1-名称,6-组大小。示例组的名称是可预测的,这使我可以通过grep行进行过滤。最后,选择第6列。
希望这能帮助别人保存一些时间。
由于某种原因,我忽略了Migrating workloads to different machine types中不那么明显的东西

kubectl get nodes -l cloud.google.com/gke-nodepool=$POOL_NAME -o=name \
  | wc -l

4c8rllxm

4c8rllxm2#

您应该使用以下命令:

gcloud container clusters describe <cluster name> --zone <zone-cluster>

字符串
检查字段currentNodeCount

q43xntqr

q43xntqr3#

建立在@hanzo2001答案之上-像这样的东西可能会反映你需要什么:

kubectl get nodes -L cloud.google.com/gke-nodepool | grep -v GKE-NODEPOOL | awk '{print $6}' | sort | uniq -c | sort -r

  16 n2-standard-4-pool
   2 preempt-custom-6
   2 default-pool

字符串

vd2z7a6w

vd2z7a6w4#

gcloud-filtersformatters有一个(经常被忽视/隐藏的)特性。这些可以帮助您获得所需的信息,而无需进一步的awk/grep-ing。
获取特定节点池的当前大小/节点计数:

gcloud compute instance-groups list \
--filter "name:gke-<cluster>-<nodepool>-*" \
--format 'value(size)'

字符串
群集test和节点池default-pool的示例:

$ gcloud compute instance-groups list --filter "name:gke-test-default-pool-*" \
--format 'value(size)'
2


获取群集中每个节点池的当前大小/节点计数,您可以进一步用途:

CLUSTER=test
for nodepool in $(gcloud container node-pools list --cluster $CLUSTER --format="value(name)"); do 
  echo -n "${nodepool}: "
  gcloud compute instance-groups list \
  --filter "name:gke-${CLUSTER}-${nodepool}-*" \
  --format 'value(size)'
done


其他相关资源:

pgx2nnw8

pgx2nnw85#

gcloud compute instances list --zones ${ZONE_NAME} \
  --filter "labels.goog-k8s-node-pool-name=${NODE_POOL} AND labels.goog-k8s-cluster-name=${CLUSTER_NAME}" \
  --format "value(NAME)" | wc -l | awk '{print $1}'

字符串
这种方法不依赖于示例组的命名,并确保您获得正确的节点池。
awk命令从wc输出中删除前导白色。

相关问题