您以前是否发现过这种行为?
我有一个包含5个节点的GKE集群,并且启用了自动缩放功能,如下所示
autoscaling:
enabled: true
maxNodeCount: 9
minNodeCount: 1
config:
diskSizeGb: 100
diskType: pd-standard
imageType: COS
machineType: n1-standard-1
oauthScopes:
- https://www.googleapis.com/auth/devstorage.read_only
- https://www.googleapis.com/auth/logging.write
- https://www.googleapis.com/auth/monitoring
- https://www.googleapis.com/auth/servicecontrol
- https://www.googleapis.com/auth/service.management.readonly
- https://www.googleapis.com/auth/trace.append
serviceAccount: default
initialNodeCount: 1
instanceGroupUrls:
- xxx
management:
autoRepair: true
autoUpgrade: true
name: default-pool
podIpv4CidrSize: 24
selfLink: xxxx
status: RUNNING
version: 1.13.7-gke.8
但是,当我尝试部署一项服务时,会收到此错误
Warning FailedScheduling 106s default-scheduler 0/5 nodes are available: 3 Insufficient cpu, 4 node(s) didn't match node selector.
Warning FailedScheduling 30s (x3 over 106s) default-scheduler 0/5 nodes are available: 4 node(s) didn't match node selector, 5 Insufficient cpu.
Normal NotTriggerScaleUp 0s (x11 over 104s) cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added): 1 node(s) didn't match node selector
如果我看到自己的资源统计信息,就看不到CPU问题,对吗?
kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
gke-pre-cluster-1-default-pool-17d2178b-4g9f 106m 11% 1871Mi 70%
gke-pre-cluster-1-default-pool-17d2178b-g8l1 209m 22% 3042Mi 115%
gke-pre-cluster-1-default-pool-17d2178b-grvg 167m 17% 2661Mi 100%
gke-pre-cluster-1-default-pool-17d2178b-l9gt 122m 12% 2564Mi 97%
gke-pre-cluster-1-default-pool-17d2178b-ppfw 159m 16% 2830Mi 107%
所以...如果问题似乎不是CPU出现此消息?
另一件事是...为什么资源出现问题时无法自动扩展?
请任何人找到这个之前可以解释我?我不明白。
非常感谢您
答案 0 :(得分:0)
GKE 的自动扩缩功能基于 Compute Engine instance groups。因此,它只关注实际的动态资源使用情况(CPU、内存等),而不关注 Kubernetes pod 模板中的 requests
部分。
如果在这些 Pod 中运行的软件实际上并未使用这些资源,则自动缩放器会将其 100% 的资源分配(因此无法调度更多 Pod)的 GKE 节点视为空闲。如果在这些 Pod 中运行的软件正在等待“待处理”Pod 启动,那么您的工作负载就会陷入僵局。
不幸的是,我知道没有解决此问题的方法。如果您控制用于启动 pod 的 pod 模板,您可以尝试要求比作业实际需要更少的内存/CPU。但这可能会导致 Pod 被驱逐。
GKE 的自动扩缩器并不是特别智能。
答案 1 :(得分:-1)
您能检查一下StackDriver日志中是否有此项“ ZONE_RESOURCE_POOL_EXHAUSTED ”吗?
您与kubernetes集群一起使用的区域可能存在问题。
致谢。