簡體   English   中英

Docker Kubernetes (Mac) - Autoscaler 無法找到指標

[英]Docker Kubernetes (Mac) - Autoscaler unable to find metrics

我已經通過 Docker 在我的 Mac 上安裝了 Kubernetes 的本地實例。

按照有關如何在部署上激活自動縮放的演練,我遇到了一個問題。 自動調節程序無法讀取指標。

當我運行kubectl describe hpa ,當前的 cpu 使用率返回為unknown / 50%並帶有警告:

警告 FailedGetResourceMetric:horizo​​ntal-pod-autoscaler 無法獲取資源 cpu 的指標:無法從 API 獲取指標:服務器找不到請求的資源(獲取 pods.metrics.k8s.io)

警告 FailedComputeMetricsReplicas 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+安裝了它

我終於讓它工作了..以下是我為使事情工作而采取的完整步驟:

  1. 在 Docker 中運行 Kubernetes

  2. 使用kubectl delete -n kube-system deployments.apps metrics-server從 Kubernetes 實例中刪除任何以前的 metrics-server 實例

  3. 使用git clone https://github.com/kubernetes-incubator/metrics-server.git克隆度量服務器

  4. 編輯文件deploy/1.8+/metrics-server-deployment.yaml以通過添加以前不存在的命令部分來覆蓋默認命令。 新部分將指示 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
  5. 使用kubectl create -f deploy/1.8+將 metrics-server 添加到您的 Kubernetes 實例(如果 .yaml 出錯,請改寫: kubectl apply -f deploy/1.8+

  6. 再次刪除自動縮放程序並將其添加到您的部署中。 它現在應該顯示當前的 CPU 使用情況。

2020 年 7 月編輯:

除了度量服務器已更改並且該文件不再存在之外,上述大多數步驟都適用。

回購現在建議像這樣安裝它:

apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

所以我們現在可以下載這個文件,

curl -L https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml --output components.yaml

args (L88) 下添加--kubelet-insecure-tlsmetrics-server部署並運行

kubectl apply -f components.yaml

對於在這里使用內部 IP 的人可能對你有用。 在第 4 步中按照上面的 @Mr.Turtle 操作。添加更多一個命令。

  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

我們升級到 AWS EKS 版本 1.13.7,那時我們開始遇到 HPA 問題,結果在我的部署中我不得不為resources.requests.cpu=200m指定一個值,然后 HPA 開始為我工作。

使用我的 kubernetes kubeadm 實驗室時遇到了同樣的問題,更新的程序在這里https://github.com/kubernetes-sigs/metrics-server

這解決了問題:horizo​​ntal-pod-autoscaler無法獲取資源cpu的指標:無法從資源指標API獲取指標:服務器找不到請求的資源(獲取pods.metrics.k8s.io)

如果有人仍然無法解決此問題,這有助於我在 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

我重命名了數據庫的標簽和 matchLabels(例如到 app: db),然后刪除了兩個部署並應用了新的配置 - 等等,它起作用了。 (經過數小時的嘗試解決問題..)

此問題的更多信息: https : //github.com/kubernetes/kubernetes/issues/79365

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM