我想知道是否有人能够帮助我理解我在这里做错了什么。我的命名空间中有 3 个部署,每个部署都配置了一个 Horizontal Pod Autoscaler。然而,尽管每个 HPA 都配置了各自部署的目标,但它们似乎都对相同的 CPU 指标做出反应
$ kubectl get hpa -n my-namespace
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
app1-hpa Deployment/app1 54%/100% 2 5 5 11h
app2-hpa Deployment/app2 54%/100% 10 40 39 11h
app3-hpa Deployment/app3 54%/100% 10 50 39 11h
在我的示例中,app3 是唯一一个忙碌的,但是如果您查看 TARGETS 列,所有 3 个 HPA 的利用率百分比计算相同,因此它们都已按比例放大...例如 app1,即完全空闲(每个 pod 仅使用 1m 的 cpu)已扩展到 5,因为该指标表明它处于 54%/100% ....
我试图实现的是,每个 HPA 仅对其配对的部署的 CPU 指标做出反应。因此在上面的例子中,app1 显然会停留在 2 个实例上
我的 HPA 配置如下所示(以下是 app1 的示例)
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: app1-hpa
namespace: my-namespace
spec:
maxReplicas: 5
minReplicas: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: app1
targetCPUUtilizationPercentage: 100
这是 app1 的部署代码(app2 和 app3 名称相同)
apiVersion: apps/v1
kind: Deployment
metadata:
name: app1
labels:
app: my-namespace
spec:
replicas: 2
selector:
matchLabels:
app: app
strategy:
type: Recreate
template:
metadata:
labels:
app: app
spec:
imagePullSecrets:
- name: container-registry-access
containers:
- name: app
image: "path_to_registry/location/imagename"
resources:
requests:
memory: 512Mi
cpu: 500m
limits:
memory: 512Mi
cpu: 1000m
env:
- name: LOG_LEVEL
value: info
command: ["/entrypoint-app1.sh"]
imagePullPolicy: Always
restartPolicy: Always
有谁知道我在这里做错了什么?它似乎正在扩展所有 Pod 的整体 CPU 平均值或类似的东西?如果 app3 真的很忙,我不希望 app1 和 app2 在它们实际空闲时也扩大规模
对此的任何帮助将不胜感激