Kubernetes:kubectl顶层节点/pod不工作

jm2pwxwz  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(5)|浏览(215)

当我执行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

此外,我已经尝试寻找解决方案无处不在,但没有解决这个问题

ftf50wuq

ftf50wuq1#

有两种方法可以解决此问题:
1)使用heapster:安装heapster将允许 'kubectl top nodes' 开箱即用。但是heapster已被弃用,因此您可能应该切换到metrics-server。
2)使用指标服务器:不幸的是,在安装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应用-f指标-服务器-部署.yaml
您应该能够通过
kubectl顶层节点

“/apis/metrics.k8s.io/v1beta1/nodes“中的所有数据都可以使用。

xghobddn

xghobddn2#

需要为指标服务器添加标志:

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

hyrbngr73#

如果度量已启用但未运行

kubectl get pods --all-namespaces | grep metrics-server

如果未返回任何Pod,则可以通过运行以下命令部署最新版本的Metrics Server:

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

编辑components.yaml内容,在Deployment::spec::template::spec::containers::args下添加- --kubelet-insecure-tls- /metrics-serverimagePullPolicy: Always
第一次

e0bqpujr

e0bqpujr4#

编辑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
smdncfj3

smdncfj35#

出现这些问题的原因是您没有在集群中启用度量服务器

top命令仅在集群用户上安装了度量服务器时才运行

从git下载Kubernetes API中的指标服务器

步进:1git clone https://github.com/kubernetes-incubator/metrics-server.git
步进:2cd metrics-server/
步骤:3部署

Kubernetes 1.7 x一米二英寸
Kubernetes公司1.8

kubectl create -f deploy/1.8+/

步骤:4检查度量服务器Pod的状态

kubectl get po -n kube-system |grep metrics

**Step5:**现在将运行您的top命令

kubectl top pod --all-namespaces

相关问题