说明
- Metrics Server
是实现了 Metrics API 的元件,其目标是取代 Heapster 作位 Pod 与 Node 提供资源的 Usage metrics,该元件会从每个 Kubernetes 节点上的 Kubelet 所公开的 Summary API 中收集 Metrics - Horizontal Pod Autoscaler(HPA)控制器用于实现基于CPU使用率进行自动Pod伸缩的功能。
- HPA控制器基于Master的kube-controller-manager服务启动参数–horizontal-pod-autoscaler-sync-period定义是时长(默认30秒),周期性监控目标Pod的CPU使用率,并在满足条件时对ReplicationController或deployment中的Pod副本数进行调整,以符合用户定义的平均Pod CPU使用率。
- 在新版本的kubernetes中 Pod CPU使用率不在来源于heapster,而是来自于metrics-server
- 官网原话是 The –horizontal-pod-autoscaler-use-rest-clients is true or unset. Setting this to false switches to Heapster-based autoscaling, which is deprecated.
准备工作
kube-apiserver运行参数
metric-server是扩展的apiserver,依赖于kube-aggregator,因此需要在apiserver中开启相关参数
1 | --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem |
metrics-server版本兼容
Metrics Server | Metrics API group/version | Supported Kubernetes version |
---|---|---|
0.3.x | metrics.k8s.io/v1beta1 | 1.8+ |
0.2.x | metrics.k8s.io/v1beta1 | 1.8+ |
0.1.x | metrics/v1alpha1 | 1.7 |
metrics-server部署
创建工作目录
1 | mkdir -p /home/k8s/ |
下载项目代码
1 | wget -O - https://github.com/kubernetes-incubator/metrics-server/archive/v0.3.1.tar.gz | tar xz --directory=/home/k8s/ |
修改deployment
文件路径/home/k8s/metrics-server-v0.3.1/deploy/1.8+/metrics-server-deployment.yaml
1 | containers: |
部署metrics-server
1 | kubectl apply -f /home/k8s/metrics-server-v0.3.1/deploy/1.8+/ |
查看pod状态
1 | kubectl -n kube-system get pod -l k8s-app=metrics-server |
验证metrics
完成后,等待一段时间(约 30s - 1m)收集 Metrics
- 请求metrics api的结果
1 | kubectl get --raw /apis/metrics.k8s.io/v1beta1 |
示例输出
1 | { |
- 获取节点性能数据
1 | kubectl top node |
输出示例
1 | NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% |
- 获取Pod性能数据
1 | kubectl -n kube-system top pod |
输出示例
1 | NAME CPU(cores) MEMORY(bytes) |