Metrics Server

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

环境信息

# kubectl versionClient Version: version.Info{Major:"1", Minor:"18+", GitVersion:"v1.18.8-eks-7c9bda", GitCommit:"7c9bda52c425d0d56d7b93f1377a826b4132c05c", GitTreeState:"clean", BuildDate:"2020-08-28T23:07:29Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}Server Version: version.Info{Major:"1", Minor:"18+", GitVersion:"v1.18.9-eks-d1db3c", GitCommit:"d1db3c46e55f95d6a7d3e5578689371318f95ff9", GitTreeState:"clean", BuildDate:"2020-10-20T22:18:07Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}# kubespere 版本信息v3.0.0# docker --versionDocker version 19.03.13-ce, build 4484c46# cat /etc/system-releaseAmazon Linux release 2 (Karoo)

报错现象

当我使用kubectl get pod -n kube-system查看pod时,发现metrics-server-5b65cbf5bb-xnzvg这个pod一直在处于来回重启状态。

以下是排错过程:

# kubectl logs metrics-server-5b65cbf5bb-xnzvg -n kube-systemE0324 09:28:34.486005       1 manager.go:111] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:ip-10-34-133-45.eu-west-1.compute.internal: unable to fetch metrics from Kubelet ip-10-34-133-45.eu-west-1.compute.internal (ip-10-34-133-45.eu-west-1.compute.internal): Get https://ip-10-34-133-45.eu-west-1.compute.internal:10250/stats/summary?only_cpu_and_memory=true: dial tcp: lookup ip-10-34-133-45.eu-west-1.compute.internal on 10.34.133.2:53: no such host]

我们可以发现 Pod 中出现了一些错误信息:xxx: no such host,我们看到这个错误信息一般就可以确定是 DNS 解析不了造成的,我们可以看到 metrics-server 会通过 kubelet 的 10250 端口获取信息,使用的是 hostname。

我们查看下metrics-server的deployment文件发现,Pod 内部是可以获取这个 hosts 信息,如下:

 command:            - /metrics-server            - '--cert-dir=/tmp'            - '--logtostderr'            - '--secure-port=8443'            - '--cert-dir=/tmp'            - '--logtostderr'            - '--secure-port=8443'            - '--kubelet-insecure-tls'            - >-              --kubelet-preferred-address-types=Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP

那么现在可以排除这个原因了,由于我们使用的是AWS公有云EKS部署的k8s和kubesphere,很有可能是VPC网络DNS主机名的问题。参考EFS挂载失败官网说明

在kubesphere控制台重新部署metrics-server Deployment即可正常!

参考文档

  • Metrics Server 安装
©著作权归作者所有:来自51CTO博客作者品鉴初心的原创作品,如需转载,请注明出处,否则将追究法律责任

如果文章对你有帮助,请赞赏

赞赏

0人进行了赞赏支持

更多相关文章

  1. 对接海康AI Cloud智能应用平台
  2. docker es7.6 集群
  3. CDH kerberos web界面 freeipa
  4. ERROR 1047 (08S01)
  5. ERROR 1180 (HY000) at line
  6. CDH 启用kerberos
  7. ASA的Twice NAT解决内网无法访问映射后的公网地址
  8. always on 清理日志记录
  9. docker 安装脚本

随机推荐

  1. Android 目录
  2. Android 性能优化实例
  3. Android Handler机制7之消息发送
  4. 当GridView中的一项被点中的时候显示的背
  5. Android Handler机制6之MessageQueue简介
  6. Android Handler机制10之Native的实现
  7. Android 编译系统
  8. android HAL知识
  9. android的图片添加、滚动条、单选框、多
  10. 最全的Android单元测试教程