【问题标题】:kubernetes hpa issue with metrics-server度量服务器的 kubernetes hpa 问题
【发布时间】:2019-03-13 01:26:20
【问题描述】:

我已经配置了一个 kubernetes 集群,其中 metrics-server(作为一个聚合的 apiserver)替换了 heapster。 kubectl top 工作正常,metrics.k8s.io/v1beta1 api 组中的原始端点也是如此。然而,HPA 没有。控制器管理器日志显示以下错误(没有其他错误):

E1008 10:45:18.462447       1 horizontal.go:188] failed to compute desired number of replicas based on listed metrics for Deployment/kube-system/nginx: failed to get cpu utilization: missing request for cpu on container nginx in pod kube-system/nginx-64f497f8fd-7kr96
I1008 10:45:18.462511       1 event.go:221] Event(v1.ObjectReference{Kind:"HorizontalPodAutoscaler", Namespace:"kube-system", Name:"nginx", UID:"387f256e-cade-11e8-9cfa-525400c042d5", APIVersion:"autoscaling/v2beta1", ResourceVersion:"3367", FieldPath:""}): type: 'Warning' reason: 'FailedGetResourceMetric' missing request for cpu on container nginx in pod kube-system/nginx-64f497f8fd-7kr96
I1008 10:45:18.462529       1 event.go:221] Event(v1.ObjectReference{Kind:"HorizontalPodAutoscaler", Namespace:"kube-system", Name:"nginx", UID:"387f256e-cade-11e8-9cfa-525400c042d5", APIVersion:"autoscaling/v2beta1", ResourceVersion:"3367", FieldPath:""}): type: 'Warning' reason: 'FailedComputeMetricsReplicas' failed to get cpu utilization: missing request for cpu on container nginx in pod kube-system/nginx-64f497f8fd-7kr96

指标服务器规范:

spec:
  containers:
  - args:
    - --kubelet-preferred-address-types=InternalIP
    image: k8s.gcr.io/metrics-server-amd64:v0.3.1
    imagePullPolicy: Always
    name: metrics-server
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /tmp
      name: tmp-dir
  dnsPolicy: ClusterFirst
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: metrics-server
  serviceAccountName: metrics-server
  terminationGracePeriodSeconds: 30
  volumes:
  - emptyDir: {}
    name: tmp-dir

controller-manager 正在运行

--horizontal-pod-autoscaler-use-rest-clients="true"

k8s 版本 1.11.3

有什么想法吗?

【问题讨论】:

  • 运行metrics-server需要什么参数?
  • 你可以在运行 kube-system/nginx-64f497f8fd-7kr96 的节点上看到日志 kubelet
  • 我已将 metrics-server 规范添加到原始帖子中 - kubelet 日志中没有与 metrics-server 相关的错误(据我所知)。
  • 我明白了,但是如果你的 kubelet 端口与默认端口不同 - 需要在 args 中添加标志。 --kubelet-insecure-tls=true --kubelet-port=10250 --kubelet-preferred-address-types=InternalIP --v=5 --logtostderr
  • 感谢您关注我的问题。从 metrics-server 到 kubelet 的连接很好。我会按照您的建议尝试使用 --v=5 运行 metrics-server 并粘贴日志。

标签: kubernetes


【解决方案1】:

原来这是我很愚蠢(与度量服务器无关)。

我正在测试 pod 容器没有任何 CPU 请求设置的部署。

【讨论】:

    【解决方案2】:

    我会在这里写,在cmets不方便的格式。

    检查你proxy-client-cert-fileproxy-client-key,打开他这个命令,检查主题CN:

    $ openssl x509  -noout -text -in /etc/kubernetes/ssl/front-proxy-client.pem 
    
    
    Certificate:
        Data:
            Version: hidden
            Serial Number: hidden (hidden)
        Signature Algorithm: hidden
            Issuer: CN=front-proxy-ca
            Validity
                Not Before: hidden
                Not After : hidden
            Subject: CN=front-proxy-client
    

    在我的例子中,Subject CN=front-proxy-client,我在 kube-apiserver 中添加了这个 CN: --requestheader-allowed-names=front-proxy-client

    【讨论】:

    • 我也有 '--requestheader-allowed-names=front-proxy-client'。
    • 还有这个 - $ sudo openssl x509 -in /etc/kubernetes/front-proxy-client.crt -text | grep 主题:主题:CN=front-proxy-client
    • 我没有更多的想法 :(
    猜你喜欢
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2021-02-17
    • 2021-09-07
    • 1970-01-01
    • 2021-09-16
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多