【问题标题】:Kubernetes Autoscaling with Memory Not Working, But working for CPUKubernetes Autoscaling with Memory 不工作,但为 CPU 工作
【发布时间】:2019-04-23 18:33:17
【问题描述】:

我使用的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

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

NAME        REFERENCE              TARGETS                   MINPODS   
MAXPODS   REPLICAS   AGE

xxxxxx   Deployment/my-xxx   unknown/500Mi, 1%/50%   1         3         3          69m

我得到 (kubectl describe hpa) 的原因是

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

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

【问题讨论】:

  • 在后台 hpa 正在为内存工作,但是当我尝试 kubectl describe 时,它​​显示未知。我认为它将在新版本中修复

标签: docker kubernetes


【解决方案1】:

原因:

警告 FailedComputeMetricsReplicas 21m (x4 over 22m) 水平 pod-autoscaler 无法获得内存利用率:缺失 内存请求

Kubernetes HPA 默认情况下不适用于内存,您需要为内存创建自定义指标然后使用它。 我发现了一些额外的信息here人们如何尝试解决同样的问题。

基于 Pod 内存的自动缩放

在本节中,我们将讨论如何在 Pod 消耗的内存基础。我们使用了命令 “kubectl top pod” 获取已使用的 pod 内存并应用 逻辑。

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

【讨论】:

【解决方案2】:

Kubernetes 内存自动缩放尚未应用。您可以编写一个脚本,该脚本位于所需的 pod 上并获取内存值并将其划分为所需的内存以获取百分比并放大或缩小 pod。只需在 cron 作业中运行脚本,该作业会定期检查统计信息。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 2021-03-02
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
相关资源
最近更新 更多