我在 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"