栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

k8s集群中部署metrics-server

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s集群中部署metrics-server

文章目录
  • 概述
  • 部署
    • 下载部署文件
    • 修改镜像地址

概述

cka有一道考题,需要试用kubectl top,这个命令需要有对应的metrics接口,如果不安装metrics-server,使用top命令查看Pod的CPU、内存使用过程中,会遇到以下问题:

$ kubectl top po
W0818 03:22:46.090578   26207 top_pod.go:140] Using json format to get metrics.e-protocol-buffers flag
error: Metrics API not available

 

部署

安装metric-server组件可以参考Github上的安装参考资料:GitHub - kubernetes-sigs/metrics-server
 

下载部署文件
$ wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml

需要注意的是,metrics-server镜像用的是gcr镜像,需要换到国内的镜像仓库
 

修改镜像地址
sed -i 's/k8s.gcr.io/metrics-server/registry.cn-hangzhou.aliyuncs.com/google_containers/g' metrics-server-components.yaml

 
如果是macOS,执行sed报错,需要执行以下命令

brew install gnu-sed
alias sed=gsed

下载GNU的sed,终端中默认的是BSD的sed。
然后用gsed代替sed命令就行了
 

apply修改之后的配置文件,查看该metric-server运行Pod

$ kubectl get pods --all-namespaces | grep metrics
NAMESPACE     NAME                                READY   STATUS      RESTARTS   AGE
kube-system   metrics-server-6dfddc5fb8-f54vr     0/1     Running     0          44s

发现pod处于running状态但是没有ready,推测应该是探针检测没过,describe查看其详细信息:

……
Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  79s               default-scheduler  Successfully assigned kube-system/metrics-server-6dfddc5fb8-f54vr to loki
  Normal   Pulled     78s               kubelet            Container image "k8s.gcr.io/metrics-server/metrics-server:v0.5.0" already present on machine
  Normal   Created    78s               kubelet            Created container metrics-server
  Normal   Started    78s               kubelet            Started container metrics-server
  Warning  Unhealthy  9s (x5 over 49s)  kubelet            Readiness probe failed: HTTP probe failed with statuscode: 500

可以看到在描述中的事件信息中,“Readiness probe failed: HTTP probe failed with statuscode: 500”。

然后查看该Pod的日志:

$ kubectl logs -n kube-system metrics-server-6dfddc5fb8-f54vr
……
I0816 01:07:06.734107       1 server.go:188] "Failed probe" probe="metric-storage-ready" err="not metrics to serve"
I0816 01:07:16.736864       1 server.go:188] "Failed probe" probe="metric-storage-ready" err="not metrics to serve"
E0816 01:07:18.834625       1 scraper.go:139] "Failed to scrape node" err="Get "https://192.168.130.100:10250/stats/summary?only_cpu_and_memory=true": x509: cannot validate certificate for 192.168.130.100 because it doesn't contain any IP SANs" node="loki"

如上可以看到Readiness Probe探针检测到Metris Server容器启动后对httpGet探针存活没反应,具体原因是“cannot validate certificate for 192.168.130.100 because it doesn’t contain any IP SANs”。

 

针对“cannot validate certificate for 192.168.130.100 because it doesn’t contain any IP SANs”这个报错,可以仔细查阅Github上的安装参考资料。其中有提到:

1)安装要求,如下红框中说明,Kubelet证书需要由群集证书颁发机构签名(或可以禁用证书验证,通过对Metrics Server配置参数–Kubelet-insecure-tls不安全)

2)配置,如下红框中说明,添加了“–Kubelet-insecure-tls”这个配置,就不会去验证Kubelets提供的服务证书的CA。

修改tls校验:

......
      containers:
      - args:
        ...
        - --kubelet-insecure-tls
......

然后重新apply,查看pod成功启动,并通过kubectl top验证能否访问metrics接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/826039.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号