【问题标题】:GKE Kubernetes Autoscaler - max cluster cpu, memory limit reachedGKE Kubernetes Autoscaler - 最大集群 cpu,达到内存限制
【发布时间】:2020-06-22 05:56:00
【问题描述】:

GKE Autoscaler 不会在 15 个节点后扩展节点(以前的限制)

我已将 Cluster 中的 MinMax 值更改为 17-25

但是节点数停留在 14-15 并且没有增加,现在我的集群已满,没有更多的 pod 可以容纳,所以每个新部署都应该触发节点扩展并将自己安排到新节点上,这不是正在发生。

当我创建部署时,它卡在Pending 状态并显示一条消息:

pod didn't trigger scale-up (it wouldn't fit if a new node is added): 1 max cluster cpu, memory limit reached

最大集群cpu,达到内存限制听起来最大节点数仍然是14-15,这怎么可能?为什么它没有触发节点扩展?

ClusterAutoscalerStatus:

apiVersion: v1
data:
  status: |+
    Cluster-autoscaler status at 2020-03-10 10:35:39.899329642 +0000 UTC:
    Cluster-wide:
      Health:      Healthy (ready=14 unready=0 notStarted=0 longNotStarted=0 registered=14 longUnregistered=0)
                   LastProbeTime:      2020-03-10 10:35:39.608193389 +0000 UTC m=+6920.650397445
                   LastTransitionTime: 2020-03-10 09:49:11.965623459 +0000 UTC m=+4133.007827509
      ScaleUp:     NoActivity (ready=14 registered=14)
                   LastProbeTime:      2020-03-10 10:35:39.608193389 +0000 UTC m=+6920.650397445
                   LastTransitionTime: 2020-03-10 08:40:47.775200087 +0000 UTC m=+28.817404126
      ScaleDown:   NoCandidates (candidates=0)
                   LastProbeTime:      2020-03-10 10:35:39.608193389 +0000 UTC m=+6920.650397445
                   LastTransitionTime: 2020-03-10 09:49:49.580623718 +0000 UTC m=+4170.622827779

    NodeGroups:
      Name:        https://content.googleapis.com/compute/v1/projects/project/zones/europe-west4-b/instanceGroups/adjust-scope-bff43e09-grp
      Health:      Healthy (ready=14 unready=0 notStarted=0 longNotStarted=0 registered=14 longUnregistered=0 cloudProviderTarget=14 (minSize=17, maxSize=25))
                   LastProbeTime:      2020-03-10 10:35:39.608193389 +0000 UTC m=+6920.650397445
                   LastTransitionTime: 2020-03-10 09:46:19.45614781 +0000 UTC m=+3960.498351857
      ScaleUp:     NoActivity (ready=14 cloudProviderTarget=14)
                   LastProbeTime:      2020-03-10 10:35:39.608193389 +0000 UTC m=+6920.650397445
                   LastTransitionTime: 2020-03-10 09:46:19.45614781 +0000 UTC m=+3960.498351857
      ScaleDown:   NoCandidates (candidates=0)
                   LastProbeTime:      2020-03-10 10:35:39.608193389 +0000 UTC m=+6920.650397445
                   LastTransitionTime: 2020-03-10 09:49:49.580623718 +0000 UTC m=+4170.622827779

部署非常小! (200m CPU,256Mi mem)所以如果添加新节点肯定会适合。

看起来像 nodepool/autoscaler 中的一个错误,因为 15 是我以前的节点数限制,不知何故它看起来仍然是 15 是最高的。

编辑: 具有更大机器的新节点池,GKE 中的自动缩放打开,一段时间后仍然是同样的问题,即使节点有空闲资源。 节点顶部:

