Kubernetes Metrics Server安装

1. 下载metrics-server代码

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

2. 查看依赖的镜像

$ cd metrics-server/deploy/1.8+
$ grep 'image:' *
metrics-server-deployment.yaml:        image: k8s.gcr.io/metrics-server-amd64:v0.3.3

假如gcr.io的镜像访问不到可以将metrics-server-deployment.yaml中的镜像替换为:registry.cn-hangzhou.aliyuncs.com/kubernets-imags/metrics-server-amd64:v0.3.3

sed -i "s/image: .*/image: registry.cn-hangzhou.aliyuncs.com\/kubernets-imags\/metrics-server-amd64:v0.3.3/g" metrics-server-deployment.yaml

3. 安装metrics-server

$ cd metrics-server
$ kubectl create -f deploy/1.8+/

稍后就可以看到 metrics-server 运行起来:

$ kubectl -n kube-system get pods -l k8s-app=metrics-server
NAME                              READY   STATUS    RESTARTS   AGE
metrics-server-54957b58f4-dnntx   1/1     Running   0          21s

4. 验证是否安全成功

$ kubectl top node
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)

从上面的输出可以看到 metrics-server 并未成功启动。查看 metrics-server 运行日志:

$ kubectl logs metrics-server-54957b58f4-dnntx  -n kube-system
E1005 11:58:15.654250       1 manager.go:111] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:mesos-test2: unable to fetch metrics from Kubelet mesos-test2 (mesos-test2): Get https://mesos-test2:10250/stats/summary/: dial tcp: lookup mesos-test2 on 10.96.0.10:53: no such host, unable to fully scrape metrics from source kubelet_summary:k8s-slave20: unable to fetch metrics from Kubelet k8s-slave20 (k8s-slave20): Get https://k8s-slave20:10250/stats/summary/: dial tcp: lookup k8s-slave20 on 10.96.0.10:53: no such host, unable to fully scrape metrics from source kubelet_summary:mesos-test1: unable to fetch metrics from Kubelet mesos-test1 (mesos-test1): Get https://mesos-test1:10250/stats/summary/: dial tcp: lookup mesos-test1 on 10.96.0.10:53: no such host]

可以看到metrics-server在从kubelet的10250端口获取信息时,使用的是hostname,而因为node1和node2是一个独立的Kubernetes演示环境,只是修改了这两个节点系统的/etc/hosts文件,而并没有内网的DNS服务器,所以metrics-server中不认识node1和node2的名字。
解决方案:

  1. 删除metrics-server
kubectl delete pods metrics-server-54957b58f4-dnntx  -n kube-system
  1. 修改metrics-server-deployment.yaml,添加如下command配置,然后重新部署metrics-server。
        imagePullPolicy: Always
        command:
            - /metrics-server
            - --kubelet-preferred-address-types=InternalIP
            - --kubelet-insecure-tls
        volumeMounts:
        - name: tmp-dir
          mountPath: /tmp
  1. 参考文档
    Kubernetes的Metrics API和Metrics Server
    kubernetes 1.14安装部署metrics-server插件
    metrics-server部署后服务不可用 #417
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Kubernetes 搭建有四种方式,简单评价一下: 1.基于Docker 本地运行Kubernetes 先决条件...
    sun363587351阅读 7,357评论 0 3
  • 16话说孩子 我似乎也是个孩子,还是个孩子,这是多么美妙的事情呀!我有一颗孩子的心,我有一双孩子的眼,虽然我已经三...
    秭归秀才9条命儿阅读 2,435评论 0 1
  • 今天下午出去给洋洋关门,恰巧遇到了乐师傅,乐师傅说墙外的空地里有山楂,我说一会儿去看看,过去一看满地的山楂,就捡了...
    93650345d0d1阅读 921评论 0 3
  • 1. 链表的基本形式 链表主要知识点 此次的内容属于引用部分的实际应用,所以需要依赖两点:依赖于引用传递this表...
    落在牛背上的鸟阅读 4,160评论 0 1
  • 贺变丽 焦点解决中级十期 洛阳嵩县 坚持分享第280天 2019—3—18 语文年会两天的学习,收获满满,...
    hebl阅读 3,126评论 0 4