前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云TKE-Metrics-Server案例: TKE中自建Metrics-Server问题

腾讯云TKE-Metrics-Server案例: TKE中自建Metrics-Server问题

原创
作者头像
朱瑞卿
修改2020-10-24 16:04:46
1.2K0
修改2020-10-24 16:04:46
举报

背景

用户想在TKE环境中自己部署metrics-server去获取监控数据, 想对监控系统有更多的控制权,好多用户会选择在TKE中自己部署一套Metrics-Server + Prometheus + Grafana

这里只讲述Metric-Server 在TKE中的部署以及注意事项风险

用户遇到的问题有一下几点:

  • 部署后访问不通(因为使用create -f 命令导致访问的是hap的地址)
  • 部署成功hpa出现问题

metrics-server架构:

image.png
image.png

kubernetes 集群资源监控在初期是通过过 heapster 来获取数据,在 1.11 开始开始逐渐废弃 heapster 了,采用 metrics-server 来代替,metrics-server 是集群的核心监控数据的聚合器,它从 kubelet 公开的 Summary API 中采集指标信息,metrics-server 是扩展的 APIServer,依赖于kube-aggregator,因此我们需要在 APIServer 中开启相关参数:

代码语言:txt
复制
- --requestheader-client-ca-file=/etc/kubernetes/certs/proxy-ca.crt
- --proxy-client-cert-file=/etc/kubernetes/certs/proxy.crt
- --proxy-client-key-file=/etc/kubernetes/certs/proxy.key
- --requestheader-allowed-names=aggregator
- --requestheader-extra-headers-prefix=X-Remote-Extra-
- --requestheader-group-headers=X-Remote-Group
- --requestheader-username-headers=X-Remote-User
- --enable-aggregator-routing=true

注意: 如果master节点没有启动kube-proxy, kube-apiserver 启动参数需要增加--enable-aggregator-routing=true

部署

环境:

因为国内访问google镜像问题需要修改镜像地址,以及其他参数:

代码语言:txt
复制
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        image: ccr.ccs.tencentyun.com/ruiqingzhu-tke/metrics-server-amd64:v0.3.6  ##如果有自己的metrics-server的镜像地址可以修改为自己的地址

创建:

kubectl apply -f components.yaml

注意 这里不能用 create -f, 不能用create -f的原因是 托管集群中有h pa-metrics-server , create命令不会覆盖,会导致注册的 apiservce 依然是hpa的service

检查部署状态

部署完之后检查pod 启动状态,以及查看注册apiserver 选择的svc label是否正确

  1. 检查pod状态
代码语言:txt
复制
kubectl get apiservice v1beta1.metrics.k8s.io
NAME                     SERVICE                      AVAILABLE   AGE
v1beta1.metrics.k8s.io   kube-system/metrics-server   True        43
  1. 检查apiservice资源是否关联的是名字为metrics-server的svc资源.
代码语言:txt
复制
# kubectl get apiservice v1beta1.metrics.k8s.io  -o yaml

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apiregistration.k8s.io/v1beta1","kind":"APIService","metadata":{"annotations":{},"name":"v1beta1.metrics.k8s.io"},"spec":{"group":"metrics.k8s.io","groupPriorityMinimum":100,"insecureSkipTLSVerify":true,"service":{"name":"metrics-server","namespace":"kube-system"},"version":"v1beta1","versionPriority":100}}
  creationTimestamp: "2020-06-03T04:38:37Z"
  name: v1beta1.metrics.k8s.io
  resourceVersion: "1643663569"
  selfLink: /apis/apiregistration.k8s.io/v1/apiservices/v1beta1.metrics.k8s.io
  uid: 3f84bb0b-4023-4ce4-9e50-e8b44253306e
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: metrics-server   ## 需要注意查看这个name是否是我们metrics-server的svc name
    namespace: kube-system
    port: 443
  version: v1beta1
  versionPriority: 100
status:
  conditions:
  - lastTransitionTime: "2020-07-16T14:12:47Z"
    message: all checks passed
    reason: Passed
    status: "True"
    type: Available

以下结果中hpa是tke自带的metrics-service,第二个是我们部署的metrics-service

代码语言:txt
复制
➜  ~ kubectl get apiservice |grep metric
v1beta1.custom.metrics.k8s.io             kube-system/hpa-metrics-service           True                      129d
v1beta1.metrics.k8s.io                    kube-system/metrics-server                True                      129d
  1. 检查svc的情况
代码语言:txt
复制
➜  ~ kubectl get svc -n kube-system  |grep metrics
hpa-metrics-service                 ClusterIP   172.16.252.133   <none>        443/TCP         129d
metrics-server                      ClusterIP   172.16.255.25    <none>        443/TCP         99d

验证

image.png
image.png

以上表明部署正常

注意

托管集群由于已经部署了hpa-metrics-server的 apiservce 所以用户如果自己部署metrics-server 会覆盖掉hpa-metrics-server

影响 : 控制台将不能使用HPA自动扩缩容,需要用户自己实现。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 部署
  • 检查部署状态
  • 验证
  • 注意
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档