kubernetes - 如何对 kubeadm 上的 metrics-server 进行故障排除?

标签 kubernetes monitoring kubeadm

我有一个在裸机上使用 kubeadm 的 1.15.1 kubenetes 集群,并且刚刚部署了 metrics-server,如文档中所示:

git clone https://github.com/kubernetes-incubator/metrics-server.git
kubectl create -f metrics-server/deploy/1.8+/

一段时间后我尝试 kubectl top node我得到的回应是:

error: metrics not available yet



当我尝试 kubectl top pods 时也是如此我得到:

W0721 20:01:31.786615 21232 top_pod.go:266] Metrics not available for pod default/pod-deployment-57b99df6b4-khh84, age: 27h31m59.78660593s error: Metrics not available for pod default/pod-deployment-57b99df6b4-khh84, age: 27h31m59.78660593s



我检查了度量服务器的 pod 和服务,它们都运行良好。我应该在哪里尝试查看问题?

最佳答案

像 Subramanian Manickam 的回答一样编辑 metric-server 部署,您也可以使用

$ kubectl edit deploy -n kube-system metrics-server

这将打开一个带有部署 yaml 文件的文本编辑器,您可以在其中进行以下更改:

spec.template.spec.containers ,与 name: metrics-server 处于同一级别添加
args:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --metric-resolution=30s

然后在 下规范模板.规范containers 处于同一级别我还得加 :
hostNetwork: true

修复与 CNI 一起工作的度量服务器(在我的情况下为 calico)。

之后,您的部署 yaml 应如下所示:
[...]
spec:
  [...]
  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s-app: metrics-server
      name: metrics-server
    spec:
      containers:
      - args:
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-insecure-tls
        - --metric-resolution=30s
        image: k8s.gcr.io/metrics-server-amd64:v0.3.3
        imagePullPolicy: Always
        name: metrics-server
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /tmp
          name: tmp-dir
      dnsPolicy: ClusterFirst
      hostNetwork: true
[...]

之后,kubectl top pods 花了大约 10-15 秒返回一些数据。

关于kubernetes - 如何对 kubeadm 上的 metrics-server 进行故障排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57137683/

相关文章:

elasticsearch - 如何扩展有状态集的 PVC?

python - 将 python Web 应用程序指标发送到 InfluxDB

linux - nrpe : Network server bind failure (98: Address already in use)

kubernetes - 无法识别 “kube-flannel.yml”:版本 “DaemonSet”中没有与种类 “extensions/v1beta1”相匹配的内容

kubernetes - 如何基于Istio(Kubernetes)中的路径路由多个gRPC服务

bash - 使用输入参数从kubernetes运行python脚本

apache-spark - 从另一个 pod 内通过 "spark-on-k8s-operator"提交 Spark 作业

algorithm - 用于检测陈旧数据的可扩展算法

kubernetes - 在 Kubernetes 上部署失败 : kubectl apply fail

docker - Kubernetes 不显示节点