簡體   English   中英

kubectl 頂級節點`錯誤:指標尚不可用`。 使用 metrics-server 作為 Heapster 已棄用

[英]kubectl top node `error: metrics not available yet` . Using metrics-server as Heapster Depricated

Kubernetes 無法找到度量服務器 api。我在 MacCDD0D2B3B42 上使用 Kubernetes 和 ZC5FD2174E730D2B3B42 我試圖從以下示例中進行 HPA。 但是,當我執行命令kubectl get hpa時,我的目標仍然未知。 然后我嘗試kubectl describe hpa 這給了我如下錯誤:

  Name:                                                  php-apache
  Namespace:                                             default
  Labels:                                                <none>
  Annotations:                                           <none>
  CreationTimestamp:                                     Sun, 07 Oct 2018 12:36:31 -0700
  Reference:                                             Deployment/php-apache
  Metrics:                                               ( current / target )
    resource cpu on pods  (as a percentage of request):  <unknown> / 5%
  Min replicas:                                          1
  Max replicas:                                          10
  Conditions:
    Type           Status  Reason                   Message
    ----           ------  ------                   -------
    AbleToScale    True    SucceededGetScale        the HPA controller was able to get the target's current scale
    ScalingActive  False   FailedGetResourceMetric  the HPA was unable to compute the replica count: unable to get metrics for resource cpu: no metrics returned from resource metrics API
  Events:
    Type     Reason                        Age               From                       Message
    ----     ------                        ----              ----                       -------
    Warning  FailedComputeMetricsReplicas  1h (x34 over 5h)  horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
    Warning  FailedGetResourceMetric       1m (x42 over 5h)  horizontal-pod-autoscaler  unable to get metrics for resource cpu: no metrics returned from resource metrics API

我正在使用 Kubernetes 文檔中建議的度量服務器 我也嘗試過使用 Minikube 做同樣的事情。 但這也沒有用。

運行kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes輸出:

{
  "kind": "NodeMetricsList",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes"
  },
  "items": []
}

解決方案(如果使用 Minikube):

將 Kubernetes 的上下文更改為 Minikube

在 minikube 中啟用 metrics-server 和 Disabled heapster。

minikube addons disable heapster

minikube addons enable metrics-server

使用以下步驟在集群中部署 metrics-server:

git clone https://github.com/kubernetes-incubator/metrics-server.git

cd metrics-server

kubectl create -f deploy/1.7/ (如果 Kubernetes 1.7 版)

或者

kubectl create -f deploy/1.8+/ (如果 Kubernetes 版本 1.8+)

啟動minikube dashboadminikube service [your service]

試試kubectl top node

我發現這個( https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ )資源很有幫助。

運行此命令以創建metrics-server

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

然后再試一次這個命令

kubectl top nodes

你可以得到結果:

NAME          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   

我知道這是一個遲到的答案,但我自己在 Docker Kubernetes 和 Autoscaler 方面遇到了一些問題,但沒有在互聯網上找到好的答案。 經過多天的調試,我發現metrics-server存在一些連接問題(無法連接到 pod)。

我關閉了metrics-server TLS 並開始工作..如果其他人遇到同樣的問題,我在這里回答了我自己的帖子:

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

在集群中使用以下命令來設置 Metrics Server:

kubectl apply -f https://raw.githubusercontent.com/pythianarora/total-practice/master/sample-kubernetes-code/metrics-server.yaml

這應該工作得很好。

我在指標服務器中關閉了 TLS,之后它開始工作,所以我更新了 YAML 並重新發布。

使用 minikube 1.4.0 時,除了minikube start之外無需執行任何其他minikube startkubectl top node/pod應該開箱即用。

確保您在 Kubernetes 集群上使用最新的 metrics-server。 下面的命令幫助了我。

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

參考鏈接: https : //github.com/kubernetes-sigs/metrics-server

問題是證書,更新您下載的 yaml 部署部分以安裝 metrics-server,
在文件中添加這部分: --kubelet-insecure-tls

      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server/metrics-server:v0.3.7
        imagePullPolicy: IfNotPresent
        args:
          - --kubelet-insecure-tls

完整部署現在看起來像這樣:
 apiVersion: apps/v1 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/metrics-server:v0.3.7 imagePullPolicy: IfNotPresent args: - --kubelet-insecure-tls - --cert-dir=/tmp - --secure-port=4443 ports: - name: main-port containerPort: 4443 protocol: TCP securityContext: readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1000 volumeMounts: - name: tmp-dir mountPath: /tmp nodeSelector: kubernetes.io/os: linux

暫無
暫無

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

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