首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Metrics Server 部署

Metrics Server 部署

作者头像
YP小站
发布2020-06-04 10:49:43
1.5K0
发布2020-06-04 10:49:43
举报
文章被收录于专栏:YP小站YP小站

Metrics Server 简介

Kubernetes 1.8开始,资源使用指标(如容器 CPU 和内存使用率)通过Metrics API在 Kubernetes 中获取, Metrics Server 替代了Heapster。Metrics Server 实现了Resource Metrics API,Metrics Server 是集群范围资源使用数据的聚合器。Metrics Server 从每个节点上的 Kubelet 公开的Summary API中采集指标信息

环境

  • k8s 二进制安装
  • Metrics Server v0.3.2版本
  • k8s证书存放在/opt/kubernetes/ssl目录下

创建 Metrics Server 证书

注意: "CN": "system:metrics-server" 一定是这个,因为后面授权时用到这个名称,否则会报禁止匿名访问

$ cat > metrics-server-csr.json <<EOF
{
  "CN": "system:metrics-server",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "system"
    }
  ]
}
EOF

生成 Metrics Server 证书和私钥

cfssl gencert -ca=/opt/kubernetes/ssl/ca.pem -ca-key=/opt/kubernetes/ssl/ca-key.pem -config=/opt/kubernetes/ssl/ca-config.json -profile=kubernetes metrics-server-csr.json | cfssljson -bare metrics-server

修改 kubernetes 控制平面组件配置以支持 Metrics Server

  • kube-apiserver 配置文件中添加如下参数
--requestheader-client-ca-file=/opt/kubernetes/ssl/ca.pem \
--requestheader-extra-headers-prefix=X-Remote-Extra- \
--requestheader-group-headers=X-Remote-Group \
--requestheader-username-headers=X-Remote-User \
--proxy-client-cert-file=/opt/kubernetes/ssl/metrics-server.pem \
--proxy-client-key-file=/opt/kubernetes/ssl/metrics-server-key.pem \
--runtime-config=api/all=true \
  • 注意
--requestheader-XXX、--proxy-client-XXX 是 kube-apiserver 的 aggregator layer 相关的配置参数,metrics-server & HPA 需要使用;

--requestheader-client-ca-file:用于签名 --proxy-client-cert-file 和 # --proxy-client-key-file 指定的证书;在启用了 metric aggregator 时使用;

如果 kube-apiserver 机器没有运行 kube-proxy,则还需要添加 --enable-aggregator-routing=true 参数
requestheader-client-ca-file 指定的 CA 证书,必须具有 client auth and server auth

添加 kube-controller-manager配置

# 添加如下配置参数:
--horizontal-pod-autoscaler-use-rest-clients=true

# 用于配置 HPA 控制器使用 REST 客户端获取 metrics 数据

重启 kube-apiserver kube-controller-manager 服务

$ systemctl restart kube-apiserver
$ systemctl restart kube-controller-manager

安装 METRICS-SERVER

  • 下载项目并修改deployment文件
$ git clone https://github.com/kubernetes-incubator/metrics-server
$ cd metrics-server/deploy/1.8+
$ vim metrics-server-deployment.yaml

# 修改如下参数,镜像使用我个人dockerhub镜像

      - name: metrics-server
        image: yangpeng2468/metrics-server-amd64:v0.3.2
        imagePullPolicy: IfNotPresent
        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        
注释:
1、metrics默认使用hostname来通信的,而且coredns中已经添加了宿主机的/etc/resolv.conf,所以只需要添加一个内部的dns服务器或者在pod的deployment的yaml手动添加主机解析记录,再或者改变参数为InternalIP,直接用ip来连接
2、kubelet-insecure-tls: 跳过验证kubelet的ca证书,暂时开启。(不推荐用于生产环境)

部署

$ cd metrics-server/deploy/1.8+
$ kubectl apply -f .
$ kubectl get pods -n kube-system | grep metrics

验证

# 查看node监控
$ kubectl top nodes

NAME    CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
test1   377m         18%    5915Mi          76%       
test2   267m         13%    5479Mi          70%

注意:内存单位 Mi=1024*1024字节  M=1000*1000字节
        CPU单位 1核=1000m 即250m=1/4核

# 查看所有pod监控
$ kubectl top pod --all-namespaces

欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 YP小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Metrics Server 简介
  • 环境
  • 创建 Metrics Server 证书
  • 生成 Metrics Server 证书和私钥
  • 修改 kubernetes 控制平面组件配置以支持 Metrics Server
  • 添加 kube-controller-manager配置
  • 重启 kube-apiserver kube-controller-manager 服务
  • 安装 METRICS-SERVER
  • 部署
  • 验证
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档