Kubernetes 自动缩放内存不起作用,但适用于 CPU

Jib*_*eeb 5 docker kubernetes

我使用的yaml如下所示

    apiVersion: v1
    kind: Service
    metadata:
      name: xxx-svc
      labels:
        app: xxxxxx
    spec:
      type: NodePort
      ports:
      - port: 8080
      selector:
        app: xxxxxx
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-xxx
      labels:
        app: xxxxxx
    spec:
      selector:
        matchLabels:
          app: xxxxxx
      template:
        metadata:
          labels:
            app: xxxxxx
        spec:
          containers:
          - name: xxxxxx
            image: yyy/xxxxxx:latest
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "100m"
                memory: "504Mi"
              limits:
                cpu: "100m"
                memory: "504Mi"
    ---
    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: xxxxxx
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: my-xxx
      minReplicas: 1
      maxReplicas: 3
      metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
  - type: Resource
    resource:
      name: memory
      target:
        type: Value
        averageValue: 500Mi
Run Code Online (Sandbox Code Playgroud)

服务、HPA、部署一切都已成功部署,但是当我检查 hpa (kubectl get hpa) 时,我得到以下结果

NAME        REFERENCE              TARGETS                   MINPODS   
MAXPODS   REPLICAS   AGE

xxxxxx   Deployment/my-xxx   unknown/500Mi, 1%/50%   1         3         3          69m
Run Code Online (Sandbox Code Playgroud)

我得到(kubectl描述hpa)的原因是

警告 FailedComputeMetricsReplicas 21m(x4 over 22m)horizo​​ntal-pod-autoscaler 无法获取内存利用率:缺少内存请求

内存未知但CPU正在工作可能是什么原因

Nic*_*Rak 0

这样做的原因:

\n\n
\n

警告 FailedComputeMetricsReplicas 21m(x4 超过 22m)\n 水平 Pod 自动缩放器无法获取内存利用率:缺少\n 内存请求

\n
\n\n

默认情况下,Kubernetes HPA 不适用于内存,您需要为内存创建自定义指标,然后使用它。\n我在这里找到了一些其他信息,人们如何尝试解决相同的问题。

\n\n
\n

基于 Pod 内存的自动缩放

\n\n

在本节中,我们将讨论如何根据 Pod 消耗的内存部署自动缩放。我们使用命令 \n \xe2\x80\x9c kubectl top pod \xe2\x80\x9d 来获取已使用的 Pod 内存并应用\n 逻辑。

\n\n
    \n
  • 获取正在运行的 pod 的平均 pod 内存:执行脚本如下:
  • \n
\n
\n

  • 我觉得剧本太老了。出现一些错误。另外,在他们提到的 kubernetes 文档中,默认支持内存和 cpu(https://kubernetes.io/docs/tasks/run-application/horizo​​ntal-pod-autoscale-walkthrough/) (3认同)