簡體   English   中英

Kubernetes:kubectl 頂級節點/Pod 不工作

[英]Kubernetes: kubectl top nodes/pods not working

當我執行kubectl top pods/nodes時,出現以下錯誤:

指標尚不可用

當我檢查日志時,我得到

$ kubectl logs metrics-server-7df4c4484d-h75wr -n kube-system -c metrics-server

I1008 12:02:55.159069       1 serving.go:273] Generated self-signed cert(apiserver.local.config/certificates/apiserver.crt, apiserver.local.config/certificates/apiserver.key)
[restful] 2018/10/08 12:02:56 log.go:33: [restful/swagger] listing is available at https://:443/swaggerapi
[restful] 2018/10/08 12:02:56 log.go:33: [restful/swagger] https://:443/swaggerui/ is mapped to folder /swagger-ui/
I1008 12:02:56.358063       1 serve.go:96] Serving securely on [::]:443
E1008 12:03:04.225519       1 reststorage.go:101] unable to fetch node metrics for node "hpa-test": no metrics known for node "hpa-test"
E1008 12:03:07.619489       1 reststorage.go:101] unable to fetch node metrics for node "hpa-test": no metrics known for node "hpa-test"

此外,我可以從以下位置 ping 到 hpa-test 節點:

$ kubectl exec -it  metrics-server-7df4c4484d-h75wr -n kube-system sh

另外,我嘗試過到處尋找解決方案,但沒有解決問題

有兩種方法可以解決此問題:

1) 使用heapster :安裝 heapster 將允許“kubectl top nodes”開箱即用。 但是 heapster 已被棄用,因此您可能應該切換到 metrics-server。

2) 使用metrics-server :不幸的是,在安裝 metrics-server 時它可能無法開箱即用......如果沒有,您需要更新 metrics-server-deployment.yaml (1.8+) 的末尾用於安裝的文件並添加具有正確參數的命令部分,如下所示:

containers:
- name: metrics-server
  image: k8s.gcr.io/metrics-server-amd64:v0.3.1
  imagePullPolicy: Always
  volumeMounts:
  - name: tmp-dir
    mountPath: /tmp

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

然后簡單地應用更改:

kubectl apply -f metrics-server-deployment.yaml

然后你應該能夠得到結果

kubectl 頂級節點

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"

需要為指標服務器添加標志:

--kubelet-insecure-tls=true
--kubelet-port={YOU_KUBELET_PORT}
--kubelet-preferred-address-types=InternalIP
--v=5
--logtostderr

出現這些問題是因為您沒有在集群中啟用指標服務器

只有在您的集群上安裝了度量服務器時,top 命令才會運行

從 git 下載 Kubernetes API 中的度量服務器

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

步驟:2 cd metrics-server/

步驟:3部署

Kubernetes 1.7 kubectl create -f deploy/1.7/

Kubernetes 1.8

kubectl create -f deploy/1.8+/

Setp :4檢查指標服務器 pod 的狀態

 kubectl get po -n kube-system |grep metrics

步驟 5:現在您的 top 命令將運行

kubectl top pod --all-namespaces

編輯 metrics-server 的部署並將以下內容添加到其容器的參數中。

--kubelet-insecure-tls
--kubelet-preferred-address-types=InternalIP

例如,

kind: Deployment
metadata:
  name: metrics-server
  ...
spec:
  template:
    spec:
      ...
      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.6
        args:
          - --kubelet-insecure-tls
          - --kubelet-preferred-address-types=InternalIP

暫無
暫無

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

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