【问题标题】:How to retrieve node-pool size from a k8s cluster?如何从 k8s 集群中检索节点池大小?
【发布时间】:2019-06-18 04:04:51
【问题描述】:

我找不到有用的信息:

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]

但是我如何事先知道我的节点池的大小?

【问题讨论】:

    标签: kubernetes gcloud


    【解决方案1】:

    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
    

    其他相关资源:

    【讨论】:

      【解决方案2】:

      在@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
      

      【讨论】:

        【解决方案3】:

        我不同意当前的答案,因为它只给出了集群的总大小

        问题是关于节点池。我实际上需要找出一个游泳池的大小,所以经过数小时的搜索和思考,我给了你最好的机会。

        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-name,6-group-size。 实例组的名称是可预测的,这让我可以使用grep 过滤该行。 最后,选择第 6 列。

        希望这可以帮助其他人节省一些时间。


        出于某种原因,我忽略了来自Migrating workloads to different machine types 的不太明显的问题

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

        【讨论】:

        • 我现在没有时间测试你的答案,所以我会让社区评估一下。无论如何,感谢您的贡献。
        【解决方案4】:

        您应该使用以下命令:

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

        检查字段currentNodeCount

        【讨论】:

        • 我不知道我是怎么错过的......也许没有currentNodeCount,而那是0。但我现在可以检索它,谢谢.. 虽然我的节点池是 1
        • 你是对的,如果你的节点池是 0 currentNodeCount 字段将会从描述中丢失。
        • 我不会投反对票,但您的回答没有给出节点池的大小,它只给出了整个集群的大小。如果您只有一个池,则两个池的大小相同。我有 3 个不同的节点池,所以我知道 clusters.currentNodeCount 占所有池
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 2017-04-16
        • 2022-10-15
        相关资源
        最近更新 更多