前言
初次使用hpa 的时候发现始终无法使用起来,在网上查了半天发现是需要安装Metrics Server的php-apache Deployment/php-apache <unknown>/50% 1 10 1 61s
下面是我对照着参考链接部署过程,相对比较顺利,写这篇文章用于做笔记
参考
https://blog.csdn.net/nklinsirui/article/details/109413053
一、Metrics Server是什么?
kubernetes 集群资源监控之前可以通过 heapster 来获取数据,在 1.11 开始开始逐渐废弃 heapster 了,采用 metrics-server 来代替,metrics-server 是集群的核心监控数据的聚合器,它从 kubelet 公开的 Summary API 中采集指标信息,metrics-server 是扩展的 APIServer,依赖于kube-aggregator,因为我们需要在 APIServer 中开启相关参数。
二、安装
1、下载Metrics Server的Manifest文件:
https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml
2、修改components.yaml
- 修改Deployment镜像,并在.spec.template.spec.containers.args 下添加:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
具体配置如下
containers:
- name: metrics-server
image: registry.cn-shenzhen.aliyuncs.com/cookcodeblog/metrics-server:v0.3.7 # k8s.gcr.io/metrics-server/metrics-server:v0.3.7
imagePullPolicy: IfNotPresent
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls # 跳过kubelet CA 证书验证
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname #连接到Kubelet时要考虑Kubelet节点地址类型。
3、安装Metrics Server
kubectl apply -f components.yaml
##查看服务是否正常运行
[root@k8s-master1 hpa]# kubectl get deployment metrics-server -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
metrics-server 1/1 1 1 23m
[root@k8s-master1 hpa]# kubectl get pods -n kube-system -l k8s-app=metrics-server
NAME READY STATUS RESTARTS AGE
metrics-server-5c88d6f497-jqkr4 1/1 Running 0 23m
等待几分钟后,验证是否可以从Metrics Server查询到资源使用情况:
kubectl top nodes
kubectl top pods -A
如果出现“error: metrics not available yet”,则等待几分钟后再尝试。如果一直报错,需要先检查网络组件是否正常工作,再检查Metrics Server的日志。