【问题标题】:How can I use metrics-server instead of heapster to see CPU usage in HPA如何使用 metrics-server 而不是 heapster 来查看 HPA 中的 CPU 使用情况
【发布时间】:2019-03-29 13:19:14
【问题描述】:

如何设置使用 metrics-server 来获取 HPA 的 CPU 使用率?

# kubectl top nodes

错误:指标尚不可用

# kubectl get pods -n kube-system

NAME READY STATUS RESTARTS AGE

heapster-709db6bd48-f2gba 2/2 运行 0 6h

metrics-server-70647b8f8b-99pja 1/1 运行 0 5h

.....

# kubectl get hpa

名称参考目标 MINPODS MAXPODS REPLICAS 年龄

devops-deployment 部署/devops-deployment /50% 4 10 4 1h

【问题讨论】:

    标签: kubernetes cpu-usage missing-data autoscaling azure-aks


    【解决方案1】:

    我和你有同样的问题。 对我有帮助的是this post

    -删除指标-服务器

    -更改 metrics-server/deploy/1.8+/metrics-server-deployment.yaml

    -再次申请

    -或者干脆

    更多详情如下:

    kubectl delete -f metrics-server/deploy/1.8+
    

    编辑metrics-server/deploy/1.8+/metrics-server-deployment.yaml 并添加下一个选项:

        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
    

    metrics-server-deployment.yaml 应该如下所示,或者直接从 here 复制粘贴

    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: metrics-server
      namespace: kube-system
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: metrics-server
      namespace: kube-system
      labels:
        k8s-app: metrics-server
    spec:
      selector:
        matchLabels:
          k8s-app: metrics-server
      template:
        metadata:
          name: metrics-server
          labels:
            k8s-app: metrics-server
        spec:
          serviceAccountName: metrics-server
          volumes:
          # mount in tmp so we can safely use from-scratch images and/or read-only containers
          - name: tmp-dir
            emptyDir: {}
          containers:
          - name: metrics-server
            image: k8s.gcr.io/metrics-server-amd64:v0.3.1
            imagePullPolicy: Always
            command:
            - /metrics-server
            - --kubelet-insecure-tls
            - --kubelet-preferred-address-types=InternalIP
            volumeMounts:
            - name: tmp-dir
              mountPath: /tmp
    

    再次应用度量服务器文件:kubectl apply -f metrics-server/deploy/1.8+

    clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader 创建 clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator 创建 rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader 创建了 apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io 已创建 serviceaccount/metrics-server 创建 deployment.extensions/metrics-server 创建的服务/metrics-server 创建 clusterrole.rbac.authorization.k8s.io/system:metrics-server 创建 clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server 已创建

    检查结果:

    kubectl get hpa    
    NAME               REFERENCE                     TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
    nginx-deployment   Deployment/nginx-deployment   <unknown>/80%   3         10        10         25
    
    kubectl top nodes
    NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
    kube-master-1   255m         12%    2582Mi          35%       
    kube-worker-1   124m         6%     2046Mi          27
    
    kubectl top pods
    NAME                                CPU(cores)   MEMORY(bytes)   
    nginx-deployment-76bf4969df-4bbdc   0m           2Mi             
    nginx-deployment-76bf4969df-5m6xc   0m           2Mi             
    nginx-deployment-76bf4969df-b4zh7   0m           2Mi             
    nginx-deployment-76bf4969df-c58wl   0m           2Mi             
    nginx-deployment-76bf4969df-cktcg   0m           2Mi             
    nginx-deployment-76bf4969df-fbjj9   0m           2Mi             
    nginx-deployment-76bf4969df-gh94w   0m           2Mi             
    nginx-deployment-76bf4969df-qx6ld   0m           2Mi             
    nginx-deployment-76bf4969df-rvt54   0m           2Mi             
    nginx-deployment-76bf4969df-vq9gs   0m           2Mi
    

    此外,如果您在 Pod 上使用基于资源利用率百分比的自动缩放,则需要为 Pod 提供资源限制,否则它将无法计算正在使用的资源百分比。如果部署的 pod 规范没有资源限制,您需要将 HPA 设置为基于绝对值进行扩展,包括单位。对于 CPU,您可以将其设置为 300m 作为字符串。例如,对于 RAM,您可以将其设置为 400Mi。没有资源限制可以解释为什么在 TARGETS 下运行 kubectl get hpa 时看不到指标的 current 值。

    【讨论】:

    • 感谢您的回复。我尝试了您的步骤,但即使我已经等了几天,仍然在 Targets 列下显示 (就像您显示的最后一个结果)。我可以知道如何不显示 而是显示实际值吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多