kubernetes - GKE 自动缩放器在无限循环中覆盖我的 HorizontalPodAutoscaler
问题描述
我在 GCP 上拥有一个 GKE 集群,我有 1 个节点池和 1 个节点(4 个 CPU/16Gb RAM)。
今天我尝试将我的一个应用程序扩展到 10 个副本(我们希望在其上运行大量并发请求)。
我首先编辑了我的horizontalPodAutoscaler.yaml
并maxReplicas
从 5 更改为 50 和minReplicas
从 1 更改为 10。
然后我从3到10进行了编辑deployment.yaml
和修改。spec.replicas
现在我的部署陷入了一个循环:它尝试部署 10 个 Pod,一旦 10 个准备就绪,它就会杀死其中的 5 个以返回到 5 个,无限循环。
这是循环期间自动缩放器状态的屏幕截图,就像它尝试应用 1 个配置并且立即配置被另一个配置覆盖。
这是我正在使用的配置文件:
水平PodScheduler.yaml
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
labels:
app: my-app
env: production
name: my-app-hpa
namespace: production
spec:
maxReplicas: 50
metrics:
- resource:
name: cpu
targetAverageUtilization: 80
type: Resource
minReplicas: 10
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
env: production
name: my-app
namespace: production
spec:
replicas: 10
selector:
matchLabels:
app: my-app
env: production
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: my-app
env: production
spec:
nodeSelector:
cloud.google.com/gke-nodepool: my-pool
containers:
- image: gcr.io/my_project_id/github.com/my_org/my-app
imagePullPolicy: IfNotPresent
name: my-app-1
resources:
requests:
cpu: "50m"
解决方案
推荐阅读
- sass - Netlify 部署
- macos - macOS Apple M1 上的 TensorFlow
- javascript - ReferenceError:客户端未定义 Discord.js
- superscript - 将 12 7-12 转换为上标 12⁷⁻¹/² 有没有办法减少 / 的长度,并且 12 7-1/2 在一个单元格中。我用下面的代码手动转换了它
- r - 为什么 R 在 0.3 的值上挣扎?
- pyspark - 用于在本地机器上创建 sparksession 的 pytest
- reactjs - 如何在 Jest 中测试链接的 React 钩子?
- python - Argparse,需要 1 个 nargs,1 个可选?
- uwp - XDG0062 未能在索引 0 处检索子项
- c# - Unity Editor 在运行计时器时冻结