NAME                                                  CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
gke-infrastructure-n-autoscaled-node--0816b9c6-fm5v   805m         41%    4966Mi          88%       
gke-infrastructure-n-autoscaled-node--0816b9c6-h98f   407m         21%    2746Mi          48%       
gke-infrastructure-n-autoscaled-node--0816b9c6-hr0l   721m         37%    3832Mi          67%       
gke-infrastructure-n-autoscaled-node--0816b9c6-prfw   1020m        52%    5102Mi          90%       
gke-infrastructure-n-autoscaled-node--0816b9c6-s94x   946m         49%    3637Mi          64%       
gke-infrastructure-n-autoscaled-node--0816b9c6-sz5l   2000m        103%   5738Mi          101%      
gke-infrastructure-n-autoscaled-node--0816b9c6-z6dv   664m         34%    4271Mi          75%       
gke-infrastructure-n-autoscaled-node--0816b9c6-zvbr   970m         50%    3061Mi          54%

但仍然是消息1 max cluster cpu, memory limit reached。更新部署时仍然会发生这种情况,新版本有时会卡在Pending,因为它不会触发扩展。

EDIT2: 在使用云命令描述集群时,我发现了这一点:

autoscaling:
  autoprovisioningNodePoolDefaults:
    oauthScopes:
    - https://www.googleapis.com/auth/logging.write
    - https://www.googleapis.com/auth/monitoring
    serviceAccount: default
  enableNodeAutoprovisioning: true
  resourceLimits:
  - maximum: '5'
    minimum: '1'
    resourceType: cpu
  - maximum: '5'
    minimum: '1'
    resourceType: memory

在启用自动缩放的情况下如何工作?如果达到这些,它不会触发放大吗? (总和已经超过了)

【问题讨论】:

  • 您使用了哪些命令来扩展更新ClusterAutoscaler,您的主版本是什么?
  • 我使用的是 GKE,所以我无法访问 master,因为它是由 google 管理的。此外,我没有一个名为 ClusterAutoscaler 的 CRD,但起初缩放工作正常,然后我更改了 maxNode 计数,但没有反映出来。所有节点都运行最新(今天更新)
  • 可以使用gcloud 命令进行缩放。您是否已在 GUI 中这样做或进行过更正?
  • 两种都试过了,效果一样 - 卡在 15 上。我最后的解决方案是创建新的节点池。
  • 您是否尝试过手动将 1 个节点添加到当前节点池?这可能会再次触发缩放。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

能否请您检查一下您是否没有达到您的项目配额?比如,尝试手动创建虚拟机。 如果与配额无关,能否指定您使用的 GKE 版本?

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我正用头撞墙,试图弄清楚发生了什么。连支持都想不通。

    问题在于,如果您在集群级别启用节点自动配置,您将设置整个集群允许的实际最小/最大 cpu 和内存。乍一看,UI 似乎在建议每个自动配置的节点所需的最小/最大 cpu 和内存 - 但这是不正确的。因此,例如,如果您想要最多 100 个节点,每个节点有 8 个 CPU,那么您的最大 CPU 应该是 800。我知道集群的最大值显然很有用,所以事情不会失控,但它的方式是呈现不直观。由于您实际上无法控制为您的机器类型选择的内容,您不认为不让 kubernetes 为 1 核任务选择 100 核机器会很有用吗?这就是我在配置它时认为它在问的问题。

    节点自动配置很有用,因为如果由于某种原因您在自己的节点池上进行了自动配置,有时由于配额问题而无法满足您的需求,那么集群级别的节点自动配置器会找出一个它可以提供不同的节点池机器类型来满足您的需求。在我的场景中,我使用的是 C2 CPU,并且该地区的这些 cpu 稀缺,因此我的节点池停止了自动缩放。

    为了让事情变得更加混乱,大多数人从指定他们的节点池机器类型开始,因此他们已经习惯于在每个节点的基础上自定义这些限制。但是随后某些事情停止工作,就像您不知道的配额问题一样,因此您绝望并在集群级别配置节点自动配置器,但随后完全搞砸了,因为您认为您正在为新的潜在机器类型指定限制。

    希望这有助于澄清一些事情。

    【讨论】:

    • 这个。完全相同的问题。感谢您的回答,解决了!面板确实非常不直观。很难理解集群级别的自动配置实际上限制了您的总集群 cpu 和内存,而不是可能通过节点池自动缩放器创建的单个节点。
    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 2018-07-02
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2019-04-16
    相关资源
    最近更新 更多