Docker Kubernetes(Mac)-自动缩放器无法找到指标

时间:2019-01-09 09:21:55

标签: docker kubernetes

我已经在Mac上通过Docker安装了Kubernetes的本地实例。

walkthrough上如何在部署上激活自动缩放后,我遇到了一个问题。自动缩放器无法读取指标。

当我运行kubectl describe hpa时,当前的CPU使用率以未知/ 50%的形式返回并显示警告:

  

警告失败GetResourceMetric:   horizo​​ntal-pod-autoscaler无法获取资源cpu的指标:   无法从API获取指标:服务器找不到   请求的资源(获取pods.metrics.k8s.io)

     

警告失败的计算指标重复   horizo​​ntal-pod-autoscaler无法获得cpu利用率:无法   获取资源cpu的指标:无法从API获取指标:   服务器找不到请求的资源(获取pods.metrics.k8s.io)

我已经通过git clone https://github.com/kubernetes-incubator/metrics-server.git安装了指标服务器,并与kubectl create -f deploy/1.8+一起安装了

5 个答案:

答案 0 :(得分:7)

我终于开始工作了。 这是我为使工作正常进行的全部步骤:

  1. 在Docker中运行Kubernetes

  2. 使用kubectl delete -n kube-system deployments.apps metrics-server

  3. 从Kubernetes实例中删除任何以前的metrics-server实例
  4. 使用git clone https://github.com/kubernetes-incubator/metrics-server.git

  5. 克隆指标服务器
  6. 编辑文件 deploy / 1.8 + / metrics-server-deployment.yaml ,以通过添加不存在的 command 部分来覆盖默认命令之前。新部分将指示metrics-server允许进行不安全的通信会话(不要验证所涉及的证书)。仅对Docker进行此操作,而不对metrics-server的生产部署进行此操作:

    containers:
    - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.1
        command:
          - /metrics-server
          - --kubelet-insecure-tls
    
  7. 使用kubectl create -f deploy/1.8+将metrics-server添加到您的Kubernetes实例(如果.yaml存在错误,请改写为:kubectl apply -f deploy/1.8+

  8. 删除自动定标器,然后再次将其添加到您的部署中。现在它应该显示当前的CPU使用情况。

答案 1 :(得分:3)

对于使用Internal-IP的人员来说,这里可能对您有用。按照上面的@ Mr.Turtle步骤4。添加更多命令。

  containers:
  - name: metrics-server
    image: k8s.gcr.io/metrics-server-amd64:v0.3.3
    command:
      - /metrics-server
      - --kubelet-insecure-tls
      - --kubelet-preferred-address-types=InternalIP

答案 2 :(得分:2)

我们已升级到AWS EKS版本1.13.7,那时我们开始遇到HPA的问题。事实证明,在我的部署中,我必须为resources.requests.cpu=200m指定一个值,然后HPA开始为我工作。

答案 3 :(得分:0)

使用我的kubernetes kubeadm实验室时出现了同样的问题,更新的过程在这里 https://github.com/kubernetes-sigs/metrics-server

这解决了问题: horizo​​ntal-pod-autoscaler无法获取资源cpu的度量:无法从资源度量API获取度量:服务器找不到请求的资源(获取pods.metrics.k8s.io)

答案 4 :(得分:0)

如果有人仍然无法解决这个问题,这有助于我在 minikube 上修复它:

我有 2 个具有相同标签的部署,如下所示:

kind: Deployment
metadata:
  name: webserver
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web

---

kind: Deployment
metadata:
  name: database
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web

我将数据库的 label 和 matchLabels 重命名(例如重命名为 app: db),然后删除了两个部署并应用了新配置 - 等等,它起作用了。 (经过数小时的尝试解决问题..)

有关此问题的更多信息:https://github.com/kubernetes/kubernetes/issues/79365